• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

initrd zwingend erfolderlich?

Ctwx

Member
Hallo Linux-Club-Community!


aufgrund eines Bugs im 3.1.x-Kernel muss an meinem Notebook eine andere Kernelversion verwenden. Ich könnte mir zwar einen Kernel auf Basis der openSUSE-Konfiguration bauen, aber dann hätte ich viele Module die ich einfach nicht brauche. Daher fand ich die Idee eines eigenen Kernels ganz interessant.
Ich habe als erstes einmal mit "make localyesconfig" einen allgemeinen Kernel gebaut, weil mit dem Standard openSUSE 12.1-Kernel mein Notebook hin- und wieder abstürzt. Dann habe ich noch ein paar Änderungen vorgenommen, wie etwa ext4, fat usw. direkt in den Kernel zu kompilieren - also nicht als Modul.
Jedoch wollte der Kernel dann nicht starten und quittierte mir ein "unknown fs-type" Fehler beim Boot.

Wie kann das sein? Ich habe die Module doch einkompiliert? Oder ist eine initrd mittlerweile unbedingt notwendig? Vielleicht wegen systemd? Hier meine .config-Datei: http://pastebin.com/sCFvZLeC


Danke
 

spoensche

Moderator
Teammitglied
Ctwx schrieb:
Ich habe die Module doch einkompiliert?Oder ist eine initrd mittlerweile unbedingt notwendig?
Code:
CONFIG_EXT4_FS=m
Nein du hast ext4 als Modul kompiliert. Eine initrd ist nicht unbedingt notwendig.

Weisst du was der Unterschied zwischen einem monolithen und einem modularen Kernel ist? Weisst du wofür die initrd ist, was sie beinhaltet etc?
 
OP
C

Ctwx

Member
spoensche schrieb:
Code:
CONFIG_EXT4_FS=m
Nein du hast ext4 als Modul kompiliert. Eine initrd ist nicht unbedingt notwendig.
Nanu wie ist das denn passiert?! Ich habe das erste Mal xconfig verwendet, daher habe ich wahrscheinlich das falsche Icon als "einkompiliert" angesehen. Peinlich...

spoensche schrieb:
Weisst du was der Unterschied zwischen einem monolithen und einem modularen Kernel ist? Weisst du wofür die initrd ist, was sie beinhaltet etc?
Ja. Ein Monolithischer Kernel, der Linux im Grunde ist, beinhaltet alle Treiber direkt während ein modularer Kernel nur Basissachen im Kernel hat und alles andere als Module nachläd.

Die initrd ist ein root-Dateisystem mit grundsätzlichen Modulen und Programmen (/bin/init und ein paar mehr) dass beim Booten in den Arbeitsspeicher geladen wird und das Dateisystem läd. Da ich das ext-Dateisystem-Support als Modul anstatt wie von mir angenommen als "einkompiliert" ist die initrd notwendig, da Module selbst erst zu einem späteren Zeitpunkt geladen werden.

So in etwa. Wenn etwas nicht stimmt bitte ich um Korrektur.
Entschuldige bitte die Frage; mir ist es nicht aufgefallen, dass ich die Dateisysteme als Module kompiliert habe. Ich glaube ich nehme demnächst wieder "menuconfig". :-?


Gruß
Ctwx
 

spoensche

Moderator
Teammitglied
Ctwx schrieb:
Ja. Ein Monolithischer Kernel, der Linux im Grunde ist, beinhaltet alle Treiber direkt während ein modularer Kernel nur Basissachen im Kernel hat und alles andere als Module nachläd.[/code]

Und ein monolithischer Kernel kann keine Module laden.

Ctwx schrieb:
Die initrd ist ein root-Dateisystem mit grundsätzlichen Modulen und Programmen (/bin/init und ein paar mehr) dass beim Booten in den Arbeitsspeicher geladen wird und das Dateisystem läd. Da ich das ext-Dateisystem-Support als Modul anstatt wie von mir angenommen als "einkompiliert" ist die initrd notwendig, da Module selbst erst zu einem späteren Zeitpunkt geladen werden.[/code]

Ich vermute mal, dass du mit grundsätzlichen Module, wie HDD- Controller, Chipsatztreiber etc. meinst. Bei /bin/init hast du das s vergessen: /sbin/init.
Die initrd bzw. das initramfs lädt nicht nur Module, sondern erzeugt auch die Basis Gerätedateien, wie z.B. /dev/null, /dev/console, hängt das Root Dateisystem unter /root ein und wechselt switch_root dann nach /root.

Ctwx schrieb:
Entschuldige bitte die Frage; mir ist es nicht aufgefallen, dass ich die Dateisysteme als Module kompiliert habe. Ich glaube ich nehme demnächst wieder "menuconfig". :-?
Fragen sind da um gestellt zu werden.;)
Der Unterschied zwischen menuconfig, xconfig, gconfig ist dass menuconfig die Konsolenversion, xconfig grafisch, gconfig grafisch (Gnome). Das kann also dort genauso passieren.

Ein kleiner Tipp für den Einstieg in den Kernelbau und den Linux Bootprozess:
1. Verwende nicht den Kernel deiner Distri mit der du arbeitest.
2. Nutze stattdessen eine Virtuelle Maschine. Wenn mal was schief läuft hast du dir dann nicht das System zerschossen.
3. Ist zwar schon älter, aber für den Einstieg ganz gut geeignet: http://www.tldp.org/HOWTO/Bootdisk-HOWTO/. Nur statt Lilo solltest du den Grub als Bootloader verwenden. Statt des Bootdiks HowTos geht auch der anspruchsvollere http://www.tldp.org/LDP/Pocket-Linux-Guide/html/index.html
4. Bücher sind immer Gut: http://openbook.galileocomputing.de/linux/ u. http://www.oreilly.de/german/freebooks/rlinux3ger/linux_wegIVZ.html
5. Viel Spass beim experimentieren und wenn es mal hängt wird dir hier bestimmt geholfen,
 
OP
C

Ctwx

Member
spoensche, danke für deine Antwort.

spoensche schrieb:
1. Verwende nicht den Kernel deiner Distri mit der du arbeitest.
Ich habe mir aus dem git-Repo vom openSUSE-Projekt den 3.3.2er-Kernel inkl. SUSE-Patches mit der der desktop-config genommen. Ich war ehrlich gesagt zu faul es auf mein System zuzuscheiden. Das hatte allerdings den Nachteil, dass das Notebook ~2h gebraucht hat um den Kernel zu kompilieren.

spoensche schrieb:
2. Nutze stattdessen eine Virtuelle Maschine. Wenn mal was schief läuft hast du dir dann nicht das System zerschossen.
Dazu lasse ich den Standardkernel aus den Repos installiert. So richtig deinstallieren ist auch nicht wirklich möglich ohne irgendwelche dependencies zu brechen. Ich habe es eine Zeit lang mal mit einem "zypper lock" gemacht, aber an sich ist es nicht wirklich schlimm wenn der Standardkernel drauf ist.

spoensche schrieb:
3. Ist zwar schon älter, aber für den Einstieg ganz gut geeignet: http://www.tldp.org/HOWTO/Bootdisk-HOWTO/. Nur statt Lilo solltest du den Grub als Bootloader verwenden. Statt des Bootdiks HowTos geht auch der anspruchsvollere http://www.tldp.org/LDP/Pocket-Linux-Guide/html/index.html
Danke. Ich hatte das hier gefunden: http://www.linuxforen.de/forums/showthread.php?t=161878 Jedoch war ich mir nicht ganz sicher ob es so klug ist, das zu verwenden, da es sich auf einen 2.6er-Kernel bezieht und manche Sachen, mit denen ich mich nicht auskenne, einfach veraltet sind.

spoensche schrieb:
4. Bücher sind immer Gut: http://openbook.galileocomputing.de/linux/ u. http://www.oreilly.de/german/freebooks/rlinux3ger/linux_wegIVZ.html
Schaue ich mir mal an.


Gruß
Ctwx
 

spoensche

Moderator
Teammitglied
Ctwx schrieb:
Danke. Ich hatte das hier gefunden: http://www.linuxforen.de/forums/showthread.php?t=161878 Jedoch war ich mir nicht ganz sicher ob es so klug ist, das zu verwenden, da es sich auf einen 2.6er-Kernel bezieht und manche Sachen, mit denen ich mich nicht auskenne, einfach veraltet sind.

Der Ablauf zur Ermittlung der Hardware und der entsprechenden Kernelkonfiguration ist auch bei 3.x gleich. Ausserdem ist der 2.6.3x er Kernel nicht veraltet.
 
Oben