May I ask generic BSD questions, too, or the forums are for FreeBSD support only?

By reading this forum's rules, it seems that the main goal of the FreeBSD forum is to answer questions about the FreeBSD distribution, and it is stated that other BSD flavors or other software is not supported, which is totally understandable.

I am using FreeBSD, indeed, as a home desktop for about 5 consecutive weeks now, but I'm a first timer in the BSD world, so most of my questions right now are more about BSD in general, than about FreeBSD in particular.

Before FreeBSD I used various Linux flavors for a few years now, anything from Debian to Arch or Gentoo, but mostly Kubuntu, before that Windows, before that Sinclair ZX/Spectrum, and before that CP/M. I was never a sysadmin and have no formal training in computer science, coming from the hardware world, yet the software world was always close to my activity, too.

For FreeBSD, I am reading now "The Complete Guide to FreeBSD" by Michael W. Lucas, and sometimes I have generic BSD questions about how it works, or how something is done in BSD by comparison to how the same thing is done in Linux.

1. - Would the FreeBSD forums be the right place to ask about how things works in BSD in general, and not only what command to type in order to achieve y in FreeBSD?
2. - If not, can anybody point me to a better place for BSD questions, please?
3. - Other recommended resources I should read/know for generic BSD learning?
 
It's clearly stated in the rules.

We will not allow technical/support questions about any operating system other than FreeBSD anywhere on this forum. That includes the Off-Topic forum. Always ask technical/support questions about other operating systems on the forums or mailing lists associated with those operating systems.

FreeBSD Forums Rules

That said, there is a bit of a "grey" area, when you're dealing with interoperability for example (communication or data transfers to/from some other OS, portability of scripts or code, etc). But then we're still talking about an issue that involves FreeBSD and that would be the primary focus.

Other recommended resources I should read/know for generic BSD learning?
Just go for it. Reading about things is one thing, actually working with other systems is quite another. Knowing the theory is good but nothing beats actual experience trying to implement that theory in practice.
 
Keep in mind, despite having the same ancestor, by now FreeBSD, NetBSD and OpenBSD are about as similar to each other as they are to Linux. The only thing you can expect to be compatible is the license.
 
That said, there is a bit of a "grey" area, when you're dealing with interoperability for example (communication or data transfers to/from some other OS, portability of scripts or code, etc). But then we're still talking about an issue that involves FreeBSD and that would be the primary focus.
I'd like to add that stuff like virtualization makes the area even murkier. The Handbook has a whole chapter (#22) devoted to it.
--
Having said that, I'd like to say that the Forums have been surprisingly useful for me. Sometimes, I'd find useful info on the Internet (i.e., about /bin/sh scripting), but most of it is Linux-focused. So, I have to massage that info to fit it to a FreeBSD scenario. And that's kind of natural - after all, I'm trying to get stuff going on a FreeBSD machine. :)
 
Just frame your "generic" BSD question as a FreeBSD specific one. If the question is truly generic to "BSD" then it won't matter if you asked how FreeBSD implemented something opposed to how a some other BSD implements it. If you actually care about the differences between specific things, ask the same question in the same way somewhere else (linked above).

If you want to compare to Linux: "I am used to doing X for Y in Linux, how do I do Y in FreeBSD?"
 
the FreeBSD distribution
FreeBSD is a complete OS, rather than a "distribution" in the Linux sense.

so most of my questions right now are more about BSD in general, than about FreeBSD in particular.
You may find that as you're using FreeBSD, your questions are actually specific to that. Other 'BSD's do things very differently.

It's a common fallacy for people who migrate from Linux to think that "BSD" is some kind of base OS or kernel and that "Free", "Net", "Open", etc are some kind of analogue to Linux distributions. This is not the case.
 
FreeBSD is a complete OS, rather than a "distribution" in the Linux sense.


You may find that as you're using FreeBSD, your questions are actually specific to that. Other 'BSD's do things very differently.

It's a common fallacy for people who migrate from Linux to think that "BSD" is some kind of base OS or kernel and that "Free", "Net", "Open", etc are some kind of analogue to Linux distributions. This is not the case.
After nearly 5 years of actively using FreeBSD, I have to disagree. FreeBSD has a kernel that manages things very differently from other BSD's and Linux. It also has userland "base" utilities that are generally POSIX-compliant (think /bin/ls, /bin/pwd, etc.) Together, kernel and base utilities make the complete OS.
--
As I studied the ports tree, I realized that FreeBSD is not that different from Linux distros - it's got its own git repo for the ports tree, a package-making infrastructure, and a LOT more. The way I see it, what sets FreeBSD apart from Linux is frankly the consistency of its design. For example, /etc/rc.conf has been around for at least as long as I can remember (And I started working with FreeBSD at 6.0-RELEASE), while Linux distros are still duking it out with SystemD vs OpenRC. OpenBSD famously focuses on security (at the expense of lagging behind FreeBSD on account of up-to-date KDE, for example), while NetBSD famously focuses on being able to run anywhere (FreeBSD 13-RELEASE supports 14 platforms, NetBSD supports 57 platforms, and calls them ports).
--
UNIX is not a religion, but every project has its own aims, organization, and terminology. There's plenty of disagreements over choice of components (ZFS vs BTRFS vs EXT2FS vs ReiserFS vs whatever else, for example), and that invites dependency hell. FreeBSD has its share of that, but I learned to deal with it, partially with help of these forums. So, good luck! :)
 
There are plenty of areas where all three common *BSDs work the same. For example (brought on by a recent thread) how to use make, because Berkeley make is quite different from Gnu make. Other things (For example how to configure hostname and IP addresses) have minor differences between *BSDs, and significant differences to various Linux flavors. I think on those types of questions, asking on this forum would be reasonable.

In other areas (like virtualization, brought up above, or file systems/RAID), the differences between *BSDs are significant.
 
I might be using wrong some words with very precise meaning that I am not aware of, like "distro" instead of "type" or "class", or maybe I should have asked about learning UNIX instead of BSD.

I've read that BSD takes care of everything including programs that are not part of the OS, I've also found last week an obscure and new library (about an year old) that was made for Linux.

I don't know how a some code from, let's say github, arrive in Linux or in a BSD. This library is called liblxi, it was written about an year ago, and the dev told me he know somebody from RedHat that can make liblxi to go upstream, so to become available in any Linux repository.

The surprise was that last week when I've tried with no hope a pkg install liblxi in FreeBSD, the liblxi.so has installed and it's working OK. LXI is some LAN protocol for lab instruments, only very few need it, and because it is very new, even less people know about it.

I suspect there might be some automation that pulls from RedHat repos to FreeBSD. Is it so, or somebody took special care to copy this lib into FreeBSD? Asking just out of curiosity.

-----------------

About being here to learn UNIX or BSD, I'll better tell what I need at this moment:

- my typical FreeBSD usage is as a daily home desktop + PC for my electronics lab at home
- found already most of the programs I need, except VirtualBox, which only works partially on FreeBSD (without USB2.0, only has USB1.0, a component called PUEL - written by Oracle - is made only for Windows, Linux, Mac and Solaris)
- I already have many VMs created with VirtualBox, VMs that are needed for my electronics tinkering at home
- at this point I still don't want to go back to Linux, so I'm ready to try workarounds and alternatives to VirtualBox, so to run the existing VMs under FreeBSD, and with a working USB2.0

- I don't know how yet, or what workaround would work, but I've heard BSD-like OSs have jails, or can run Linux binaries, or use other types of virtualisations specific to BSD, so I need to learn and understand how such things work in BSD before asking more specific FreeBSD questions. That is why the question from the title.

I'll open separate topics for each subject, but I want to parse the FreeBSD docs first.
 
FreeBSD has VirtualBox available, easy. The project refers to it as 'port' or 'package'. You can do pkg install emulators/virtualbox-ose, which will install a pre-compiled program for you. If you want to just compile it yourself, and install it properly, that's easier to do on FreeBSD than say, on Linux. Recent versions of the emulators/virtualbox-ose are easy enough to use under FreeBSD. From personal experience, I can say that VirtualBox runs the same under FreeBSD as under Windows. Compiling, installing, and starting it - that's a different bowl of fish altogether.

I would strongly recommend reading the FreeBSD Handbook. It contains loads of useful info, and on these forums, we like to point to it when we help people. There's nothing wrong with reading a physical book about FreeBSD, and enjoying it, but for up-to-date information - the Handbook is considered the gold standard around here.
 
... or maybe I should have asked about learning UNIX instead of BSD.
While everyone seems to think that they know what "Unix" is, it's actually very hard to find an exact definition.

It used to be that Unix was a trademark, and a set of code that was written by Dennis and Ken at Bell Labs to form an OS. Well, the trademark/copyright/patent/IP/... story got terribly complicated, and there was a long series of lawsuits, and at this point I don't even remember who owns the copyright to the term "Unix". The code that was written back then fundamentally is not running any longer: neither of the three largest Unix flavors (Linux, MacOS and *BSD) contain any Bell Labs / AT&T encumbered source code. There is probably still Bell Labs copyrights on code that is today part of Solaris, AIX and HP-UX, but those operating systems are fundamentally no longer sold, and only used in legacy environments.

Another definition of "Unix" is: All machines that pass the Posix or SUS (single Unix specification) conformance tests. That includes all the things one commonly calls Unix (Linux/MacOS/*BSD), but it also includes Windows NT and the IBM mainframe operating system zOS.

I think the only sensible definition of Unix is: Those systems commonly called Unix, which is Linux, MacOS, the BSDs, a small number of strange clones and experimental systems (Minix, Mach, seL4, Plan9 ...), and the few surviving commercial real Unixes (AIX/Solaris/HP-UX/...).

I've read that BSD takes care of everything including programs that are not part of the OS, ...
Sort of half true.

Linux is a kernel. Nothing else. You can't even make use of a system that consists purely of Linux. To get a functioning system, you need userland stuff, for example init(1) (the process that starts all other processes, for example the thing that allows one to log in), utility commands (like ls and rm), system administration stuff (like setting the IP address), programming tools (awk, python, compilers, linkers, libraries), and graphics/windowing stuff. Those things are added by distributions. Today, there are a few big ones (RedHat = Fedora, Ubuntu, Debian, ...), and lots of minor and clone ones. Typically, Linux distributions integrate the graphical UI right into the distribution.

The second biggest Unix is a special case: You can only get MacOS by buying the Mac hardware, it will only run on that. MacOS comes with all of the free software completely integrated. Yes, it includes programming environments (which is a separate download), and it makes a perfectly fine Unix development machine. But there is no choice or distribution there, everything is pre-cooked.

The *BSDs are more of a complete OS: They typically come with kernel and most of the basic command-line userland integrated. If you install FreeBSD, you get init(1), ls, rm, awk, cc, ld and all that in the main install, and it is not easily replaceable. There is also a system to install third-party packages. One thing that is different from Linux: In FreeBSD, the GUI (things like Xwindows, Gnome, KDE, ...) is not part of the OS, you just download it as a third-party package (slightly customized for FreeBSD) and install it. It is not tightly integrated, like in Linux distributions.

I've also found last week an obscure and new library (about an year old) that was made for Linux.
I don't know how a some code from, let's say github, arrive in Linux or in a BSD.
Most of the time, free software is written for Linux. That makes sense, since Linux has about 99% market share. How does it get to the Linux machine? There are two paths. One is that the Linux distribution (like Debian or RedHat) makes a copy of the software, and pre-packages it, and then you can use their package install/management tool (like yum or apt or rpm) to install it. Or you download the source, and do the install yourself (which is usually trivial, just cd into the source code, say "make install", done).

Sometimes, software designed for Linux can just be downloaded onto FreeBSD and installed there, from source. Most of the time, it requires some adjustment.That's where FreeBSD's package/port system comes in: You download the source for a "port" (which is a piece of source code, with whatever tweaks are required to make it work on FreeBSD), then compile and install it. If you are lazy (like me), you instead use the pkg system and get it pre-compiled.

I suspect there might be some automation that pulls from RedHat repos to FreeBSD. Is it so, or somebody took special care to copy this lib into FreeBSD? Asking just out of curiosity.
All done by volunteers.

I don't know how yet, or what workaround would work, but I've heard BSD-like OSs have jails, or can run Linux binaries, or use other types of virtualisations specific to BSD, so I need to learn and understand how such things work in BSD before asking more specific FreeBSD questions. That is why the question from the title.
Those are all very good and relevant questions for this forum: "On the other OS, I know how to make purple elephants fly. How do I do this on FreeBSD"? That's a very sensible and legitimate question. Where it gets ugly if people start posting things like "I hate FreeBSD, because purple elephants don't fly by default", or "why is the command on FreeBSD spelled elephant, and on Linux it is elefant, I want the version with the F." Those kinds of questions tend to get people upset.

I'll open separate topics for each subject, but I want to parse the FreeBSD docs first.
One word: HANDBOOK.
 
RoGeorge have you tried ...

sh:
$ sudo pkg install meson
$ git clone https://github.com/lxi-tools/liblxi.git
$ cd liblxi
$ meson build && cd build
$ meson compile
$ meson test
$ sudo DESTDIR=/usr/local/lib meson install -C build

I don't normally work with meson so there are likely some errors but that should fit the general flow to build and install from source.

If the git repo works unchanged, let the project owner(s) know. If you get liblxi working after a few changes, submit a PR to the project owner.

If you have more questions about gettting liblxi to work on FreeBSD, start a new topic under Porting New Software.
 
The second biggest Unix is a special case: You can only get MacOS by buying the Mac hardware, it will only run on that. MacOS comes with all of the free software completely integrated. Yes, it includes programming environments (which is a separate download), and it makes a perfectly fine Unix development machine. But there is no choice or distribution there, everything is pre-cooked.

The *BSDs are more of a complete OS: They typically come with kernel and most of the basic command-line userland integrated. If you install FreeBSD, you get init(1), ls, rm, awk, cc, ld and all that in the main install, and it is not easily replaceable. There is also a system to install third-party packages. One thing that is different from Linux: In FreeBSD, the GUI (things like Xwindows, Gnome, KDE, ...) is not part of the OS, you just download it as a third-party package (slightly customized for FreeBSD) and install it. It is not tightly integrated, like in Linux distributions.
Sorry, but I gotta quibble:
To start, MacOS works fine in VirtualBox. Yes, it has a UNIX-like shell (but you have to know how to find the Terminal app). My gripe against MacOS is well-described in one of your essays, ralphbsz : it's like a truck that has a 25-hp engine. You can swap out nearly anything, except for the engine, just because Tim Cook says so.

And, while Linux is just the kernel (it makes use of GNU userland, while FreeBSD has its own, albeit very similar in functionality), it makes use of other projects like Xorg, GNOME and KDE in the exact same manner as FreeBSD. FreeBSD simply does not prioritize GUI theming to the extent that Linux distros do.

Third, we're kind of dumping a lot of info on someone who is barely a couple months into an adventure with FreeBSD. Yeah, we all think FreeBSD is awesome, and can point to our pet reasons why we think that. In this corner of the Internet, that's kind of to be expected. ? But, we also gotta consider the audience.
 
Just to add a bit of clarity: FreeBSD is both, an operating system and a distribution.

The operating system is what's called "base". It includes the kernel, of course, but also a complete userland (aiming at POSIX-compliance) and is developed in a single source repository. That's a major difference to Linux: You don't need any "distribution" to use FreeBSD.

The distribution is in the "ports" tree. This tree enables building and packaging tons of third-party software for FreeBSD. It is used to populate the official package repositories, so it's quite similar in purpose to what Linux distributions do, just for FreeBSD.
 
all the major bsds are like this (free,net,open,dragonfly)
all have their own kernel and userland, and third party software (packages) and some way to build those 3rd party stuff from source
yet like EVERY OTHER os they suck
and the modern one

Oracle VM sucks and your license requires you to like it. lol
/s
 
FreeBSD has VirtualBox available, easy.
It was easy, but as I was saying, I need it with USB2.0 support, and couldn't find any way to make that work.

I've read the pointed docs, thank you all for your kind guidance, and I still don't know how to solve that. Also opened another thread for vbox machines in FreeBSD, apparently waiting for moderation, I hope the link will stay the same after moderation:

 
Back
Top