Rust kommt in den Linux Kernel

Fr, 26. März 2021, Niklas

Der Linux Kernel ist ein Vorzeigeprojekt für die Programmiersprache C, doch künftig könnten auch Teile in der Mozilla-Programmiersprache Rust geschrieben werden. Erste ernsthafte Gedanken darüber gab es im Jahr 2020 bei der Linux Plumbers Conference. Doch was hat sich seitdem getan?

Der Grund für die Beliebtheit von Rust ist, dass es damit einfacher ist, sichere Programme zu schreiben. Vor allem hilft es, die Threadsicherheit zu verbessern und speicherbezogene Fehler wie etwa Pufferüberläufe zu verhindern, die zu schwerwiegenden Sicherheitslücken führen können.

Beim Linux Security Summit 2019 stellten Alex Gaynor und Geoffrey Thomas fest, dass zwei Drittel der Sicherheitslücken im Linux Kernel durch Probleme mit der Speichersicherheit verursacht werden. Rust könnte diese durch seine deutlich sichereren APIs theoretisch komplett verhindern.

Sylvestre Ledru, Mozilla Mitarbeiter und Debian Entwickler, hat bereits eine Version der Coreutils in Rust auf Linux portiert. Dazu nutzte er den LLVM Compiler und Clang. Mit den Coreutils in Rust konnte Debian erfolgreich gestartet werden und die meisten Debian Programme funktionieren, auch wenn die Coreutils noch nicht in einer stabilen Version vorliegen. Irgendwann können sie möglicherweise die in C geschriebenen GNU Coreutils ablösen.

Linus Torvals möchte noch abwarten, bevor er sich auf eine Meinung zu Rust im Kernel festlegt. Er findet es interessant und sieht vor allem im Bereich der Treiber eine gute Anwendungsmöglichkeit, da Treiber weitestgehend unabhängig vom restlichen Code laufen und immer nur wenige Geräte betreffen. Hier kann man also ohne grössere Probleme experimentieren.

Er möchte aber keineswegs zu dem Wechsel zu Rust drängen. Er sieht die Sicherheitsvorteile, aber weiss auch, dass sich nicht immer alle Vorhaben umsetzen lassen. Der Wechsel wird massgeblich von Rust Enthusiasten vorangetrieben und man müsse erstmal schauen, wie gut der neue Code tatsächlich funktioniert.

Er gibt auch zu Bedenken, dass einige Menschen ein Problem mit Rust bei normalen Programmen haben. Allerdings gebe es zwischen normalen Programmen und dem Kernel einige wesentliche Unterschiede, die einen Vergleich schwierig machen. Der Kernel ist in einigen Bereichen viel komplexer, aber auch einfacher in dem Sinne, dass er weitestgehend ohne externe Bestandteile funktioniert.

Greg Kroah-Hartman, der Maintainer des Linux Stable Kernels, sieht als einen der wichtigsten Punkte in dem Unterfangen das Zusammenspiel zwischen dem bestehenden C Code und neuem Rust Code. Es sei wichtig, sicherzustellen, dass die C Kernstrukturen als Rust-Strukturen zugänglich gemacht werden, sodass Treiber in Rust diese ordnungsgemäss verwenden können.

Dazu sei allerdings sehr viel Arbeit notwendig. Insgesamt spricht Kroah-Hartman von spannenden Jahren, die auf das Linux Projekt zukommen, also ist die Umstellung wohl eher als Langzeitprojekt zu sehen. Eine vollständige Umstellung des Linux Kernels auf Rust sei jedoch zunächst nicht geplant. Es gehe hauptsächlich um Treiber und Programme im Userspace.

Quellen: