Bis gestern hat alles funktioniert und os-prober hat erfolgreich Menüeinträge für die Installation von Arch Linux generiert. Als ich heute jedoch versuchte, Arch zu booten, erhielt ich die Fehlermeldung, dass das Root-Dateisystem unter der versuchten UUID nicht gefunden werden konnte. Nach einigem Herumprobieren konnte ich Arch booten, indem ich das Root-Dateisystem manuell auf die eigentliche Partition „/dev/sda7“ änderte, anstatt die UUID zu verwenden.
Ich habe mich gefragt, was die Ursache dafür sein könnte, dass os-prober diese ungültige Konfiguration nur für die Installation von Arch Linux generiert. Bei den Installationen von openSUSE und Windows 7 funktioniert es immer noch einwandfrei. Eine weitere zu beachtende Sache ist, dass es „rw quiet“ am Ende der Bootzeile für Arch Linux hinzugefügt hat. Das war vorher nicht der Fall, und ich frage mich, ob die Änderung damit zu tun hat, warum die UUID falsch ist.
Unten werde ich den Menüeintrag für Arch Linux posten. Wie Sie sehen, hat os-prober den Teil --set-root= 'some UUID' mit der richtigen UUID, aber später beim Booten von Linux hat es -root=UUID='some other wrong UUID'.
Nur zur Klarstellung: Ich habe Ubuntu, Arch Linux, openSUSE und Windows 7 auf diesem Rechner, aber ich verwende Ubuntu als Hauptbetriebssystem und lasse es GRUB und seine Konfigurationen verwalten. Alle Betriebssysteme sind auf dem neuesten Stand.
menuentry 'Arch (on /dev/sda7)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-b9522736-878c-49e3-b30d-ad65589aa1d9' {
insmod part_msdos
insmod ext2
set root='hd0,msdos7'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7 --hint-baremetal=ahci0,msdos7 b9522736-878c-49e3-b30d-ad65589aa1d9
else
search --no-floppy --fs-uuid --set=root b9522736-878c-49e3-b30d-ad65589aa1d9
fi
linux /boot/vmlinuz-linux root=UUID=ad4103fa-d940-47ca-8506-301d8071d467 rw quiet
initrd /boot/initramfs-linux.img
}
Wie Sie sehen, unterscheiden sich die ersten beiden UUIDs von der letzten. Die ersten beiden sind richtig und die letzte ist falsch. Wenn ich die letzte UUID durch „/dev/sda7“ ersetze, bootet es ohne Probleme. Ich habe die grub.cfg manuell bearbeitet, um dies zu tun, aber ich möchte, dass os-prober wieder automatisch funktioniert. Danke.
Antwort1
Ok, also die Informationen darüber, wie os-prober in verschiedenen grub.cfg-Dateien für das jeweilige Verzeichnis jedes Betriebssystems sucht, /boot
selbst wenn dieses Betriebssystem nicht dasjenige ist, das Grub im MBR/EFI installiert hat, haben mir geholfen, dieses Problem zu lösen.
Es stellte sich heraus, dass ein vorheriges Update von Arch Linux eine grub.cfg-Datei im /boot-Verzeichnis hängen ließ. Ohne zu sehr ins Detail zu gehen, hatte ich unter Arch nicht die richtigen Dinge installiert, um grub-mkconfig auszuführen, also bekam ich stattdessen eine Art Vorlage in grub.cfg. Dies war die Datei, die os-prober scannte, und es war die Datei, die die falsche UUID hatte. Was ich tun musste, war, os-prober unter Arch Linux auszuschalten /etc/default/grub
. Dann führte ich aus sudo grub-mkconfig -o /boot/grub/grub.cfg
, wodurch eine richtige grub.cfg-Datei für Arch erstellt wurde, die Ubuntus os-prober jetzt richtig verwendet. Ich werde dieselbe Technik für openSUSE verwenden.
Zu beachten ist, dass Sie os-prober diese Menüeinträge nicht alle selbst generieren lassen, sondern sie stattdessen aus der jeweiligen grub.cfg-Datei des jeweiligen Betriebssystems ziehen lassen können. So können Sie für jede Distribution unterschiedliche Standardwerte festlegen und mit unterschiedlichen Parametern einen leisen Start mit Splash oder die Anzeige des gesamten Startvorgangs usw. erreichen.
Danke für die Hilfe, Leute!