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 mknod
Schritt hängen. Er versucht, mknod
neue 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 fsck
darauf 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-package
den 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 .deb
Pakete erstellt, die Sie auf die übliche Weise installieren können ( dpkg -i SOME-FILE.deb
)
Antwort2
Sie sollten ein devtmpfs
oder haben, tmpfs
das bei eingehängt /dev
und 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?