Linux 14.985 Themen, 106.406 Beiträge

Gentoo auf externer Festplatte: Config von Kernel und Grub

Yves3 / 9 Antworten / Flachansicht Nickles

Hallo,

ich habe kürzlich Gentoo auf meiner externen USB-Festplatte installiert und es hat eigentlich auch alles wunderbar geklappt. Jetzt wollte ich mir noch einen eigenen Kernel kompilieren, da mir der Genkernel einfach zu aufgeblasen ist.

Leider erhalte ich immer folgende Meldung beim Booten dieses Kernels:
Kernel Panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

Ich habe die hier aufgeführten Kernel-Optionen alle aktiviert:
http://de.gentoo-wiki.com/USB_Mass_Storage_Ger%C3%A4te
Zusätzlich habe ich noch Ext3 einkompiliert (Das Dateisystem der Root- und Bootpartition).

Zudem habe ich die Treiber für meinen Raid-Controller gefunden und auch aktiviert. (Sollte aber eigentlich nicht nötig sein, geht ja über USB).
Grub habe ich wie im Gentoo Handbuch beschrieben konfiguriert (ohne initramfs): http://www.gentoo.org/doc/de/handbook/handbook-amd64.xml?part=1&chap=10

Weiss jemand wo das Problem liegen könnte?

bei Antwort benachrichtigen
KarstenW Yves3 „Das muss doch eigentlich genau gleich sein wie beim Genkernel, oder nicht?...“
Optionen

Vielleicht hat sich die Gerätedatei geändert durch das Neukompilieren des Linuxkernels.
Ich denke aber eher das du einen Treiber vergessen hast.
Alle Treiber die du für die / Partition brauchst, müssen monolitisch in den Kernel (Datei bzImage) kompiliert werden.
Alle anderen Treiber für Sound u.s.w. können als Modul übersetzt werden. Der Grund dafür ist, das ein Kernelmodul erst geladen werden kann nach dem die / Partition gemounted wurde.
Um ein Kernelmodul zu laden muß das Programm modprobe gestartet werden können , was sich wiederum auf der / Partion befindet.
Der Zeitpunkt für das Laden eines Kernelmodules ist beim Rechnerstart ungünstig.

Die RAM Disk ist bei einem selbst übersetzen Kernel nicht notwendig. Die RAM Disk ist eine Notlösung um das Problem mit den Kernelmodulen zu umgehen.
Die Maintainer die den Standardkernel übersetzen wollen den Kernel nicht mit nutzlosen Treibern überfüllen. Sie können nicht wissen ob ein Anwender von SCSI ,SATA oder IDE booten will.
Deshalb werden bestimmte Treiber in die RAM Disk ausgelagert um sie nur bei Bedarf zu laden, ohne sie in den Kernel fest einzukompilieren.

Du mußt die Treiber für die USB Festplatte (usb-storage, SCSI Festplattentreiber nicht vergessen, Treiber für USB Controller u.s.w.) monolitisch in den Kernel kompilieren, damit der Kernel die / Partition mounten kann, die sich wiederum auf der USB Festplatte befindet.
Wie schon gesagt wenn du die USB Treiber als Modul übersetzt, dann können die Treiber zu diesem Zeitpunkt nicht geladen werden, weil der Linuxkernel noch nicht auf die / Partition zugreifen kann.


PS: Allein schon wegen dieser Notlösung mit der RAM Disk übersetze ich einen eigenen Linuxkernel. Diese RAM Disk macht machmal auch Probleme (habe ich gehört).

PPS: Sichere die Konfigurationsdatei /usr/src/linux-source???/.config. nach /boot oder auf einen USB Stick.
Wenn du mal ein Sicherheitsupate installierst, brauchst du diese Datei nur in das verzeichnis /usr/src/linux-source?? zurückkopieren und mußt den Linuxkernel nur noch mal neu übersetzen.
Du kannst die erneute Konfiguration sparen.









Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen