Ich habe zwei Festplatten, mit zwei entsprechenden Grubs. Einer ist von Arch Linux und der andere von Ubuntu. Mit Archs Grub kann ich in beide Distributionen booten. Wenn ich jedoch Ubuntus Grub verwende, kann ich sowohl Arch als auch Ubuntu sehen, kann aber nicht in Arch booten. Ich bekomme den Fehler:
Kernel offset
End kernel panic. Not syncing: VFS.
Unable to mount root fs on unknown-block.
Ich habe grub.cfg
verglichen für beide Distributionen. In Ubuntus Grub sehe ich einen Eintrag für Arch mit der folgenden Zeile.
initrd /boot/intel-ucode.img
Ich habe es so geändert, dass es der grub.cfg
von Arch folgt :
initrd /boot/intel-ucode.img /boot/initramfs-linux.img
Jetzt kann ich aus Ubuntus Grub in Arch booten. Es scheint, dass Ubuntu diese erforderliche Option nicht standardmäßig anhängt. Wie kann ich Ubuntu dazu bringen, automatisch den richtigen Eintrag zu erstellen?
Bearbeiten
Ich aktualisiere Archs Grub mit grub-mkconfig -o /boot/grub/grub.cfg
. In Ubuntu habe ich beides versucht update-grub
und der rohe Befehl oben (zu dem er aliasiert ist).
Bearbeiten 2
Die unkommentierten Zeilen von /etc/default/grub
GRUB_DEFAULT="saved"
GRUB_SAVEDEFAULT="true"
GRUB_HIDDEN_TIMEOUT_QUIET="true"
GRUB_TIMEOUT="3"
GRUB_DISTRIBUTOR="`lsb_release -i -s 2> /dev/null || echo Debian`"
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""
Akzeptierte Antwort:
Tatsächlich gibt es zwei Dateien, die geändert werden müssen, um dieses Problem zu lösen. Ich habe dies auf meinem Lubuntu 16.04.1 und Manjaro Linux getestet.
Unter Ubuntu:
1) Datei /usr/lib/linux-boot-probes/mounted/40grub2 Es gibt eine Funktion parse_grub_menu, die nicht alle initrd-Parameter verarbeitet. Sie müssen 'case "$1" in ... initrd) ändern ‘:
a) Zuordnung entfernen
initrd="$(echo "$2" ...)"
b) zwei Zeilen anstelle der entfernten hinzufügen:
shift 1
initrd="$(echo "[email protected]" | sed 's/(.*)//')"
2) Datei /etc/grub.d/30_os-prober innerhalb einer for-Schleife die Zuweisung von LINITRD korrigieren:
for LINUX in ${LINUXPROBED}; do
...
LINITRD="`echo ${LINUX} | cut -d ':' -f 5 | tr '^' ' '`"
Der erste Fix berücksichtigt alle verfügbaren initrd-Informationen für Manjaro. Der zweite Fix bereinigt die generierte initrd-Zeile, indem einige „^“-Zeichen in Leerzeichen geändert werden.