os-prober выдает неправильный UUID для Arch Linux

os-prober выдает неправильный UUID для Arch Linux

До вчерашнего дня все работало, find и os-prober успешно генерировали пункты меню для установки Arch Linux. Однако сегодня, когда я попытался загрузить Arch, я получил ошибку, что корневая файловая система не может быть найдена по UUID, который она пыталась использовать. После некоторых манипуляций мне удалось заставить Arch загрузиться, вручную изменив корень на фактический раздел "/dev/sda7" вместо использования UUID.

Мне было интересно, что может заставить os-prober генерировать эту недействительную конфигурацию только для установки Arch Linux. Он по-прежнему отлично работает для установок openSUSE и Windows 7. Еще одна вещь, которую следует отметить, это то, что он добавил "rw quiet" в конец строки загрузки для Arch Linux. Раньше он этого не делал, и мне интересно, связано ли то, что изменилось, с тем, почему UUID неверен.

Ниже я выложу пункт меню для Arch Linux. Как вы видите, os-prober имеет часть --set-root= 'some UUID' с правильным UUID, но позже при загрузке Linux он имеет -root=UUID='some other irregular UUID'.

Просто для ясности: у меня на этой машине Ubuntu, Arch Linux, openSUSE и Windows 7, но я использую Ubuntu в качестве основной ОС и позволяю ей управлять GRUB и его конфигурациями. Все операционные системы имеют самые последние версии.

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
}

Как вы видите, первые два UUID отличаются от последнего. Первые два правильные, а последний неправильный. Если я заменю последний UUID на '/dev/sda7', то загрузка пройдет без проблем. Я вручную отредактировал grub.cfg, чтобы сделать это, но я хотел бы, чтобы os-prober автоматически вернулся к работе. Спасибо.

решение1

Итак, информация о том, как os-prober просматривает различные файлы grub.cfg для соответствующего /bootкаталога каждой операционной системы, даже если эта ОС не является той, которая установила grub в MBR/EFI, помогла мне решить эту проблему.

Оказывается, предыдущее обновление Arch Linux застряло в каталоге /boot с файлом grub.cfg. Не вдаваясь в подробности, я не установил нужные вещи в Arch для запуска grub-mkconfig, поэтому вместо этого я получил какой-то шаблон в grub.cfg. Это был файл, который сканировал os-prober, и это был файл с неправильным UUID. Мне нужно было отключить os-prober в Arch Linux /etc/default/grub. Затем я запустил sudo grub-mkconfig -o /boot/grub/grub.cfg, который создал правильный файл grub.cfg для Arch, который теперь правильно использует os-prober в Ubuntu. Я буду использовать ту же технику для openSUSE.

Следует отметить, что вместо того, чтобы позволить os-prober самостоятельно генерировать эти пункты меню, вместо этого он использует соответствующий файл grub.cfg каждой ОС, что позволяет иметь разные значения по умолчанию для каждого дистрибутива, что, следовательно, позволяет использовать разные параметры для тихой загрузки с заставкой или для отображения всего процесса загрузки и т. д.

Спасибо за помощь, ребята!

Связанный контент