Copyright (c) Juraj Sipos
BSD MagazineBSD family of Unix systems is based upon the source code of real Unix developed in AT&T Bell Labs. In 1970's, it was licensed to universities for a small fee, as AT&T outsourced thus its development wishing to get the patched code back. The code has a long history. CSRG - Computer Science Research Group at the University of Berkeley - dedicated to its development and coordination - thus, the name of the family of Unix systems called BSD - "Berkeley Software Distribution" - came on the scene. The contemporary BSD systems stand on the source code that was released at the beginning of 1990's (Net/2 Lite and 386/BSD release), but with legendary history and extensive development behind it.
BSD is behind the philosophy of TCP/IP networking, which gave birth to the Internet. It is a developed Unix system with advanced features. Except for proprietary BSD/OS, the development of which was discontinued, there are currently four famous noncommercial BSD systems available: FreeBSD, NetBSD, OpenBSD and DragonFly BSD. Mac OS X, which is derived from FreeBSD, is a commercial system. There are also various modifications of these, like PC-BSD - a FreeBSD system without any modifications except for a few changes and add-on scripts. PC-BSD, for example, has more graphical features than FreeBSD, but there are no substantial differences between these two. PC-BSD cannot breathe without FreeBSD; FreeBSD or OpenBSD are independent of one another.
There is not such a thing as a BSD system. However, there are myths. And many. I will just mention one of them: A guy in a BSD forum once said that Linux packages intended for one Linux distribution cannot be always easily installed in other Linux distros, which is the same complication as with OpenBSD packages, for example, which you cannot install in FreeBSD, and that it is thus unfair to compare Linux and BSD systems by criticizing bad installability of Linux packages in a Linux these packages are not intended for. End of the myth.
The word BSD is the abbreviation of Berkeley Software Distribution
and presently this term only identifies the family of operating
systems with common history, the same way of handling particular
tasks (like compilation of a kernel), or the same terminology like,
for example, the "base system", which is an installable BSD-style
OS with its kernel and system utilities such as ifconfig, mount,
chmod
, etc., but without packages (like AbiWord, MPlayer, etc.).
There is not such a thing as a sole (one) BSD system.
Unlike Linux (Slackware, Ubuntu, Debian, RedHat, etc.), FreeBSD, NetBSD, and OpenBSD differ in their base system more manifestly - whether it is the kernel or the system commands, these OS's use different source codes; in addition, some commands used for the same task are named differently, or they exist in one system only (the sysinstall
command in FreeBSD, for example), or have the same name but offer a little different options. We can say the same thing if we juxtapose NetBSD and BSD/OS. Anyone can say with certainty that OpenBSD is not FreeBSD and that Ubuntu, Slackware, or SuSE is Linux.
A sole member of the BSD family is OpenBSD, FreeBSD, NetBSD - not Free BSD (although such a naming convention is occasionally [but incorrectly] used). A name of a Linux distribution is always written separately (Slackware Linux, Debian Linux, etc.). Linux is kernel and Ubuntu (or Mandriva, etc.) Linux is the add-on sitting on top of the Linux kernel.
The above-mentioned terminological convention mirrors the fact
that Linux - the kernel - is always ONE,
which means that in its environment you will always use the same
system commands - for example, modprobe
to load modules
into the kernel. In FreeBSD, you will use kldload
and
in OpenBSD modload
- both commands, unlike modprobe
,
have a different source code. There is less compatibility between
OpenBSD and FreeBSD (and between NetBSD and BSD/OS, etc.) than between
Slackware and Ubuntu Linux. - of course, it is not the compatibility
between the kernel of Slackware Linux and Ubuntu Linux in question,
but the compatibility between these Linuces kernel's
add-ons.
OpenBSD, FreeBSD, or NetBSD are as separate islands - each with its own beach and climate. The common feature of the BSD family of operating systems, for example, is its organization, which is tight and which results in an excellent code.
We can also say that BSD is a philosophy. It has the so-called "core system" (or "base system" - without packages). The core system consists of basic utilities (like ssh, fdisk, various commands like chmod or sysctl, manual pages, etc.) and anything beyond it is strictly seen as an add-on. Linux (not only the kernel, of course) is not a philosophy in terms of how the system should look like or how it should behave. The philosophy behind Linux pertains mostly to licensing (GPL) and freedom for users, but not to the idea to keep, for example, the system in three versions - STABLE, CURRENT (developmental) and RELEASE (normal use). Linux is usually packaged as the whole system where the difference between the "core system" (KERNEL) and additional packages is not seen. This gives room for a myth like that Linux is not the kernel only, which, unfortunately, many people believe.
On BSD systems, all add-on packages are strictly installed into the /usr/local directory (except for PKGSRC used in NetBSD and DragonFly BSD; with PKGSRC, users install packages into /usr/pkg), documents off the base system into /usr/local/share/docs/application_name; themes and other things into /usr/local/share/application_name; binaries to /usr/local/bin directory. By application_name we mean a program's name, so if you install IceWM, for example, its binary will be here: /usr/local/bin/icewm. With Linux, on the other hand, all applications get mostly (because there are a few differences between Linuces) installed into the /usr/bin directory. You see that BSD systems use directories differently.
A common feature of the BSD history and philosophy are "ports",
which are fingerprints of applications in the /usr/ports directory;
a user may "cd" there and execute the make
command,
which will download, via a directive contained in such a fingerprint's
code, the application's source code and the system will compile
it as well. Generally (contrary to Linux), all
source codes always compile like a breeze.
BSD systems have also their stable versions. With FreeBSD, for example, you have FreeBSD-RELEASE (a version that can be used normally), FreeBSD-STABLE (system more profoundly audited for bugs and security holes), and the CURRENT version (in development), which is not stable and not recommended for a regular use. Some Linux distributions started to imitate this philosophy, but with BSD systems this way of making distributions is a rule.
Of course, the kernel is absolutely different.
BSD code has FFS/UFS file system; it is the only file system on BSD's (with a few exceptions like ZFS now supported in FreeBSD) contrary to Linux, where you can use dozens of file systems like ext2, ext3, ReiserFS, XFS, etc. With Linux you fall into the "file system chaos".
BSD systems divide their partitions internally. This means that after installing a BSD system to a hard disk, programs like fdisk, Partition Magic, Norton Ghost and many others will not see this internal division of a BSD (FFS/UFS) disk; thus, repartitioning of a disk is not such a pain when administrators require a rigorous partitioning (for /home, /tmp, /var, /etc directories). As a consequence, the naming convention also differs a little: a disk - /dev/ad0s3b in FreeBSD indicates that you deal with "slice 3" ("s3"), which is the equivalent of Linux /dev/hda3; the internal "partition" has the name of a letter: "a", "b", "e", etc. ("b" is a swap partition).
From a philosophical point of view - if you read this article - you will understand that part of the Linux World is communism and that not even the smallest part of a BSD-licensed software can be attributed to communism.
Albeit users like to use the term "Linux" for any Linux distro including its packages (Red Hat Linux, Mandrake Linux, etc.), for IT professionals Linux is only the kernel. Linux started in 1991, when its author, Linus Torvalds, began his work on a free replacement of Minix. Developers of quite a few Linux system utilities used the source code from BSD, as both these systems slithered to daily life parallelly in about the same time (1992-1993) as Open Source. At the time (early 1990's), the difference between Linux and BSD, if we compare both systems from the aspect of height, was like between a mouse and an elephant.
Today, there are a few, if not many developers of their own kernels/operating systems (FreeDOS, Agnix, ReactOS, Inferno, etc.), but these guys simply missed the right train at the right hour. They do not have any lesser programming power than the author of Linux (Linus), but the public opinion centered on Linux because many large commercial companies had started supporting it. Linus built his fame, too, on the back of many better developers and he went on board at the right time. The right time is often the Lucky Star for many other famous people.
On the picture you see BSD Socket API for Windows in Windows 98 (Winsock.dll). You see it because BSD has a different license - its code can be freely taken, changed and sold by anybody. Apple thus acquired parts of FreeBSD and made Mac OS X from it. However, they also maintain a free platform - Darwin.
SONaFR - OpenBSD Single Floppy Router
1FCD Linux or 1FCD BSD - One Floppy MP3 (FreeBSD) and Audio CD (Linux) mini distros
KarmaBSD or 1FCD-OPBSD-1.0 - One Floppy OpenBSD MP3 Player
The above systems are all available in one multiboot ISO image, which can be downloaded here (I thank www.rootbsd.net for giving me some space on their servers).
After the BSD code was released (as Open Source) in the early 1990's, the first development team started the NetBSD project at the beginning of 1993. BSD/OS, too, was available, but it had commercial goals. FreeBSD was the second in order. Programmers around the released BSD code had many goals. Different ideas and goals also resulted in a revolt of the most crucial developer of NetBSD - Theo de Raadt, who started the OpenBSD project in 1995. The difference (basic) between the three now most well-known BSD platforms is as follows:
Yes. You may use Wine, Qemu, Bochs, older versions of VMware, VirtualBox, and maybe other few things I forgot to mention.
If you are not very Unix friendly, you may try a very nice Wine front-end for FreeBSD - Bordeaux, which runs very well. Wine is its dependency and with Bordeuax your work with Wine will get easier. Winetools, unfortunately, is no longer maintained. But in FreeBSD you may use q4wine (in KDE). Bordeaux has custom dll's and is better than any other Wine front-end. On the other hand, CrossOver Office (Linux) is not a front-end - but a modified (commercial) Wine with its own front-end. Bordeuax sits on top of Wine.
FreeBSD runs Windows applications better than OpenBSD and almost equally well as Linux. This does not mean that OpenBSD is worse. It would be just another myth. In the BSD world, Wine is a port and its quality depends on the team that maintains this port (that is, its functionality in OpenBSD). The advantage of Bordeaux is that it does not conflict with Wine - you will have a .bordeaux directory in your user account (the .wine directory will be unaffected).
Bordeaux is a commercial application, but 20 dollars is worth the time you may otherwise spend in the labyrinth of Internet forums. Here we see the edge where Wine has problems - it is hard for beginners (in terms of configuring it), thus a migration from the Windows platform to Open Source software is harder. I wrote an article about Bordeaux and you may read it here.
Tom Wickline, a wonderful guy behind the Bordeaux Project, also wrote a documentation for running unsupported applications in CrossOver Office and he also owns this website: http://www.wine-reviews.net/
He gave me an excellent support, replied to all my emails and
allowed me to test Bordeaux for my purpose of writing an article
about it. Bordeaux is also available for Linux, but both packages
run without much difference from the user's aspect. Bordeaux
is GNOME friendly (written in GTK). If you use other environments, you may
always run the binary setup: bordeaux-setup
from /opt/bordeaux/bin
The picture of Bordeaux bellow is self-explaining.
SONaFR - OpenBSD Single Floppy Router
1FCD Linux or 1FCD BSD - One Floppy MP3 (FreeBSD) and Audio CD (Linux) mini distros
KarmaBSD or 1FCD-OPBSD-1.0 - One Floppy OpenBSD MP3 Player
My one floppy projects are all available in one multiboot ISO image, which can be downloaded here (I thank www.rootbsd.net for giving me space on their servers).
NetBoz and ClosedBSD are now dead projects.
MaheshaBSD is my Live CD project that can be easily put on a USB stick.
DragonFly is a continuation of FreeBSD 4.x.
WarBSD is a FreeBSD 5.x system focused on wireless network audit. It is inspired by WarLinux and is available for download as ISO and source.
mfsBSD is a set of scripts that will generate a bootable image (or ISO file).
PicoBSD is a diskette distro with more versions (router, dial-up) and it can also be used as a demo diskette to show the power of FreeBSD. Since this project is very old and has not been updated for a long time, it was removed from the documentation project of FreeBSD; however, you will probably find this software somewhere.The WiFiBSD system, as the name indicates, is focused on WiFi (wireless) technology.
Eclipse/BSD was developed by Information Sciences Research Center in Bell-Labs, Lucent Technologies. The current version is based on FreeBSD 3.4 and is compatible with FreeBSD. It is actually a kernel patch.
Frenzy is a LiveCD FreeBSD from Ukraine. It has Midnight Commander and X Window System. Frenzy is "a portable system administrator toolkit" - a LiveCD based on FreeBSD. It generally contains software for hardware tests, file system and security checking, and network setup and analysis. It is the system focused on Russian-speaking users.
MirBSD started in 2002 when Theo De Raadt, the founder of OpenBSD, refused the loved/hated ones in his community - Thorsten Glaser was one of them and he started his own project, a kind of a "slimmer OpenBSD". I think most rebels have much to say to this world.
PC-BSD is a tweaked FreeBSD with graphical installation wizard; its goal is to be one of the easiest BSD's to install - with main idea to make software installation in FreeBSD a snap! It has its own package management system; its own FAQ; a FreeBSD version of GRUB (boot manager); its packages have a suffix *.pbi
DesktopBSD is a little older than PC-BSD and these two are not a copy of each other. However, now (in the year 2012) DesktopBSD is a dead project.
FreeSBIE is a downloadable LiveCD FreeBSD that boots directly off CD/DVD without touching your hard drive.
m0n0wall is a project aimed at creating a complete -
embedded firewall software package which, when used together
with an embedded PC, provides all the important features of
commercial firewall boxes at a fraction of the price. m0n0wall
is based on a bare-bones version of FreeBSD,
along with a web server, PHP, and a few other
things. The entire system configuration is stored in a
single XML text file to keep things transparent.
FreeBSD
LiveCD with ISO Image and Generation Tool Set is
a LiveCD Tool Set the main goal of which is to allow
anyone to generate their own custom FreeBSD Live CD's. FreeBSD
LiveCD was born as a Brazilian FreeBSD User Group's (http://www.fugspbr.org)
internal project. The main goal was to create a tool that
would allow a safe diagnostic method under emergency environments,
especially as a rescue disk in the environment of which FreeBSD
partitions could be accessed (mounted) externally, not from
the hard drive.
pfSense
is an open source firewall project derived from m0n0wall
with radically different goals such
as using Packet Filter, FreeBSD 6.X, ALTQ for excellent packet
queuing, and finally an integrated package management system
for extending the environment with new features.
Ging
is a Live CD system that you can burn onto a CD. It is actually
a derivative project of GNU/Debian Linux with FreeBSD kernel
- Debian
GNU/kFreeBSD (based on Debian/GNU and the FreeBSD kernel). Ging consists entirely of free software (as
per Debian Free Software Guidelines).
Anonym.OS is an OpenBSD distribution on a Live CD for anonymous and encrypted Internet access (based on TOR). The members of kaos.theory, who had developed this thing, introduced their first Live CD officially on the hackers Convention ShmooCon in January 2006.
CD Bootable OpenBSD Firewall offers a full featured OpenBSD firewall for download with instructions on how to make an OpenBSD Live CD.
Frozentech hosts many Live CD's and the site has one particular advantage to other sites in that respect that it also hosts BSD Live CD's.
A simple way to make a bootable CD/DVD/USB FreeBSD system (only for versions 7.x and lower).
If you wish to publish this, include source: www.freebsd.nfo.sk
I do not like such programmers who instead of a few lines of a code will provide you with books. The following tip is for those who are looking for a simple way to make a bootable FreeBSD CD/DVD/USB. Such a bootable FreeBSD system works the same way as any FreeBSD system you have on your hard drive - you may work in a GUI environment, have KDE running, you may watch youtube.com, surf the Internet, or write books in OpenOffice.org.
I expect that you will have a complete FreeBSD system installed on your hard drive (as you will make a copy of it onto your CD/DVD/USB). A good way to start with this is to create a separate directory like /usr/USB-or-CD.
The USB kernel can be made with this code in the KERNEL configuration file:
options ROOTDEVNAME=\"ufs:da0s1\"
No "da0s1a" is necessary, the kernel works with da0s1 - I tested this.
The CD/DVD needs this code in its kernel:
ROOTDEVNAME=\"cd9660:acd0\"'
Put the following lines just bellow these ones in you /etc/rc
###ORIGINAL LINES IN /ETC/RC
early_late_divider=NETWORKING
fi
fi
###END OF THE ORIGINAL LINES IN /ETC/RC
echo 'Unpacking TGZ files and putting them into memory filesystem'
mdmfs -M -s 50m md7 /tmp
chmod 777 /tmp
mdmfs -M -s 147m md6 /var
tar -xzpf /mfs/var.tgz -C /
mdmfs -M -s 4m md2 /etc
tar -xzpf /mfs/etc.tgz -C /
mdmfs -M -s 49m md3 /usr/home
tar -xzpf /mfs/home.tgz -C /
mdmfs -M -s 35m md4 /root
tar -xzpf /mfs/root.tgz -C /
mdmfs -M -s 40m md5 /usr/local/etc
tar -xzpf /mfs/etclocal.tgz -C /
# End of modification of /etc/rc
Edit /etc/fstab - put this line here for USB:
/dev/da0s1a / ufs ro 0 0
This line for CD/DVD:
/dev/cd01a / ufs ro 0 0
Nothing more in your /etc/rc file is necessary. Pack the above directories (with the whole path) and copy them into /usr/USB-or-CD/mfs. The only missing thing is a SWAP file, but you can make it (after booting from your freshly made CD/DVD/USB) in memory with this command:
#!/bin/sh
mdconfig -a -t swap -f /swap -s 90m
swapon -a /dev/md9
In your /usr/USB-or-CD/etc/rc script you need the above commands to make your FreeBSD smoothly boot off your CD/DVD or USB. The modified rc script will make memory (writable) file system in /var, /usr/local/etc, /home, /root, /tmp with files from /mfs directory on your CD/DVD/USB. The rc script will be read from CD/USB first (not from the /mfs directory).
On your USB stick or CD/DVD, keep the /dev directory empty.
A USB stick can be prepared this way:
If you see "Geom or Class not found", do not worry.
fdisk -BI /dev/da0
bsdlabel -B -w da0s1
newfs -U /dev/da0s1a
boot0cfg -v -B da0
mount /dev/da0s1a /mnt3
Then copy (but do not forget to install some nice programs before you go) all your FreeBSD directory hierarchy (except for the /boot directory) into the directory from which or where you plan to create your CD/DVD or USB. The ISO image can be made with mkisofs:
mkisofs -R -no-emul-boot -b /usr/USB-or-CD/boot/cdboot -o /tmp/bootable.iso /usr/USB-or-CD
You must not copy the 1) /boot directory from your hard drive (as you will have your own kernel) and 2) /etc/fstab and 2) /etc/rc. That's all.
I made my own FreeBSD USB distro this way - it is Adobe Flash and NTFS RW friendly.
That's all.
If you work with OpenBSD, writable directories can be made with this modification in your /USB-or-CD/etc/rc file:
mount_mfs -s 32768 -o async,nosuid,nodev,noatime swap /var
mount_mfs -s 4917 -o async,nosuid,nodev,noatime swap /etc
mount_mfs -s 12000 -o async,nosuid,nodev,noatime swap /tmp
mount_mfs -s 4917 -o async,nosuid,nodev,noatime swap /root
mount_mfs -s 12000 -o async,noatime swap /dev
mount_mfs -s 4917 -o async,nosuid,nodev,noatime swap /home
Then you can copy the content of /mfs into memory via this command in your rc file (OpenBSD):
tar -zxpf /mfs/var.tgz -C /
tar -zxpf /mfs/dev.tgz -C /
You only need to configure your keyboard in KDE (or GNOME) - go to Control Panel > choose keyboard layouts and your preferred language. In case that the dead keys will not work, put the following lines into your .cshrc file (in your /home/user_name directory):
setenv LANG sk_SK.ISO8859-2
setenv LC_CTYPE sk_SK.ISO8859-2
You may, of course, choose the UTF encoding. Dead keys are used together with other keys. If you press the dead key, nothing will happen. But if you press another key, with the combination of the dead key you will receive a letter like á, etc.
You can also completely customize your keyboard with Xmodmap. Read my Xmodmap Howto.
Run the following commands (FreeBSD 8.0):
pkg_add -r linux_base-f10
pkg_add -r linux-flashplugin10
pkg_add -r nspluginwrapper
Linux emulation must be activated, but the above commands will certainly do the trick for you. You install the Adobe Flash plugin with the following command (in the account you want to watch Internet videos): nspluginwrapper -v -a -i