FreeBSD - Linux

Linux und FreeBSD

Die Kernel: Gemeinsamkeiten und Unterschiede

Linux kennt heutzutage so gut wieder jeder zumindest vom Namen her, der sich ein wenig für PCs und Betriebssysteme interessiert. Gleichzeitig taucht immer häufiger der Name FreeBSD im Zusammenhang dazu in Magazinen, Nachrichten oder Foren auf. Werfen wir daher mal einen Blick auf die beiden Betriebssystem-Kerne und schauen uns Gemeinsamkeiten und Unterschiede an.

Wie aus Freax das bekannte Linux wurde

1991 wollte der finnische Student Linus Torvalds die Funktion seines 386er Prozessors besser verstehen, und entwickelte dazu eine Terminal-Emulation. Nach und nach wuchs das System immer weiter, bis es zu einem eigenen Betriebssystem wurde. Als Folge kündigte er in der Usenet-Gruppe für das Minix-Betriebssystem eine Veröffentlichung an – bei Linux-Fans ist es wohl das bekannteste Posting überhaupt.

Hello everybody out there using minix –
I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready.

comp.os.minix – 25. August 1991, 20:57:08 GMT

Linus plante das System offiziell Freax (oder Buggix) zu taufen, allerdings war der Administrator des Uni-FTP-Servers damit nicht einverstanden und erstellte für den Quellcode ein Verzeichnis mit der Bezeichnung Linux. Torvalds hatte keine Möglichkeit den Verzeichnisnamen zu ändern, und gab nach anfänglichem Widerstand schnell auf. Nach seiner eigenen Aussage musste er eingestehen, dass Linux der bessere Name war.

Von Unix bis FreeBSD

Die Geschichte von FeeBSD beginnt eigentlich bei Unix, im August 1969, würde aber den Artikel hier sprengen. Daher möchte ich nur kurz anreißen, dass zu dieser Zeit das Projekt Multics veröffentlicht wurde, was allerdings scheiterte – hauptsächlich weil die Erwartungen an das System überzogen waren bzw die vorhandene Hardware zu der Zeit nicht schnell genug arbeiten konnte. 1970 wurde aus diesen Anfängen Unics entwickelt (UNiplexed Information and Computing Service). 1974 wurde der Name Unics zu Unix verkürzt.

Im gleichen Jahr bekam die Universität Berkeley die 4er-Edition von Unix und entwickelte diese weiter. Während auch Unix weiterentwickelt wurde (1976 gab es bereits eine 5er- und 6er-Edition) wurde von der Uni Berkeley die erste Berkeley-Software-Distribution (BSD) veröffentlicht. 1978 kam die zweite Version als 2BSD (für Interesssierte: hier war die erste Version des Editors vi enthalten).

1989 erfolgte eine Portierung der zu der Zeit aktuellen 4.3BSD auf Geräte mit dem Intel i386-Prozessor, woraus 386BSD entstand. Leider war das nicht wirklich brauchbar, eine Patchkit-Sammlung war notwendig um mit dem System arbeiten zu können. Da die Patches nur sehr langsam in die offizielle Version von 386BSD eingeflossen sind, entstanden aus diesem Status quo (386BSD + Patchkit) zwei neue Betriebssysteme: FreeBSD und NetBSD.

Der Vollständigkeit halber sei noch erwähnt, dass die Rechteinhaber von Unix später die Anbieter von BSD-Software aufgrund von Lizenzverletzungen verklagt haben. FreeBSD wurde daraufhin so bereinigt, dass es auf 4.4BSD-Lite basiert und somit keinen Quellcode aus den Unix Laboratories mehr enthält.

Der Linux Kernel

Viele bezeichnen eine komplette Distribution als „Linux“, dabei handelt es sich genau genommen nur um den Betriebssystenkern – Kernel – selbst.

Die erste von Linus veröffentlichte Version ist Linux 0.01. Das System unterstützt i386-Prozessoren, Festplatten mit AT-Bus (IDE), eine Ausgabe auf VGA/EGA und eine finnische Tastatur. Kurze Zeit später folgt 0.11 und 0.12 – danach gibt es einen großen Sprung auf Version 0.95. Die Versionen dazwischen wurden als diff-Patches im Usenet und auf Mailinglisten veröffentlicht, jedoch nicht als eigenständiges Archiv.

Tux - Linux Mascot
Tux – Das Linux Maskottchen

Erstellt von Larry Ewing mit einer der ersten Versionen von GIMP

Mit Version 0.95 zeigte Linus, dass der Kernel nahe an einem produktiven Einsatz angekommen ist. Als nächste Schritte wurden Fehler korrigiert bzw bugs gefixt. Mit der Version 1.0 bietet Linux einen stabilen TCP/IP-Netzwerkstack, virtuelle Speicherverwaltung mit Paging und Unterstützung mehrerer Architekturen jenseits von i386. Linux ist jetzt ein monolithischer Kernel mit dynamisch ladbaren Modulen sowie device driver Unterstützung. Schon zu dieser Zeit gibt es eine sehr große Community, die Patches beisteuert und somit die allgemeine Entwicklung beschleunigt und professionalisiert.

Kernel Version 2.x bietet ein ernst zunehmendes System für Server und Industrie. Es gibt SMP-Unterstützung, das ELF-Format, moderne Dateisysteme (ext2, ext3) USB, erste 64bit-Ports und eine skalierbare Netzwerkarchitektur.

Kernel Version 2.6 bringt udev, inotify, cgroups und einen stark wachsenden Treiberumfang. Das System wird zur Grundlage vieler Webserver, Supercomputer und Embedded-Geräte.

Mit Version 2.6.25 wird ein sehr bekannter „quasi-Fork“ gestartet (teils auch 2.6.27). Mit Erweiterungen wie Binder IPC, wakelocks, ashmem und cgroups startet eine von der Mainlinie völlig abgetrennte Entwicklung unter dem Namen – Android.

Heute ist Linux bei den Versionen 5.x sowie 6.x angekommen – ein hochskalierbarer Kernel der gleichzeitig Smartphones und Uhren, Cloudsystemen (Kubernetes), Router, Desktop, IoT-Hardware und den größten Teil der Supercomputer betreibt.

Der FreeBSD Kernel

Wie schon erwähnt entstand FreeBSD aus dem 386BSD und einer Patchsammlung. Die Firma AT&T ist zu dieser Zeit der Rechteinhaber von Unix und drohte mit juristischen Schritten, da die ersten Versionen vermutlich geschützten Code von Unix enthielt.

The FreeBSD Logo

Aus dieser Situation heraus entsteht FreeBSD 2.0, welches auf dem vollständig von Unix-Code bereinigtem 4.4BSD-Lite basiert. Letztlich ist damit eine klare, modulare und saubere Codebasis entstanden. FreeBSD verbreitete sich recht schnell zu einem stabilen, quelloffenem Unix, und verfügt im Gegensatz zu Linux schon in dieser Version über einen ausgereiften Netzwerk-Stack und eine etablierte Systemarchitektur.

FreeBSD 3 und 4 glänzte mit hoher Stabilität im ISP- und Hosting-Umfeld. In den frühen 2000er Jahren erscheint Version 5 mit einer neuen Multi-Prozessor-Unterstützung (SMPng) sowie dem Jail-System – ein Vorläufer moderner Containertechnologien. Mit Version 7.x/8.x kommen Subsysteme wie ZFS, DTrace, virtueller Netzwerk-Stack, bhyve-Hypervisor – und wird zu einer attraktiven Plattform für Rechenzentren, Storage-Appliances und Firewall-Distributionen wie zum Beispiel pfSense oder OPNsense.

 

Gemeinsamkeiten und Unterschiede von Linux und FreeBSD

Typ Linux Kernel FreeBSD Kernel
Ursprung Neuentwicklung (1991) UNIX/BSD-Nachfolger (1993)
Lizenz GPLv2 (Copyleft) BSD-Lizenz
Architektur monolithisch, modular monolithisch, modular
Systemtyp Kernel + getrennte Distribution Komplettes System – Kernel + Userland
Entwicklung Globale Community + Industrie Gruppe mit strengem Review-Prozess
Release-Modell Rolling Mainline, Distros bestimmen selbst Zentrale Releases mit Long-Term-Stability
Hardwaresupport Sehr breit, besonders moderne Hardware Gute Server/Netzwerkhardware
Dateisysteme ext4, XFS, Btrfs, F2FS, ZFS (extern) UFS/FFS, ZFS, GEOM
Netzwerk-Stack Modern, viele Features Stabil und robust, BSD-Stack
Container / Virtualisierung Namespaces, cgroups, LXC/LXD, Docker, KVM jails, bhyve-Hypervisor
Security SELinux, AppArmor, seccomp, eBPF-Security Capsicum, Jails, Mandatory Access Framwork
Performance HCP, Cloud, Embedded Netzwerk-IO, Storage, Server-Workloads
Zielgruppe Desktop, Mobile, Server, Cloud, Embedded Server, Firewalls, Storage, Hosting, Appliances

Fazit

Linux ist universell nutzbar, extrem weit verbreitet und erhält viel Unterstützung der Industrie. Durch die große Anzahl unterschiedlicher Distributionen mit unterschiedlichsten Ansätzen (Debian, Fedora, Ubuntu, Gentoo, Arch) ist es allerdings sehr stark fragmentiert. Anbieter kommerzieller Software für Linux (closed source) konzentrieren sich zumeist auf nur eine einzige Distribution. Containerlösungen wie Docker können das Problem nur teilweise umgehen.

FreeBSD ist technisch konsistent, stabil, sehr sauber strukturiert und besonders im Server-, Netzwerk-, und Storage-Umfeld sehr stark. Es gibt nur eine Distribution mit einer klaren Struktur. Allerdings ist es weniger stark verbreitet – kommerzielle Software (closed source) gibt es nur sehr wenig bis gar nicht.

Was ist besser ?

Diese Frage gibt es letztlich nicht. Beide Kernel haben sehr ähnliche Ursprünge – streng gesehen ist Linux ein Unix-Nachbau und FreeBSD ein Unix-Derivat – beide jedoch kein offizielles Unix (nicht zertifiziert).

Es kommt auf den geplanten Einsatzzweck an, welches der beiden Systeme bevorzugt werden kann. Aber auch dies ist letztlich kein muss. Wie oben angegeben ist FreeBSD durchaus von Vorteil im Bereich Firewalls – es spricht aber nichts dagegen, eine Linux-Firewall zu verwenden. Auf der anderen Seite ist Linux zum Beispiel im Desktop-Bereich recht stark – aber auch ein FreeBSD Desktop hat in modernen Umgebungen keine größeren Nachteile mehr.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert