Neuer Linuxulator für FreeBSD committed

Yamagi

Possessed With Psi Powers
Teammitglied
Nach mehreren Jahren Entwicklung ist gestern gegen Abend der lang erwartete 64-Bit Linux Compatibility Layer (meist "Linuxulator" gennant) in FreeBSD 11-CURRENT eingegangen. Der Linuxulator ist ein Kernel-Subsystem, was es dem FreeBSD-Kernel ermöglicht native Linux-Binaries auszuführen. Dabei kommt keine Emulation zum Einsatz, stattdessen werden Syscalls und andere Primitive direkt implemetiert. Im Linuxulator laufende Binaries haben daher native Geschwindigkeit.

Diese neue Version des Linuxulators ist grundüberarbeitet, man kann bereits von einer Neuentwicklung sprechen. Die wichtigsten Neuerungen gegenüber der bisherigen Version sind:
  • Es werden diverse bisher nicht unterstützte Syscalls implementiert. Dazu gehört zum Beispiel eine für die meisten Anwendungen ausreichend große Teilmenge der epoll() Familie.
  • Der Linuxulator unterstützt nun 1:1-Threading.
  • Es werden die unter Linux bereits seit langem genutzten VDSO unterstützt.
  • Es können 64-Bit Linux-Binaries ausgeführt werden.
Hinzu kommen unzählige Bugfixes sowie Optimierungen. Der Linuxulator nutzt nun wenn möglich FreeBSDs Funktionen und implementiert nicht mehr seine eigenen. Er unterstützt nun einen Großteil der Syscalls des Linux 2.6.32 Kernels. Da seitdem lediglich eine Hand voll selten genutzter, spezialisierter Syscalls hinzugefügt wurde, ist dies völlig ausreichend um ein Großteil aller Linux-Binaries inkl. moderner Versionen der glibc ausführen zu können.
 
Zuletzt bearbeitet:
Ganz besonderer Dank geht an dieser Stelle an Dmtry Chagin, der einen absoluten Großteil der Arbeit gemacht hat. Hinzu kommen die Reviewer, die sich unermüdlich durch die 122 Einzelpatches gegraben haben. Diese Änderungen sind alles andere als trivial, sie greifen in diverse Kernelsubsysteme ein und müssen entsprechend gut geprüft werden.
 
Klingt unheimlich gut! Funktioniert dann endlich der Linux Steam Client? Und wann kann man mit dem Port des neuen Linuxulators rechnen, um diesen auf 10.1 installieren und nutzen zu können?
 
Ja, eine aktuelle Linux-Base vorausgesetzt, sollte der Steam-Client funktionieren. Bei den Spielen mag es anders aussehen, gerade da viele Spiele noch einmal extra mit einer Art Kopierschutz gesichert zu sein scheinen... Der Kram läuft im Moment auch nur auf 11-CURRENT und bezweifele, dass es einen Merge zurück ins 10-STABLE geben wird. Dafür ist es zu invasiv. Aber ich lasse mich natürlich positiv überraschen.
 
Ausgezeichnet, mit dem heute Nacht noch committeten Fix gibt's jetzt keine Kernel Panic mehr beim Starten von Frozen Synapse und es klappt sehr gut, nur der Ton fehlt hier noch, das wird vielleicht eine lokale Einstellung sein.
 
Gibt es eigentlich schon praktische Erfahrung? Installiert man nun zwei Linux-bases, einmal 32bit und einmal 64bit? Oder ist das eine mit unterschiedlichen Paketen? Gibt es eine genaue Version der glibc die unterstützt wird?
 
War das nicht so, dass der aktuelle (10.2) Kernel noch nicht alle Linux-Syscalls unterstützt, die der neue Linuxulator mit sich bringt? Ist dann insoweit der Kernel von 10-stable/10.3 entsprechend verbessert worden?
 
Genau. Bis gestern Abend unterstützte FreeBSD 10-STABLE (und damit auch 10.1 und 10.2) die Syscalls und ioctl() eines 32 Bit Linux 2.6.16 Kernels. Durch den Merge des neuen Linuxulators wird nun wie schon in 11-CURRENT Linux 2.6.32 in 32 und 64 Bit unterstützt. Außerdem kann 10-STABLE nun einige Linux-Subsysteme, die bisher nicht unterstützt würden. Zum Beispiel epoll(), was inzwischen von viel Software genutzt wird. Der Kernel alleine bringt erstmal nicht so viel. Aber ein großes Update der Linux-Base Ports ist ja schon unterwegs.

Linux 2.6.32 klingt zwar überholt, aber die späteren Linux-Versionen haben nur noch spezielle Syscalls hinzugefügt. Die trifft man in normalen Anwendungen sehr selten oder sie sind dort optional. Daher ist FreeBSD 10-STABLE nun kernelseitig wieder genug auf Stand, um die meisten Linux-Anwendungen ausführen zu können.
 
Da ich gerade darüber gestolpert bin. Wer den 64 bit Linuxulator testen will muss das linux64.ko Modul anstatt dem linux.ko Modul laden.
 
Skype funktioniert nun ohne manuelle epoll patches :-) Nur der Port audio/linux-c6-pulseaudio-libs muss deinstalliert sein, sonst startet Skype bei mir nicht.

Grüße und Vielen Dank!
 
emulators/linux_base-c6 wurde nun auf CentOS 6.7 aktualisiert. Die größte Änderung ist 64-Bit Support, natürlich nur mit dem neuen Linuxulator.
 
Hat schon jemand "chrome" (nicht "chromium") ausprobiert? Das ist, wegen Netflix, der letzte Grund, warum ich noch Linux nutze.

/agni
 
Wie läuft das denn mit dem 64Bit-Linux und Nvidia? Ich habe die c6_64-base, aber die 64Bit-Linux-Programme finden die libGL nicht. Die hat der Nvidia-Treiber zwar installiert, aber wahrscheinlich nur für 32Bit... oder?
 
Ich befürchte zur Zeit gar nicht. Ich hatte schon mal versucht die 64bit Linux Bibliotheken nach /compat/linux/usr/lib64 zu kopieren. Diese wurden dann zwar auch gefunden und verwendet. Jedoch endete es immer mit einem Segfault. Ich hatte dann einen PR verfasst um den sich dann der linux64.ko Entwickler Dmitri Chagin angenommen hat. Eine Lösung ist dabei aber leider nicht herausgekommen da er keine NVIDIA Hardware zur Verfügung hatte. Er hat aber gemeint sich einen Laptop mit NVIDIA Hardware zu kaufen damit er selbst testen kann.
 
Hat hier jemand schon ausprobiert, ob nun auch endlich der Steam-Linux-Client funktioniert? Habe noch 10.2 und werde erst ein Upgrade auf 10.3 machen, wenn es Ende März raus ist.
 
Hat hier jemand schon ausprobiert, ob nun auch endlich der Steam-Linux-Client funktioniert? Habe noch 10.2 und werde erst ein Upgrade auf 10.3 machen, wenn es Ende März raus ist.

Also ich bin ja mehr GOG-mäßig unterwegs und muss sagen, dass ich bis jetzt noch keine binary gefunden habe, die überhaupt mit der glibc-Version von c6 klarkommt. Insofern heißt es bei mir wohl trotzdem wieder Debian booten (sofern ich denn überhaupt Zeit zum Zocken finde).
 
Zurück
Oben