У меня возникла проблема с настройкой порядка загрузки, который я хочу установить на своем компьютере с несколькими вариантами загрузки, содержащем Windows 10 - Ubuntu 15.10 - Fedora 23.
Вот что я сделал: раньше у меня была только двойная загрузка с Windows 10 и Ubuntu 15.10, которая работала так, как и ожидалось:
- Я мог бы настроить его и, например, установить тему.
- Я мог бы легко загрузиться с USBLive.
Поскольку я хотел попробовать другие дистрибутивы Linux, я установил Fedora 23.
Случилось так, что Fedora взяла на себя управление загрузкой. Сначала мне нужно было изменить конфигурацию загрузки Fedora, заменив linux и initrd на linuxefi и initrdefi, чтобы загрузить Ubuntu, как объяснялосьздесь.
Тогда я смогу получить доступ ко всем ОС, установленным на моем компьютере. Но я хочу вернуть загрузочную способность Ubuntu.
Поэтому я сначала попробовал запустить boot-repair из Ubuntu, но это неэффективно.
Затем я попробовал использовать efibootmgr:
$ sudo efibootmgr
Mot de passe [sudo] pour xavier :
BootCurrent: 0004
Timeout: 2 seconds
BootOrder: 0004,0006,0000,0007,0001,0002,0003
Boot0000* Windows Boot Manager
Boot0001* ubuntu
Boot0002 UEFI: IP4 Qualcomm Atheros PCIe Network Controller
Boot0003 UEFI: IP6 Qualcomm Atheros PCIe Network Controller
Boot0004* Fedora
Boot0006* grub
Boot0007* ubuntu
Затем я попробовал изменить порядок и в Ubuntu, и в Fedora:
$ sudo efibootmgr --bootorder 0006,0004,0000,0001,0007,0002,0003
BootCurrent: 0004
Timeout: 2 seconds
BootOrder: 0006,0004,0000,0001,0007,0002,0003
Boot0000* Windows Boot Manager
Boot0001* ubuntu
Boot0002 UEFI: IP4 Qualcomm Atheros PCIe Network Controller
Boot0003 UEFI: IP6 Qualcomm Atheros PCIe Network Controller
Boot0004* Fedora
Boot0006* grub
Boot0007* ubuntu
Но при перезагрузке изменения, которые я сделал с помощью efibootmgr, не применяются, и если я снова спрошу efibootmgr о порядке загрузки, он выдаст мне тот, что с Fedora...
Я думаю, что проблема может быть в разных параметрах, которые я не совсем понимаю, например:
- В чем разница между efi boot, grub и grub2
- Каково влияние защищенной загрузки?
- Что такое устаревший ботинок?
Спасибо всем, кто может мне помочь в получении чистой настройки.
EDIT: Ответ Рода Смита заставил меня понять, что я могу получить больше информации с помощью аргумента -v:
$ sudo efibootmgr -v
BootCurrent: 0004
Timeout: 2 seconds
BootOrder: 0004,0006,0000,0007,0001,0002,0003
Boot0000* Windows Boot Manager HD(2,GPT,e0e2d47c-9086-47d6-b1e5-0ec248d9d6f0,0x12c800,0x96000)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...3................
Boot0001* ubuntu HD(2,GPT,e0e2d47c-9086-47d6-b1e5-0ec248d9d6f0,0x12c800,0x96000)/File(\EFI\UBUNTU\SHIMX64.EFI)
Boot0002 UEFI: IP4 Qualcomm Atheros PCIe Network Controller PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)/MAC(448a5b4783b6,0)/IPv4(0.0.0.0:0<->0.0.0.0:0,0,0)..BO
Boot0003 UEFI: IP6 Qualcomm Atheros PCIe Network Controller PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)/MAC(448a5b4783b6,0)/IPv6([::]:<->[::]:,0,0)..BO
Boot0004* Fedora HD(2,GPT,e0e2d47c-9086-47d6-b1e5-0ec248d9d6f0,0x12c800,0x96000)/File(\EFI\FEDORA\SHIM.EFI)
Boot0006* grub HD(2,GPT,e0e2d47c-9086-47d6-b1e5-0ec248d9d6f0,0x12c800,0x96000)/File(\EFI\GRUB\SHIMX64.EFI)
Boot0007* ubuntu HD(2,GPT,e0e2d47c-9086-47d6-b1e5-0ec248d9d6f0,0x12c800,0x96000)/File(\EFI\UBUNTU\GRUBX64.EFI)
Благодаря этомупочтаот Рода Смита, я понял роль обеих записей ubuntu. Но запись grub, похоже, нежелательна, так как файл не существует:
$ ls -a
. .. Boot fedora Microsoft MSI ubuntu
Может быть, мне следует стереть его?
Затем я попробовал другой порядок:
$ sudo efibootmgr --bootorder 0001,0004,0000,0006,0007,0002,0003
Но, к сожалению, изменения не работают.
Тогда, если я правильно понял ответ Рода Смита, единственное решение - стереть запись Fedora? Это может вызвать некоторые проблемы, если однажды я захочу оставить только Fedora, но до этого времени это позволит мне загрузиться с USBLive?
Спасибо еще раз!
решение1
Начну с ответов на вопросы в конце вашего поста:
- Загрузка в режиме EFI использует собственный режим загрузки прошивки, тогда как загрузка в режиме BIOS/CSM/legacy использует модуль поддержки совместимости, который позволяет загружать старые загрузчики режима BIOS. См.этот вопрос и мой ответ на него на superuser.comдля получения более подробной информации по этой теме.
- GRUB — один изнесколько загрузчиков режима EFI для Linux.(Существуют также версии GRUB для BIOS и других типов прошивок.) GRUB Legacy, он же GRUB 1, никогда официально не поддерживался для EFI, хотя у Fedora была сильно пропатченная версия, которая сейчас является устаревшей. Таким образом, большинство ссылок на GRUB в контексте EFI относятся к GRUB 2.
- Secure Boot — это дополнительная функция EFI, предназначенная для повышения безопасности системы путем блокировки запуска EFI двоичных файлов, которые не имеют криптографической подписи доверенного органа. В принципе, этим органом можете быть вы или кто-то другой. На практике Microsoft владеет единственными общедоступными ключами для Secure Boot и, таким образом, контролирует процесс. К счастью, Microsoft подписывает сторонние двоичные файлы, и Ubuntu использовала это, чтобы заставить Microsoft подписать двоичный файл под названиемПрокладкакоторый, в свою очередь, включает ключ Canonical, который используется для подписи GRUB и ядра Linux в Ubuntu. Обратите внимание, что при двойной загрузке двух дистрибутивов Linux Shim ни одного из дистрибутивов не будет включать ключ для другого дистрибутива. Таким образом, вы должны зарегистрировать ключ другого дистрибутива в списке ключей владельца машины (MOK), что вы можете сделать с помощью утилиты
MokManager.efi
под EFI. Я думаю, чтоsb-updatevar
утилита может делать это и в Linux, но у меня меньше опыта с ней. Смотритездесьдля нескольких ключей в одном удобном месте; вам понадобится.cer
или.der
ключи. Смотритемоя страница о безопасной загрузкедля получения более подробной информации по этой теме.
Что касается вашей основной проблемы, то команда efibootmgr -o
(или efibootmgr --bootorder
)долженgive control to any boot program you specify. Обратите внимание, однако, что вы, вероятно, имели в виду give to control to Boot0001
или Boot0007
, а не Boot0006
-- Ubuntu использует имя ubuntu
, а не grub
, для описания своих собственных загрузочных записей. Вы можете лучше идентифицировать каждую из них, введя sudo efibootmgr -v
, что выдает полные пути к загрузочным записям (идентифицированным с помощью идентификаторов путей EFI, которые длинные и сложные и ссылаются, среди прочего, на номера GUID разделов, которые вы можете получить с помощью gdisk
или некоторых версий blkid
). Таким образом, прежде чем что-либо делать, вы можете попробовать изменить порядок загрузки на правильное значение, а не на Boot0004
.
На практике efibootmgr
изменения иногда не работают из-за ошибок EFI или поврежденных данных в NVRAM машины (где efibootmgr
хранятся данные, которые отображаются и корректируются). Обычно используются три решения таких проблем:
- Удалить ненужные записи-- Иногда удаление нежелательной или дублирующей записи, например,
sudo efibootmgr -b 0004 -B
удалениеBoot0004
, решает проблему. (Хотя вы можете захотеть удалить эту запись, а можете и не захотеть.) Иногда вам может потребоваться удалить несколько загрузочных записей, чтобы система снова заработала.НеОднако удалите записи, которые вам нужны для загрузки. Кроме того, большинство компьютеров имеют записи, которые создает сама прошивка, как двеNetwork Controller
записи в вашем выводе. Удаление этих записей, как правило, нецелесообразно. - Сбросьте прошивку до настроек по умолчанию.-- Большинство EFI предоставляют возможность сбросить все настройки до значений по умолчанию в утилите настройки прошивки. (То, что некоторые называют «экранами настройки BIOS» или как-то похоже — хотя технически EFI не являются BIOS, несмотря на то, что многие люди и даже производители часто называют их таковыми.) Недостатком этого подхода является то, что он, скорее всего, сотретвсезаписи EFI, что делает систему незагружаемой до тех пор, пока вы не воспользуетесь аварийным диском для восстановления хотя бы одной рабочей записи.
- Добавьте свой загрузчик на другую запись-- Этот подход подразумевает копирование или перемещение/переименование желаемого загрузчика для использования имени файла того, что EFI настаивает на запуске. Обычно он используется, когда EFI отказывается запускать что-либо, кроме загрузчика Windows, поэтому в вашем случае он не нужен.
Однако, отступая немного назад, я скажу, что на самом деле не имеет значения, какой GRUB вы используете (Fedora или Ubuntu); по сути, это одно и то же программное обеспечение. Если у вас возникли проблемы с настройкой GRUB Fedora для выполнения того, что вам нужно, вы всегда можете подправить его настройки, но, с другой стороны, настройка GRUB 2 становится крайне сложной, как только вы выходите за рамки некоторых очень простых вещей. По этой причине многие люди, которые используют двойную загрузку нескольких дистрибутивов Linux, предпочитают иметь независимый от дистрибутива загрузчик — либо свой собственный GRUB, либо что-то еще. Мой собственныйменеджер загрузки rEFIndимеет несколько преимуществ для таких конфигураций, таких как отсутствие зависимости от файлов конфигурации для обнаружения обновлений ядра и его независимость от сценариев конфигурации любой данной ОС. Тем не менее, если у вас возникли проблемы с переключением efibootmgr
с одного GRUB на другой, у вас также могут возникнуть проблемы с запуском rEFInd (или любого другого загрузчика). Кроме того, если вы используете Secure Boot, вам может потребоваться зарегистрировать по крайней мере один ключ Secure Boot с вашим MOK, чтобы rEFInd заработал. В этом отношении, если причина, по которой вы хотите перейти на GRUB Ubuntu, заключается в том, что GRUB Fedora не запускает ядра Ubuntu, то проблема, скорее всего, в Secure Boot; добавление ключа Secure Boot для Canonical/Ubuntu должно решить эту проблему.
РЕДАКТИРОВАТЬ:
Boot0001
— это запись, которая, скорее всего, сделает то, что вам нужно, поэтому ее следует поместить в начало списка загрузки; но, похоже, это вам не подходит.
Если вы можете смириться с тем, что Fedora будет отвечать за процесс загрузки, возможно, лучше так и сделать, чтобы не создать каскад новых проблем. Конечно, прямое удаление записи Fedora рискованно, поскольку если вы затем не сможете заставить работать что-либо еще, вы можете остаться неспособными загрузить что-либо.
Вы можете попробоватьотключение безопасной загрузки,при условии, что она в данный момент включена, поскольку эта функция может вызвать проблемы, особенно в сложных настройках.
решение2
Благодаря помощи Рода Смита я наконец нашел решение, как выбрать нужный мне порядок загрузки.
Как он упомянул, чтобы отключить безопасную загрузку, я получил доступ к настройкам BIOS, и, как и ожидалось, безопасная загрузка уже была отключена, но я воспользовался возможностью зайти в настройки BIOS/UEFI, чтобы изменить порядок загрузки без efibootmgr.
Затем я выбрал загрузку сначала с USB-устройства, а затем установил порядок загрузки с жесткого диска, сначала Ubuntu, и это сработало!
Поэтому я определенно считаю, что если efibootmgr по какой-либо причине не может изменить порядок, то лучшим вариантом, и не таким уж сложным, может быть прямой переход к настройкам BIOS/UEFI.
Надеюсь, это поможет другим.
В очередной раз благодарим за помощь.
Ксавье