Linux-Kernel mit bash kompilieren

Gast #5391194
Lesenswert?

Hi,

bei Recherchen im Internet findet sich immer nur "How to compile Linux 
kernel".

Ich hingegen würde gerne außer dem Linux-Kernel, den ich bereits 
kompiliert habe, und dem isolinux bootloader und Hello World! init.c 
noch alles notwendige hinzufügen, um z.B. bash erstmal zum laufen zu 
bekommen.

Also eine textbasierte Shell, eigentlich egal ob bash, dash, bsh, zsh, 
csh, ksh, mksh, lksh,...

Welche Dateien sind dafür notwendig, dem kompilierten Kernel vor dem 
Erstellen des iso Image hinzuzufügen, damit diese Shell auch läuft?

Danke im Voraus
Pascal

P.S. ich kenne mich bisher nicht besonders gut aus, versuche aber durch 
die praktische Erfahrung deutlich mehr zu lernen als Bücher dazu zu 
lesen. War nicht "binutils" an dieser Stelle wichtig?
Gast #5391204
Lesenswert?

Im Wesentlichen brauchst du außer dem Kernel nur ein statisch gelinktes 
Programm, das heißt, ein Programm, das von keinen Bibliotheken abhängt. 
Dieses Programm packst du die initial ramdisk, und übergibst beim Booten 
dem Kernel "init=/bash" als Parameter.
Irgendwie kriegt man sicher eine statische Variante der bash o. ä. 
kompiliert. Prüfen kannst du das, indem du Folgendes machst:
1
~> readelf -a /bin/bash | grep "Req"
2
      [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
Wenn die Ausgabe nicht leer ist, weißt du, dass zur Laufzeit noch 
Bibliotheken nachgeladen werden müssen.
#5391231
Lesenswert?

Die Shell alleine bringt einem ggf. nicht viel, da man noch einen ganzen 
Stall voll Kommandozeilen-Tools braucht, damit man in der Shell auch was 
tun kann. Die core utilites wird man mindestens auch noch brauchen.
Am einfachsten dürfte da Busybox sein. Da ist das wichtigste schon 
dabei, und es ist alles in ein einziges Executable eingebaut, das auch 
statisch gelinkt werden kann. Es ist genau dafür gemacht, sich ein 
minimalistisches Linux-System zu bauen.
In manchen Distros wird eine Busybox schon mit in die initrd gepackt. 
Auf die Weise hat man ein bedienbares System selbst dann, wenn der 
Kernel es nicht schafft, sein root-Filesystem zu mounten.
Gast #5391468
Lesenswert?

Ja, kenne ich. Dauert aber sehr lange, bis man was fertig hat. Mit der 
iso funktioniert das eine mit den bashprofilen nicht. Ansonsten ganz ok. 
Aber minimalistisch reicht mir ja. Muss nur beim Starten ein Skript 
ausführen, und dann direkt neustarten. Für das Skript brauche ich eben 
eine Shell.
Gast #5391489
Lesenswert?

Irgendwie musst du es noch schaffen, die ganzen virtuellen Dateisysteme 
einzuhängen, die busybox zum Arbeiten braucht. Sonst scheitert es schon 
daran, /dev/console für die Ausgabe zu finden. Oder kann das 
mittlerweile der Kernel ganz alleine?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren