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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.