Nach dem Versuch, einen erstellten Kernel zu installieren und einen Neustart durchzuführen, erhalte ich die folgende Fehlermeldung:
mount: Mounten von UUID=59c56381-e5ec-4a8b-8c2e-f9c6a66d524c auf /sysroot ist fehlgeschlagen: Kein solches Gerät
Warum passiert das? Wie kann ich das Problem beheben, damit der Bootvorgang ordnungsgemäß funktioniert?
Über das System
- Alpine Linux 3.12_alpha20200319 (Edge) – Alpine Linux Virtual
- Kernel 5.4.31-0-virt
- Ausführung in VirtualBox
Schritte zum Erstellen des Kernels
wget https://mirrors.edge.kernel/pub/linux/kernel/v5.x/linux-5.4.30.tar.xz
tar -xf linux-5.4.30.tar.xz
cp /boot/config-virt /home/name/build/.config
make -C /home/name/linux-5.4.30 O=/home/name/build listnewconfig
make -j4 -C /home/name/linux-5.4.30 O=/home/name/build
cd /home/name/build
make modules_install
Bei den folgenden Schritten bin ich mir unsicher:
cp System.map /boot/System.map-virt
cp arch/x86_64/boot/bzImage /boot/vmlinuz-virt
cp .config /boot/config-virt
Ich führe es nicht aus, make install
weil es arch/x86/boot/bzImage übergibt. Aus diesem Grund VERMUTE ich, dass 32-Bit und 64-Bit installiert werden. Also versuche ich stattdessen, es manuell zu installieren.
Meine extlinux.conf-Datei:
DEFAULT menu.c32
PROMPT 0
MENU TITLE Alpine/Linux Boot Menu
MENU HIDDEN
MENU AUTOBOOT Alpine will be booted automatically in # seconds
TIMEOUT 30
LABEL virt
MENU LABEL linux virt
LINUX vmlinuz-virt
INITRD initramfs-virt
APPEND root=UUID=59c56381-e5ec-4a8b-8c2e-f9c6a66d524c moudles=sd-mod,usb-storage,ext4 quiet rootfstype=ext4
MENU SEPARATOR
Reparaturversuche
(Alle der folgenden Punkte führen immer noch zum selben Fehler)
mkinitfs
Wird vor dem Neustart im/
Verzeichnis ausgeführt- Läuft
extlinux --install /boot
make install
Stattdessen im Build-Verzeichnis ausführen und die Zeile extlinux.conf ändernLINUX vmlinuz-virt
inLINUX vmlinuz
- Habe versucht, die VirtualBox-Speichercontroller auf AHCI, Virtio-SCSI und PIIX4 umzustellen.
Kann hilfreich sein:
Ich habe die im Fehler und in extlinux.conf angegebene UUID geprüft. Sie identifiziert /dev/sda3. Wenn ich jedoch nach dem fehlgeschlagenen Bootvorgang die Notfallwiederherstellungsshell betrete und das Verzeichnis /dev überprüfe, ist es nicht vorhanden. Keine Ahnung, warum.
lsmod zeigt an, dass keine Module geladen sind. Ich gehe davon aus, dass das nicht passieren sollte.
Wenn ich den Bootvorgang fortsetze, indem ich Folgendes eingebe, exit
erhalte ich die Meldung „Kernel Panic“
Dateien
.config -https://github.com/alpinelinux/aports/blob/master/main/linux-lts/config-virt.x86_64
extlinux.conf –https://pastebin.com/QMkePsqS
mkinitfs.conf –https://pastebin.com/rksn7GcN
Antwort1
Wie im Beitrag erwähnt,
lsmod zeigt an, dass keine Module geladen sind. Ich nehme an, das sollte nicht passieren
Das Problem lag darin, dass Module nicht in den Kernel geladen wurden. Die aktuelle Version des Kernels war 5.4.31-0-virt und die erstellte Version war 5.4.30. Die zu installierenden Module wurden in das /lib/modules/5.4.30
Verzeichnis gelegt. Dies führte dazu, dass die Initial-Ram-Disk (initramfs) ohne die richtigen Module für den Kernel erstellt und daher beim Booten nicht geladen wurde.
Um dies zu beheben, sollte nach der Installation der Kernelmodule beim Erstellen des initramfs stattdessen der folgende Befehl verwendet werden:
mkinitfs -o /boot/initramfs-virt 5.4.30
Dieser Befehl schließt die installierten Module für den Kernel 5.4.30 in das initramfs ein, anstatt standardmäßig die uname -r
Version zu verwenden (in diesem Fall 5.4.31-0-virt). Der Kernel kann dann die Module laden -> die Datenträger lesen -> vom erforderlichen Datenträger booten.