FreeBSD erscheint in Version 10

katisa, 123RF

Neues vom Teufel

Das Unix-Derivat FreeBSD gilt als äußerst zuverlässig und liegt sowohl Mac OS X als auch der Sony Playstation 4 zugrunde. Die neue Version 10 bringt neue Features und Performance-Gewinne.
Sicher verstaut - Deduplizierung spart Platz, Cloud-Backup für Windows, Areca sichert kostenlos. ADMIN 01/14 stellt Backups für Profis mit und ohne Cloud ... (mehr)

Seit 20 Jahren besticht FreeBSD [1] als leistungsfähiges, sicheres und stabiles Open-Source-Betriebssystem. Nun ist es in Version 10 mit einigen Neuerungen erschienen.

FreeBSD ist nicht nur auf Servern daheim, sondern auch auf Workstations und Embedded-Systemen. Die positiven Eigenschaften des Betriebssystem resultieren aus der Strategie, eine neue Version erst dann vorzustellen, wenn diese marktreif ist.

Familienstreit

FreeBSD gehört zur Unix-Familie, darf diesen Namen allerdings aus rechtlichen Gründen nicht tragen. Behörden und Unternehmen in den Bereichen Technologie und IT nutzen FreeBSD intern als Entwickler- und Serverplattform. Im Vergleich mit der Linux-typischen GPL erlaubt die BSD-Lizenz mehr Freiheiten für solche Unternehmen, weil sie die Möglichkeit bietet, proprietären eigenen Code mit dem FreeBSD-Code zu kombinieren, ohne den eigenen Quelltext offenlegen zu müssen.

Obwohl FreeBSD anders als Linux nicht die massive Unterstützung so großer Firmen wie IBM und Hewlett-Packard genießt, hält es bei altmodischen Tugenden wie Sicherheit und Zuverlässigkeit mit Linux mit. Als jüngstes Beispiel für das in FreeBSD gesetzte Vertrauen dient Sony mit seiner Playstation 4, die auf FreeBSD 9 basiert. Ebenso setzt Juniper auf FreeBSD als robustes Betriebssystem für Netzwerk-Router. Auch Apple nutzt Teile von FreeBSD für ihr Betriebssystem Mac OS X.

FreeBSD nimmt für sich in Anspruch, das ausgereifteste Unix-artige Betriebssystem für x86-Server zu sein. In den neunziger Jahren etablierte es sich mit seiner Geschwindigkeit, Zuverlässigkeit und oftmals jahrelangen Uptimes als Betriebssystem für kleine wie große Web- und FTP-Server. Diese Tradition wurde Verpflichtung und erfuhr nur wenige Umbrüche.

Da im Serverbereich immer öfter Mehrprozessor- und Mehrkern-Systeme in den Markt drängen, musste die Entwicklermannschaft um FreeBSD reagieren. Mit dem im Jahre 2004 erschienenen FreeBSD 5 wurde der Kernel in einem lang andauernden Prozess komplett auf das symmetrische Multiprocessing umgebaut. Dies führte zu Problemen, die erst mit Version 7 weitestgehend beseitigt waren.

Der nächste, nicht ganz so radikale Umbruch erfolgte mit der Einführung von Virtualisierung und ZFS unter FreeBSD 8 im Jahre 2009. Das von Sun Microsystems entwickelte Dateisystem mit integrierter Volumenverwaltung ist für sehr große Datenmengen bei gleichzeitig hoher Datensicherheit ausgelegt. Die Portierung zu FreeBSD erforderte einige Anpassungen im Kernel, die aber auch zur weiteren Stabilität und Sicherheit beitrugen. Auch das neue FreeBSD 10 stellt in mancher Hinsicht einen Umbruch dar.

GCC hat ausgedient

Mit FreeBSD 10 kommt ein neuer Compiler zur Übersetzung der Kernel-Quellen und der zugehörigen Tools zum Einsatz: LLVM/CLang [2, 3] . Ein Wechsel des GCC-Projekts auf die neue Lizenz GPL-Version 3 hat die Entwickler dazu bewogen, GCC aus dem FreeBSD-Basissystem herauszunehmen.

LLVM, ursprünglich die Abkürzung für Low Level Virtual Machine, enthält nicht nur einen Compiler, sondern eine ganze Reihe von Tools und Bibliotheken. Traditionelle Compiler-Systeme führen eine Reihe von Optimierungen beim Kompilieren des Sourcecodes durch. Anschließend verbinden sie die kompilierten Module miteinander, wobei sie die sich hierbei bietenden Optimierungsmöglichkeiten vernachlässigen. Das liegt daran, dass der Linker nur die einzelnen Module sieht und nicht das gesamte Programm überblickt.

Dieser Problematik stellt sich LLVM, indem es zunächst einen virtuellen Bytecode erstellt, wie er auch in RISC-Befehlssätzen zu finden ist (siehe Abbildung 1 ). Dieser Bytecode lässt sich während des Link-Vorgangs noch einmal optimieren.

Abbildung 1: Aufbau der LLVM-Suite.

Wie der Name LLVM nahelegt, basiert ein Teil der Architektur des Frameworks auf einer virtuellen Maschine, die einen Prozessor virtualisiert: entweder einen Hauptprozessor (CPU) oder auch einen Grafikprozessor (GPU). Die virtuelle Maschine übersetzt während der Ausführung die intern generierte Sprache (Intermediate Language) des Compilers (LLVM Assembly Language) in die des aktuellen Systems. Ihre Effizienz erlaubt auch eine Übersetzung auf Anforderung (Just-in-Time). Außerdem ermöglicht LLVM ein flexibles Backend-System und unterstützt eine Vielzahl unterschiedlicher Prozessorarchitekturen.

Clang als sogenanntes Frontend der LLVM-Suite parst den C- oder C++-Code und übersetzt ihn in die LLVM-Zwischensprache LLVM Intermediate Representation (LLVM IR). Das LLVM-Backend erzeugt danach effizienten Maschinen-Code. An dieser Stelle kommt die virtuelle Maschine nicht zum Einsatz, da LLVM als Compiler-Backend für die jeweilige Architektur (x86, Power PC, IA64 usw.) an ihre Stelle tritt. Neben C und C++ gibt es unter anderem Frontends für Fortran, Haskell und Ruby, andere befinden sich in Entwicklung.

Bedingt durch den Aufbau des LLVM-/Clang-Systems verlängert sich das Kompilieren von FreeBSD mit »make buildkernel« und »make buildworld« um etwa zwanzig Prozent. Dieser zusätzliche Zeitbedarf bringt jedoch auch Nutzen, denn Clang prüft den C-Code des Kernels und der Tools genauer und hat so Fehler offenbart, die GCC nicht gefunden hatte.

Das wirkt sich auch auf die portierte Software (Ports) im Portstree von FreeBSD aus. Die meisten Programme lassen sich ohne oder mit nur wenigen Code-Korrekturen auch mit LLVM/Clang übersetzen. Andere Ports setzen allerdings die alte Compiler-Suite GCC voraus. Um auch diese zu nutzen, installiert man neben LLVM/Clang auch GCC und verwendet es ausschließlich für die Ports. Bis sich alle Ports mit Clang übersetzen lassen, muss man leider an den Port-Makefiles Hand anlegen und dort GCC eintragen:

CC=gcc47
CXX=g++47
CPP=cpp47

Da unter FreeBSD bislang Backends nur für die Plattformen »amd64« , »arm« , »armv6« und »i386« existieren, beschränkt sich der Einsatz der Compiler-Suite auch auf diese Architekturen. Die anderen Zielplattformen setzen nach wie vor auf eine etwas ältere Version der GCC-Suite.

Ähnliche Artikel

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023