Warum schlägt der Bootvorgang mit meinem benutzerdefinierten Kernel beim mknod-Schritt fehl?

Warum schlägt der Bootvorgang mit meinem benutzerdefinierten Kernel beim mknod-Schritt fehl?

Ich möchte einen benutzerdefinierten Kernel unter Ubuntu erstellen. Ich habe den neuen Kernel konfiguriert und erstellt. Der neue Kernel hat kein Initrd und stammt aus der Vanilla-Quelle. Ich baue diesen neuen monolithischen Kernel nur mit den Treibern, die er benötigt.

Wenn ich versuche, den neuen Kernel zu booten, bleibe ich bei diesem mknodSchritt hängen. Er versucht, mknodneue Geräte wie zu booten /dev/sda1 /dev/vca4. Dies schlägt fehl, weil die Root-Partition schreibgeschützt gemountet ist.

Ich glaube, das Problem ist, dass ich etwas an meiner Hardware verloren habe. Wenn ich mit dem Standard-Ubuntu-Kernel boote, habe ich keine Probleme. Kann mir jemand helfen zu verstehen, warum das passiert?

Antwort1

Beim Booten wird das Root-Dateisystem fast immer schreibgeschützt gemountet, damit Sie fsckdarauf laufen können. Wenn Sie fertig sind, mounten Sie das Root-Dateisystem normalerweise erneut schreibgeschützt, beispielsweise mit:

mount / -o remount,rw

Da Sie jedoch Ubuntu verwenden, sollte das Kompilieren eines Kernels viel einfacher sein. Wenn Sie es nicht bereits verwenden, empfehle ich, kernel-packageden Kernel mit zu kompilieren. Holen Sie sich einfach das Paket und die Kernelquellen, entpacken Sie es und sagen Sie etwas wie

make-kpkg -j3 --initrd binary

Dadurch werden dann .debPakete erstellt, die Sie auf die übliche Weise installieren können ( dpkg -i SOME-FILE.deb)

Antwort2

Sie sollten ein devtmpfsoder haben, tmpfsdas bei eingehängt /devund von verwaltet wird udev; das Verzeichnis ist somit unabhängig vom Status von beschreibbar /. Unter Ubuntu wird dies normalerweise von initramfs eingerichtet; haben Sie eines mit Ihrem Kernel erstellt und geladen?

verwandte Informationen