Исправление арки Ubuntu Multiboot

У меня на ноутбуке предустановлена ​​Ubuntu 16.04. Я установил Windows 10 и Arch. Когда я установил grub для Arch, я заметил кое-что странное: мой раздел ubuntu не был найден os-prober. Затем я открыл раздел, в котором по умолчанию установлена ​​Ubuntu (/dev/sda3), и увидел, что он поддерживает свою отдельную папку boot. Мой настоящий ESP (/dev/sda1) смонтирован в /boot/efi of /dev/sda3 (раздел ubuntu). Более того, Ubuntu загружается напрямую, используя собственный исполняемый файл efi, который находится в efi/ubuntu/shimx64.efi в /dev/sda1 (ESP). Ubuntu поддерживает свои собственные ядра в /boot из /dev/sda3, но Arch установил свои ядра непосредственно в /dev/sda1. Итак, как я могу устранить этот беспорядок и иметь одну заглушку grub внутри efi/grub of /dev/sda1, которая будет управлять моими установками Ubuntu и Arch, используя их отдельные ядра?

1
задан 6 July 2017 в 17:33

1 ответ

Во-первых, я хотел бы разрешить некоторую терминологию: В контексте загрузчиков EFI для Linux, "тупик EFI" обращается к загрузчику, это встроено в само ядро Linux, позволив ядру быть запущенным как программа EFI. Вы, кажется, используете этот термин для обращения к любой программе начальной загрузки EFI, но то использование могло создать беспорядок.

Это имело дело с, os-prober на Arch должен был обнаружить Вашу установку Ubuntu. Я не знаю, почему это не сделало, но как Arch os-prober часть Arch, не Ubuntu, Вы могли бы хотеть спросить об этом на форуме Arch. OTOH, если Вы следуете моему совету, Вы не будете использовать GRUB Arch, таким образом, эта точка станет спорной.

Arch дает зафиксированные имена его ядер, которые не изменяются, когда Вы обновляете ядро, тогда как названия ядра Ubuntu включают строку версии и поэтому изменяются, когда новое ядро установлено. Это важно, потому что конфигурационные файлы GRUB, которые относятся к ядру, создаются ОС, которая управляет GRUB. Таким образом при использовании GRUB Arch необходимо будет реконфигурировать GRUB в Arch каждый раз, когда Вы обновляете ядро Ubuntu. Это, вероятно, будет неловким. При использовании GRUB Ubuntu, OTOH, его конфигурация не должна будет быть обновлена при обновлении ядра Arch. (При установке нового ядра Ubuntu сценарии Ubuntu автоматически обновят GRUB Ubuntu.) Таким образом, этих двух, я рекомендовал бы использовать GRUB Ubuntu, не GRUB Arch.

Можно переключиться на GRUB Ubuntu при помощи efibootmgr в любом распределении:

  1. Ввести sudo efibootmgr видеть список записей. Обратите внимание на BootOrder строка и к Boot#### записи для Arch и Ubuntu. BootOrder строка говорит Вам порядок, в котором компьютер попытается запустить определенные записи загрузки. Учитывая Ваши Ose, возможностями является GRUB Дуги, будет первым в BootOrder список.
  2. После того как Вы определили Ubuntu Boot#### число, можно передать новый порядок загрузки встроенному микропрограммному обеспечению при помощи -o опция к efibootmgr, как в sudo efibootmgr -o 0004,0002,000A. Это устанавливает порядок загрузки для использования Boot0004 во-первых, затем Boot0002 если это перестало работать, и наконец Boot000A если оба из более ранних перестали работать. Детали будут варьироваться для Вас, конечно; необходимо удостовериться, что запись Ubuntu является первой. Что прибывает, после этого, вероятно, будет не важно, хотя я рекомендовал бы удостовериться, что по крайней мере одна известный работавшая запись находится в списке, так, чтобы система загрузилась к чему-то, даже если запись Ubuntu перестанет работать.

После перезагрузки GRUB Ubuntu должен появиться, но он мог бы или не мог бы иметь записи для Arch. Можно работать sudo update-grub генерировать новое меню Ubuntu GRUB и попробовать еще раз. Этот мог бы или не мог бы обнаружить ядро Arch. Если это не делает, можно отредактировать /etc/grub.d/40_custom или используйте GRUB Customizer для добавления записи для Arch. Что-то как следующее должно работать:

menuentry "Arch Linux" {
    set root=(hd0,1)
    linux /vmlinuz-linux root=/dev/sda5 ro quiet splash
    initrd /initramfs-linux.img
}

Это - просто сырой пример и могло, вероятно, быть улучшено. Если ничто иное, необходимо будет, вероятно, измениться root=/dev/sda5 опция указать на истинный корень Arch (/) раздел. Вы могли бы исследовать конфигурацию GRUB Arch или обратиться за помощью на форуме Arch, если Вы хотите изменить к лучшему этот пример, или если у Вас есть проблемы с ним.

Как альтернатива предыдущему, Вы могли использовать что-то другое, чем GRUB. Большинство загрузчиков потребует больше в способе ручной конфигурации, чем GRUB, но что ручная конфигурация, вероятно, будет легче, чем ручная конфигурация GRUB. Посмотрите мою страницу на загрузчиках EFI для Linux для краткого изложения того, что доступно. Мой собственный диспетчер начальной загрузки перенаходки имеет тенденцию быть легче настроить для сценариев мультиначальной загрузки, потому что он активно сканирует для ядер каждый раз, когда он загружается, таким образом, он не страдает от потребности продолжать обновлять конфигурационный файл с каждым обновлением ядра. OTOH, потому что имя ядра Arch не изменяется при использовании GRUB Ubuntu Вы не перенесете от обычного мультираспределения проблем GRUB, поэтому перенаходка не будет улучшением в этом отношении.

Один конечный пункт: С Вашей конфигурацией Ваши ядра Arch хранятся на Вашем Системном разделе EFI (ESP). Это - общая конфигурация Arch, но необходимо быть уверены, что ESP является достаточно большим. Иногда ESP - всего 100 МБ (или очевидно еще меньший), который может оставить мало дополнительного пространства, после того как Ваши ядра существуют. Можно использовать df видеть, в каком количестве пространство используется и доступно на разделе, как df /boot/efi. Если Ваш ESP почти полон, можно хотеть поместить ядра Arch где-то в другом месте. Хотя использование ESP для хранения ядер является обычной практикой в Arch, это не необходимо, таким образом, можно сделать что-то еще.

4
ответ дан 3 December 2019 в 06:53

Другие вопросы по тегам:

Похожие вопросы: