Ich möchte mir für ein System gern einen monolithischen Kern bauen, kann dann aber nicht mehr booten.
Ich kürze die zweitägige Vorgeschichte hier mal ab und stelle fest, dass ich einen Kern habe, der Module und initramfs unterstützt, wo aber alle notwendigen Treiber fest einkompiliert sind. Die Kiste bootet und lsmod liefert eine leere Ergebnismenge.
Deaktiviere ich nun den initramfs-support mittels make menuconfig, baue und installiere, aktualisiere den Bootloader und starte letztendlich das System neu, kommt es nicht wieder.
Erschwerend ist, es steht entfernt von mir ohne KVM, ich kann aber ein rescue-System booten und innerhalb einer chroot alles wieder fixen.
Was also kann initramfs, was mein monolithischer Kern nicht kann? Das System hat 2 HDD die mehrere md-Raid 1 ergeben. Entsprechende Module sind natürlich im Kern. Grub2 arbeitet mit UUID für root=. Was braucht es noch für Infos um mir helfen zu können?
Mit freundlichen Grüßen / Kind regards Ronny Seffner -- Ronny Seffner | Alter Viehweg 1 | 01665 Klipphausen www.seffner.de | ronny@seffner.de | +49 35245 72950 7EA62E22D9CC4F0B74DCBCEA864623A568694DB8
Ronny Seffner ronny@seffner.de (Mi 11 Nov 2015 20:14:19 CET):
Ich möchte mir für ein System gern einen monolithischen Kern bauen, kann dann aber nicht mehr booten.
…
Was also kann initramfs, was mein monolithischer Kern nicht kann? Das System hat 2 HDD die mehrere md-Raid 1 ergeben. Entsprechende Module sind natürlich im Kern. Grub2 arbeitet mit UUID für root=. Was braucht es noch für Infos um mir helfen zu können?
<nitpicking> Monolithisch ist der Kern immer. </nitpicking>
Das initramfs macht z.B. das Root-FS verfügbar, und findet m.W. raus, welches wirkliche Device sich hinter root=UUID=47-11-08-15 verbirgt.
Was passiert, wenn Du root=/dev/sda1 machst? (oder wie auch immer das Device heisst). Woher weiss dann aber der Kernel, wo /dev/sda1 ist? Der Kernel muss ja dann ohne fremde Hilfe drauf kommen, dass das 8:1 ist. Aber das könnte eigentlich klappen.
Moin Heiko
<nitpicking>
Immer diese Anglizismen - was ist mit der Erhaltung regionalen Kulturgutes? Ich bin auch für Dialekt ;-)
Monolithisch ist der Kern immer.
Aus der Betrachtungsweise "was ist der Kern"? Was wäre die korrekte Bezeichnung die ich suche?
Wikipedia dazu : "Ein monolithischer Kernel ist ein Kernel, in dem nicht nur Funktionen zu Speicher- und Prozessverwaltung und zur Kommunikation zwischen den Prozessen, sondern auch Treiber für die Hardwarekomponenten und möglicherweise weitere Funktionen direkt eingebaut sind."
Ich verstehe die Betonung u.a. auch "direkt eingebaut". Naja.
Das initramfs macht z.B. das Root-FS verfügbar, und findet m.W. raus, welches wirkliche Device sich hinter root=UUID=47-11-08-15 verbirgt.
Da drin fand ich - mal ein einem anderen System geschaut - Module für storage, blockdevices, filesystems und networking sowie 'mdadm' und 'udevd' ergänzt um einige Skripte, die sich mir beim Überfliegen nicht komplett erschlossen haben.
Was passiert, wenn Du root=/dev/sda1 machst? (oder wie auch immer das
Was genau passiert, kann ich mangels Bildschirm nicht sagen - das Ergebnis ist aber wieder, dass die Kiste für mich nicht erreichbar ist. Ich habe es auch mit /dev/md2 probiert (root ohne /boot)
Device heisst). Woher weiss dann aber der Kernel, wo /dev/sda1 ist? Der Kernel muss ja dann ohne fremde Hilfe drauf kommen, dass das 8:1 ist. Aber das könnte eigentlich klappen.
Das muss es, habe eine Kiste daneben, nicht mit identischer Hardware, aber identischem Aufbau: - sda + sdb ergeben md - grub verwendet selbst UUID und/oder DISK-ID - grub übergibt an den kernel (ohne initramfs) "root=/dev/md2" = funktioniert
Was ist jetzt anders? Ich habe sogar den gleichen Kern probiert, der eigentlich alle notwendigen Module enthält - als ich einen KVM hatte sah ich eine panic "unable to find root-fs" oder so. Im Grunde unterscheidet sich nur die Hardware etwas und das md auf der neuen Kiste ist nicht 0.90 sondern 1.2. Und da kommt mir eine Idee, ich antorte bei Christian weiter ...
Mit freundlichen Grüßen / Kind regards Ronny Seffner -- Ronny Seffner | Alter Viehweg 1 | 01665 Klipphausen www.seffner.de | ronny@seffner.de | +49 35245 72950 7EA62E22D9CC4F0B74DCBCEA864623A568694DB8
Hallo Ronny,
On Wed, Nov 11, 2015 at 20:14:19 +0100, Ronny Seffner wrote:
Ich möchte mir für ein System gern einen monolithischen Kern bauen, kann dann aber nicht mehr booten.
Wenn Du mit "monolithisch" einen Kernel ohne Modulsupport meinst: Was versprichst Du Dir davon?
Wenn Du das Laden/Entladen von Modulen ab einem bestimmten Zeitpunkt verhindern willst, dann geht das auch mit einem ganz normalen Distro-Kernel:
echo "1" > /proc/sys/kernel/modules_disabled
Dieses /proc-File kann danach nicht mehr auf "0" zurueckgesetzt werden, der Modulsupport bleibt bis zum Reboot deaktiviert.
Typischerweise macht man das, nachdem sichergestellt ist, dass alle benoetigten Module geladen sind. Notfalls kann man dies durch entsprechende Eintraege in /etc/modules erzwingen.
Was also kann initramfs, was mein monolithischer Kern nicht kann?
Eine ganze Menge :) RAID zusammenbasteln, Crypto-FS mounten, UUID-basiert das Rootfs finden...
Speziell bei Software-RAID (/dev/md*) ist es inzwischen wohl deprecated, die RAID Autodetection vom Kernel selbst durchfuehren zu lassen. Man muss also zwingend ein initramfs einsetzen.
Gruss, Chris
Wenn Du mit "monolithisch" einen Kernel ohne Modulsupport meinst: Was versprichst Du Dir davon?
Ach nee, nicht diese Diskussion. Ah, als Anregung ... ok.
Wenn Du das Laden/Entladen von Modulen ab einem bestimmten Zeitpunkt verhindern willst, dann geht das auch mit einem ganz normalen Distro-Kernel:
echo "1" > /proc/sys/kernel/modules_disabled
Dieses /proc-File kann danach nicht mehr auf "0" zurueckgesetzt werden, der Modulsupport bleibt bis zum Reboot deaktiviert.
Wow, damit lasse ich mich auf die Frage oben ein.
Speziell bei Software-RAID (/dev/md*) ist es inzwischen wohl deprecated, die RAID Autodetection vom Kernel selbst durchfuehren zu lassen. Man muss also zwingend ein initramfs einsetzen.
Und das brauchte mich auf die Idee mir das md und den Kern näher anzusehen: Auf der "guten" Kiste ist das md in Version 0.90, auf der "bösen"(tm) 1.2. Kann es jetzt sein, dass der Automounter des Kernels 1.2 nicht kann/will? Ich finde dazu gerade keine konkrete Aussage und werde mich wohl jetzt mit kerneln mit initramfs und modules_disabled auseinandersetzen
Mit freundlichen Grüßen / Kind regards Ronny Seffner -- Ronny Seffner | Alter Viehweg 1 | 01665 Klipphausen www.seffner.de | ronny@seffner.de | +49 35245 72950 7EA62E22D9CC4F0B74DCBCEA864623A568694DB8
Hi Ronny,
On Thu, Nov 12, 2015 at 11:50:09 +0100, Ronny Seffner wrote:
[RAID]
Und das brauchte mich auf die Idee mir das md und den Kern näher anzusehen: Auf der "guten" Kiste ist das md in Version 0.90, auf der "bösen"(tm) 1.2. Kann es jetzt sein, dass der Automounter des Kernels 1.2 nicht kann/will?
s/Automounter/RAID Autodetect/
Scheint wirklich nur mit 0.9 zu funktionieren: https://raid.wiki.kernel.org/index.php/Autodetect
Ich muss allerdings dazu sagen, dass ich mit RAID ziemlich wenig erfahrung habe.
Gruss, Chris
Christian Perle chris@linuxinfotag.de writes:
Hi Ronny,
On Thu, Nov 12, 2015 at 11:50:09 +0100, Ronny Seffner wrote:
[RAID]
Und das brauchte mich auf die Idee mir das md und den Kern näher anzusehen: Auf der "guten" Kiste ist das md in Version 0.90, auf der "bösen"(tm) 1.2. Kann es jetzt sein, dass der Automounter des Kernels 1.2 nicht kann/will?
s/Automounter/RAID Autodetect/
Scheint wirklich nur mit 0.9 zu funktionieren: https://raid.wiki.kernel.org/index.php/Autodetect
Genau deshalb baue ich MD-RAIDs mit 0.90-Superblocks
mdadm ... --metadata 0.90
Geht leider nicht mehr für Platten ab 4 TB.
Sven
lug-dd@mailman.schlittermann.de