Login
Newsletter
Werbung

Do, 28. Oktober 2010, 10:57

Software::Entwicklung

Clang generiert erstmals funktionsfähigen Linux-Kernel

Der auf LLVM beruhende C-Compiler Clang versteht die GCC-Syntax nun so weit, dass er - mit einigen Einschränkungen - einen funktionstüchtigen Linux-Kernel compilieren kann.

Clang ist ein C-, C++- und Objective C++-Compiler, der auf LLVM aufsetzt. Gegenüber GCC will er wesentlich moderner und schneller sein, der generierte Code kann jedoch noch nicht in jedem Fall mit GCC mithalten. Clang ist im Gegensatz zu GCC von anderen Programmen, die Syntaxanalyse benötigen, wiederverwendbar, und der von ihm generierte abstrakte Syntaxbaum ist anderen Programmen zugänglich und soll anders als der von GCC alle relevanten Informationen enthalten. Seine BSD-Lizenz wird von diversen Projekten als liberaler und damit geeigneter als die von GCC empfunden. Nachteile von Clang sind zur Zeit seine geringere Ausgereiftheit und die geringere Zahl von unterstützten Zielsystemen.

Erst im Februar 2010 erreichte Clang einen Meilenstein, als er in der Lage war, sich selbst zu compilieren. Nun hat Clang-Hacker Bryce Lelbach einen weiteren Meilenstein geschafft, indem er einen funktionsfähigen Linux-Kernel compilierte. Die größte Hürde stellten dabei wohl einige Fehler im Compiler dar, die zu Abbrüchen führten, ein Indiz für die noch fehlende Reife und Stabilität von Clang. Die starke Nutzung des Kernels von GCC-spezifischen Erweiterungen war offenbar weniger ein Problem, da Clang hier Kompatibilität mit GCC anstrebt.

Lelbach erläuterte auf der Mailingliste sein Vorgehen. Er verwendete ein Macbook 5.1 mit Intel-CPU unter Debian. Dieses konnte er mit dem neuen Kernel booten und auch X11 laufen lassen. Ebenso funktionierte der Kernel unter Qemu. Auf einem Netbook mit Atom-CPU funktionierte er ebenso, wobei der Entwickler X11 noch nicht testete. Der Kernel ist ferner »self-hosting«, das heißt, auf dem System mit dem neuen Kernel konnte der Kernel wiederum erfolgreich compiliert und gebootet werden.

Einige Einschränkungen gibt es derzeit noch, die mit noch vorhandenen internen Compilerfehlern zusammenhängen. Während der größte Teil des Kernels und die meisten Treiber korrekt funktionieren, ist alles, was kryptografische Funktionen nutzt, nicht compilierbar, darunter auch IPv6 sowie SELinux, Posix ACLs, IPSec und eCrypt. Virtualisierung wurde vom Autor noch nicht näher getestet, nachdem er auf einen weiteren Compilerfehler stieß.

Zwei weitere Komponenten ließen sich mit Clang nicht korrekt compilieren und müssen daher bis auf weiteres mit GCC compiliert werden. Dies sind VDSO und der Boot-Code. Auch das Laden von Kernel-Modulen funktioniert nicht, der Autor hat jedoch eine Vermutung, woran es liegt. Alle drei Probleme könnten in naher Zukunft behoben werden, gibt sich Lelbach optimistisch. Die Compilierung dauerte nach seinen Angaben jeweils 13-15 Minuten, allerdings ist unklar, wie umfangreich die Konfiguration war. Links zu zwei Boot-Logs sind in seiner E-Mail zu finden.

Werbung
Kommentare (Insgesamt: 10 || Alle anzeigen )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung