GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Wie starte ich Arch Linux mit Initramfs in Ubuntus Grub?

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.


Ubuntu
  1. Ubuntu – Wie kann man verhindern, dass Grub eine grafische Benutzeroberfläche verwendet/startet?

  2. Wie kann ich Ubuntu Server 14.04 mit Nfs über das Netzwerk booten?

  3. Wie kann man Ubuntu und Linux Mint dual booten?

  4. Wie man mit Debian / Ubuntu, Fedora, Arch Linux / Manjaro und mehr in den Konsolenmodus (Textmodus) bootet

  5. So booten Sie Ubuntu in den Wiederherstellungsmodus

So aktualisieren Sie Grub unter Ubuntu und anderen Linux-Distributionen

So installieren Sie den Falkon-Webbrowser unter Ubuntu Linux

So erstellen Sie eine Datei in Ubuntu Linux mit Befehl und GUI

So booten Sie in Ubuntu 20.04 / 18.04 in den Rettungsmodus oder Notfallmodus

So booten Sie in Ubuntu in den Rettungsmodus oder Notfallmodus

So installieren Sie WordPress mit Nginx in Ubuntu Linux