Linux from Scratch, 16.9.2013, München¶
Von Montag bis Freitag zügig durch, dann am Freitag gegen 4 Uhr die
Punktlandung: fdisk
, GRUB 0.97 (siehe unten) ins MBR,
menu.lst
, und bootet von Disk! Danke an alle für die lustige
Woche!
Nachfolgend ein paar Nachsätze und Links, in etwas wahlloser Reihenfolge.
GRUB 0.97¶
GRUB 0.97 (“GRUB Legacy”) baut nicht mit einer reinen 64 Bit
Toolchain. Im Kurs haben wir das erste Mal (Zeit is worden) ein 64 Bit
System gebastelt und glibc
und gcc
leichtfertigerweise
(eigentlich richtigerweise) mit --disable-multilib
ausgestattet. GRUB läuft nicht mit sowas (seltsamerweise baut er
damit). Darüber haben wir uns aus Zeitersparnisgründen (der Weg war
klar: Multilib-Toolchain bauen) hinweggeholfen, und zwar mit einer
vorcompilierten statisch gelinkten Version von GRUB aus dem
Gentoo-Paket sys-boot/grub-static
.
Cross Systeme Bauen¶
Christof’s Ziel war, alle Sourcen crosszucompilieren und schliesslich
auf einem meiner Raspberries zum laufen zu bringen. Leider
gescheitert, weil durch einen unglücklichen Umstand (Danke an die
Infrastruktur bei Mathias, die es erlaubt, den Schulungsrechner extrem
leicht neu aufzusetzen :-) ) alle Kompilate und sein Build-Script
verschwunden waren. Das Buildscript konnte durch kreativen Einsatz von
dd
wiederhergestellt werden, aber die Zeit war dahin.
Wie eingangs im Kurs gesagt, ist der Output des Kurses völlig sinnfrei - es gibt Distributionen, die einem diese Arbeit erledigen. Will man unbedingt selbst compilieren, verwendet man z.B. Gentoo Linux.
Für nicht-PC-Architekturen ist die Situation ein wenig komplizierter, und man ist unter Umständen wirklich versucht, das, was wir in dem Kurs machen, im richtigen Leben anzuwenden. Andere Leute haben das gleiche Problem - und wie es so ist in der Open-Source-Welt, gibt es mittlerweile auch dafür flexible Lösungen. Ich empfehle, sich Yocto anzusehen.
Realtime¶
Das Wort Xenomai ist im Kurs mal gefallen. Für harte
Realtime-Garantien durchaus gerechtfertigt; unter Umständen muss man
aber nicht so arge Geschütze auffahren, sondern reicht es auch, die im
Linux-Kernel enthaltenen Realtime-Features zu nützen (Stichwort
SCHED_FIFO
und SCHED_RR
Scheduling). Reicht das nicht, kann
ein guter Mittelweg auch der PREEMPT_RT Patch sein, dessen Ziel ist, immer mehr in
Mainline zu diffundieren.
Init, oder der Prozess mit der ID 1¶
Unser init
ist ein kleines Shell-Script, das Pfade setzt,
ldconfig
etc. aufruft, und dann eine Login-Shell startet. Nicht
sehr flexibel und ausgeklügelt, aber durchaus geeignet, die
Funktionsweise eines Unix-Systems zu verdeutlichen. Will man flexibler
werden, muss dieser Init mehr machen.
System-V Init ist das, was man von Linux-Distributionen und anderen Unixen seit jeher kennt. Es ist gewaltig geschichtsbelastet, basiert auf Shell-Scripts, und trägt zur Boot-Zeit eines Systems den meisten Teil bei.
Eine sehr intelligente Linux-spezifische Alternative, die von immer mehr Distributionen eingesetzt wird, ist systemd. Sehr interessant, und trotz aller Behauptungen gar nicht overengineered.