1

Сначала позвольте мне объяснить мои текущие настройки. Недавно я очистил два моих основных диска и преобразовал их в GUID. На основном диске (в моем случае это sdb) я создал загрузочный раздел EFI (ESP) в /dev /sdb1. У меня есть другие разделы, в которых я сделал новую установку mint17.1, которая прекрасно настраивается для загрузки через EFI, а затем GRUB2. Так что без проблем, любые новые установки позаботятся о регистрации себя с загрузчиком efi в ESP.

Теперь только если я ясно понял этот процесс! Спустя несколько часов чтения UEFI, и у меня все еще нет простого и ясного представления о процедуре и о том, как сделать это вручную самостоятельно, и какие инструменты лучше всего использовать? Меня вдохновили посты с такими названиями, как "UEFI/Grub2: Story of my Nightmare".

Итак, вопрос:

На первом разделе моего второго диска (sda1) я восстановил копию установки mint17 (ubuntu14.04) до того, как начал этот путь. Это было настроено, чтобы загрузить наследство. Как мне конвертировать его в загрузчик через EFI и зарегистрировать его в загрузчике (папка в ESP с .efi)?

Наличие работающей установки на другом разделе означает, что я могу вносить любые необходимые изменения без необходимости загрузки с USB-накопителя.

Вот что я думаю о самых полезных постах, которые я мог найти, о том, что я хочу сделать

https://askubuntu.com/questions/510856/how-to-boot-load-the-kernel-using-efi-stub-efistub-loader

Как переустановить GRUB2 EFI?

Лучшей помощью будет пошаговая процедура. Мое лучшее общее представление о том, как это сделать, - отредактировать fstab, чтобы загрузить раздел efi, скопировать файл Kernal, chroot? в соответствующий раздел (ОС) и запустите grub2, чтобы заставить его работать с папкой EFI? Будет весело услышать, как я потерян. :).

Хороший полный ответ будет ОЧЕНЬ полезен для сообщества, потому что, хотя я теперь много знаю о загрузке UEFI, "секрет" все еще, похоже, состоит в том, как использовать инструменты для манипулирования им. Я не могу быть единственным неуверенным, не так ли?

Во-вторых, пока я спрашиваю, как можно изменить имена записей в загрузочном меню EFI. Я подумал, что, возможно, это будет так же просто, как изменить имя каталога в каталоге EFI в ESP, но ... нет. Таким образом, должен быть какой-то инструмент для манипулирования теми файлами .efi, которые, как я полагаю, содержат имя ОС для загрузки, которая используется в меню EFI?

Кстати, я сделал небольшой раздел (1 ГБ) для использования в качестве загрузчика Grub. Это лучшее решение? Я не против EFI для мультизагрузки, и я уже загрузил refind для меню, если я хочу. Здесь был пост, который заставил меня рассмотреть это и создать раздел на случай, если я захочу попробовать. http://devil-detail.blogspot.com/2013/07/install-grub2-on-gpt-disk-dedicated-partition.html

Да, дьявол в деталях (помогите с этим, пожалуйста)

2 ответа2

2

Сначала немного основ ....

Есть два критических класса программ, вовлеченных в загрузку компьютера, под BIOS или EFI:

  • Диспетчер загрузки - эта программа представляет меню или иным образом позволяет пользователю выбрать, какую ОС загружать.
  • Загрузчик - эта программа загружает ядро ОС в память и запускает его.

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

Встроенный менеджер загрузки EFI может управляться из операционной системы путем редактирования переменных EFI. В Linux эта задача обрабатывается утилитой efibootmgr , которая является типичным обычным инструментом командной строки Linux. Таким образом, это не очень удобно для пользователя. Когда вы загружаете компьютер, вы обычно получаете доступ к менеджеру загрузки, нажимая клавишу Esc или функциональную клавишу, но детали могут различаться для разных компьютеров.

Слегка переключая передачи, GRUB разработан, чтобы работать почти одинаково для систем BIOS и EFI. Под BIOS GRUB устанавливает часть себя в Master Boot Record (MBR), которая является первым сектором на жестком диске. BIOS жестко запрограммирован для выполнения кода в MBR, поэтому GRUB получает контроль над компьютером при загрузке, представляет меню и загружает ядро или перенаправляет процесс загрузки на другой загрузчик, хранящийся в другом месте. В EFI процесс немного отличается: GRUB регистрируется в NVRAM EFI (во время установки через efibootmgr , даже если вы не вводили команду самостоятельно). Затем менеджер загрузки EFI запускает GRUB, который представляет меню и запускает ядро или перенаправляет на другой загрузчик.

Другое ключевое отличие между BIOS и EFI заключается в том, что загрузчики BIOS полностью или частично хранятся в MBR и других "скрытых" частях диска. Загрузчики EFI и менеджеры загрузки (кроме встроенного менеджера загрузки) хранятся в ESP как обычные файлы. Это делает EFI немного легче в управлении - по крайней мере, теоретически и когда вы это понимаете.

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

  • GRUB 2 - это стандартная версия большинства дистрибутивов, поэтому обычно легко начать работу с новой установкой. OTOH, это довольно загадочно и трудно работать вручную. Под BIOS и EFI он может читать ядра практически из любого места.
  • GRUB Legacy - Этот загрузчик официально не работает под EFI, но Fedora выпустила исправленную версию, которая работала. Этот вариант больше не поддерживается. Как и GRUB 2, он может загружать ядра из большинства файловых систем Linux.
  • ELILO - этот загрузчик моделируется после загрузчика LILO для BIOS. Это легко настроить, если вы привыкли к LILO. Это требует, чтобы ваши ядра хранились в ESP. Он больше не активно развивается, но все еще выполняет свою работу.
  • SYSLINUX - этот загрузчик в общих чертах похож на ELILO и связан с одноименным загрузчиком BIOS. Как и ELILO, оно требует, чтобы ваше ядро хранилось в ESP.
  • Загрузчик-заглушка EFI. Само ядро Linux включает в себя загрузчик EFI, поэтому вы можете загрузить свою систему, используя только встроенный менеджер загрузки EFI и зарегистрированное непосредственно в нем ядро. Таким образом, для запуска ядра непосредственно из диспетчера загрузки EFI необходимо, чтобы ядро хранилось в ESP (или, по крайней мере, в разделе FAT, или иногда в HFS+ на компьютерах Mac). Одна из публикаций, на которую вы ссылались, была посвящена такой конфигурации, но такой тип установки встречается редко и я не рекомендую ее, потому что она негибкая.

В дополнение к этим загрузчикам, есть несколько специализированных менеджеров загрузки EFI, которые могут помочь расширить ваши возможности:

  • gummiboot - эта программа представляет собой простой менеджер загрузки в текстовом режиме, который может запускать любой из предыдущих загрузчиков, включая ядро Linux; однако он может перенаправить процесс загрузки только на программу, хранящуюся в ее собственном разделе, который обычно является ESP. Таким образом, чтобы использовать gummiboot для непосредственного запуска ядра (через поддержку заглушки EFI), ваше ядро должно храниться в ESP.
  • rEFIt - эта программа была создана на Mac и остается популярной на этой платформе, хотя rEFIt была заброшена в течение многих лет. Он может перенаправить процесс загрузки на любой раздел, который может прочитать EFI, и rEFIt включает пару драйверов EFI, позволяющих EFI читать тома ext2/3fs или ReiserFS. Необычно, что rEFIt активно сканирует загрузчики при запуске, что делает его очень адаптируемым в мультизагрузочной среде. Однако запускать ядра Linux не очень хорошо, потому что rEFIt не может передать ядрам пользовательские параметры, которые обычно требуются для нормальной работы.
  • REFInd - это мой собственный форк REFIt. Добавлены драйверы для ext4fs, Btrfs, NTFS, HFS+ и ISO-9660; и это позволяет передавать параметры в ядра Linux. Поэтому комбинация rEFInd с загрузчиком заглушек EFI обеспечивает большую часть гибкости GRUB с точки зрения расположения ядра. rEFInd также сохраняет активное сканирование REFIt для параметров загрузки, что может значительно снизить трудоемкость поддержки системы с несколькими установленными дистрибутивами Linux; когда вы устанавливаете (или удаляете) новое ядро в любом дистрибутиве, rEFInd получает изменения при следующей загрузке.

Мне немного непонятно, какие у вас текущие настройки, но у меня сложилось впечатление, что у вас есть как минимум две установки Linux, включая хотя бы одну, которая ранее загружалась в режиме BIOS. Если это так, вы можете рассмотреть возможность использования rEFInd. Если он установлен в качестве загрузочной программы по умолчанию, он будет активно сканировать вашу систему на наличие ядер и создавать меню при каждой загрузке. Вам потребуется установить драйверы файловой системы EFI для файловой системы, в которой хранятся ваши ядра, но сценарий установки может позаботиться об этой детали за вас. Вам также может понадобиться создать файлы конфигурации с именем /boot/refind_linux.conf для каждого дистрибутива; этот файл содержит параметры статической загрузки. (Однако иногда это не нужно; это зависит от структуры вашего раздела и потребностей конкретного дистрибутива.) Если вы устанавливаете rEFInd, используя его скрипт установки в Linux, refind_linux.conf будет создан автоматически для этого дистрибутива, но вам может потребоваться создать его эквивалент для вашего другого дистрибутива (ов). Документация rEFInd включает в себя страницу по загрузке Linux, которая может помочь вам сделать все это.

Если вы не хотите использовать rEFInd, у вас должна быть возможность получить GRUB одного дистрибутива для подбора ядер других установок. Если вы можете загрузить один дистрибутив через GRUB, то вам нужно выполнить update-grub (в Ubuntu или аналогичных дистрибутивах) или grub-mkconfig -o /boot/grub/grub.cfg . (Однако вам может потребоваться изменить этот выходной путь; в некоторых дистрибутивах grub.cfg может храниться в другом месте.) Проблема в том, что если и когда вы обновите ядро в этом втором дистрибутиве, вам нужно будет загрузить первый и перестроить файл конфигурации GRUB, чтобы GRUB распознал новое ядро. Альтернативой является установка GRUB дважды, по одному разу для каждого дистрибутива. Затем вы можете использовать менеджер загрузки EFI, чтобы выбрать, какой GRUB запускать, или настроить каждый GRUB с записью для другого.

Как видите, у вас много вариантов. Дополнительную информацию по этой теме см. На моей веб-странице, посвященной загрузчикам EFI для Linux.

Я понимаю, что это не пошаговая процедура, которую вы хотели, но сочетание понимания того, как все работает, и знание вашей собственной точной настройки обычно работают лучше, чем любая процедура "поваренной книги", особенно когда процедуры так зависит от деталей конфигурации, входящей в процесс.

1

После некоторой настойчивости я нашел пошаговое работоспособное решение для перехода с BIOS-Legacy на EFI bboting, поэтому сейчас я отвечу на свой вопрос.

Это относится только к загрузке нескольких копий unbuntu (или некоторой версии) и предполагает, что вы начинаете с нуля с новым или повторно используемым диском и что ваша материнская плата довольно новая (у меня сборка 2014 года выпуска). Если вы перемещаете свою текущую установку bios/mbr, а не делаете новую установку, я предлагаю создать образ раздела с помощью fsarchiver с использованием qt-fsarchiver. Это предполагает, что ваша текущая установка Linux поддерживает UEFI. Последние выпуски убунуту (и ароматов) поддерживают UEFI.

Шаг за шагом я теперь зеркалирую и тестирую копии моей основной операционной системы, установленной на той же машине, которые можно загружать из refind!

Шаг за шагом

  • Создайте постоянную USB-флешку с UEFI и немного Linux (см. Примечания ниже)

  • Загрузите эту карту как UEFI, что подразумевает ввод настроек cmos и уверенность, что ваши настройки будут загружать UEFI. Там вы должны увидеть свой USB, как правило, по названию производителя. Лучше всего просто отключить любые старые варианты загрузки, чтобы вы были уверены. При первой загрузке он перемещает большинство файлов ОС в раздел casper-rw и монтирует его как файловую систему. Если вы поместите что-то туда раньше, вам придется поискать его в папке /media.

  • С загруженной флешки Используя Gparted

    а. Создайте новую таблицу разделов GPT на том, что будет вашим основным диском (чистит диск!)

    б. Теперь создайте раздел для ESP, 256 МБ или более, отформатированный Fat32, пометьте его как ESP. Отметьте его как загрузочный (он будет помечен как загрузочный EFI, поскольку теперь он является GPT-диском)

  • Установите ссылку. http://www.rodsbooks.com/refind/ Существует три метода (пакет deb, сценарий или руководство). Я предлагаю загрузить последний архив bin.zip. Распакуйте его и запустите скрипт установки из разархивированного каталога refind.

sudo ./install.sh

Он найдет и смонтирует ваш новый раздел ESP/EFI. Если он жалуется на то, что efibootmgr не работает должным образом, вам, вероятно, нужно установить его. Я сделал. Затем просто перезапустите установочный скрипт.

sudo apt-get install efibootmgr

Наконец, ESP/EFI все еще будет монтироваться в boot/efi, и вам нужно будет скопировать каталог drivers_x64 (мой 64-битный компьютер), найденный в zip-архиве в каталоге refind (там же, где и в другом месте).

  • Теперь удалите свою палку и попробуйте перезагрузиться. Войдите в Cmos и посмотрите, является ли refind одним из доступных для загрузки устройств UEFI. Я сделал это вторым после моей палки. Таким образом, когда флешка находится внутри, я загружаюсь с флешки, в противном случае не получаю повторную загрузку на ESP жесткого диска.

  • Теперь вы можете установить ОС (efi) на другой раздел, например, Mint, на только что созданную вами флешку. В каталоге /boot этой установки может содержаться файл refind_linux.conf, который можно настроить. Я выбираю просто переименовать (удалить его). Это не обязательно необходимо и может вызвать проблемы с загрузкой, если настроено неправильно. Я рекомендую вам выбрать четкие метки разделов, так как рефинд подбирает их и использует их в меню. Это позволит избежать необходимости настраивать основной файл refind.conf, который находится в каталоге EFI /refind. Я решил только раскомментировать / изменить эти строки. Смотрите отличную документацию Рода для всех вещей REFIfind.

    • scan_delay 5
    • тайм-аут 10
    • default_selection "метка вашего раздела"

ЗАМЕТКИ:

Изготовление флешки

  • Используйте 4 ГБ мин палку

  • Используйте gparted для установки таблицы GPT на флешку, создайте раздел размером 2 ГБ и отформатируйте его как fat32, пометьте его как "загрузочный", установите флаг загрузки (это будет EFI)

  • Разделите / отформатируйте остаток ext4 с меткой «casper-rw».

  • Смонтируйте iso с поддержкой efi (я использовал linux mint 17.1) и раздел "boot" и скопируйте содержимое iso.

  • отредактируйте файл boot / grub / grub.cfg на USB-накопителе, отредактируйте первый раздел загрузки и добавьте параметр "persistent" следующим образом:

linux /casper/vmlinuz file=/cdrom/preseed/linuxmint.seed boot=casper iso-scan/filename=${iso_path} quiet splash persistent -- http://shallowsky.com/blog/linux/install/ubuntu-persistent -live-cd.html


Хотя у вас есть этот смонтированный файл, я бы, вероятно, вырезал и вставлял этот текст вместе с URL-адресом этого поста в текстовый файл и сохранял бы его там же.


Одна из неприятных вещей в Mint состоит в том, что, если не на ноутбуке, он все равно будет загружать дисплей ноутбука, и, таким образом, вы не сможете ничего "увидеть". Чтобы исправить это, щелкните правой кнопкой мыши по открытому терминалу или используйте cntrl-alt-t. Затем запустите «cinnamon-settings», перейдите к настройкам дисплея и выключите дисплей ноутбука и сделайте ваш основной дисплей по умолчанию.


Позже, после загрузки USB, я также устанавливаю qtfsarchiver, чтобы я мог восстановить свои архивы fsarchiver с графическим интерфейсом.

При восстановлении архива fsarchiver на раздел вам нужно будет запросить новый uuid после восстановления (в gparted) и соответственно отредактировать fstab, а также удалить / исправить любой refind_linux.conf в каталоге / boot.


ОБНОВЛЕНИЕ: Восстановление из отсутствующего меню перефразирования

Я пришел к быстрому восстановлению (при условии, что у вас уже есть готовый загрузочный флеш-накопитель EFI USB).

NB. Если вы решите использовать refind ppa для поддержания текущей версии, которую я обнаружил при каждом обновлении, вы потеряете свою конфигурацию и, следовательно, загрузитесь. Поэтому я советую обновлять только вручную, если вы готовы пройти процедуру, описанную ниже.


Исправление потерянной настройки NVRAM на материнской плате (прошивка больше не отображает REFIND в качестве загрузочного)

<user> == ваш текущий логин

Загрузитесь с USB-накопителя. Создайте каталог восстановления (на рабочем столе) и откройте в нем терминал.

  1. Смонтируйте ваш раздел efi(esp) (sdxx) в /media //EFI /boot /efi и создайте резервную копию раздела efi /esp

sudo mount /dev/sdxx /media/<user>/EFI/boot/efi cp -R /media/<user>/EFI/boot/efi efi-copy-xx-xx-201x

  1. Проверьте, есть ли у вас последний refind bin.zip. Если не скачать (из sourceforge и распакуйте его в папку восстановления загрузочного восстановления)

  2. CD в последнюю распакованную директорию и установить ее (версия, предшествующая .10, использовать только install.sh)

sudo ./refind-install --root /media/<user>/EFI/boot/efi

Если он жалуется на то, что efibootmgr не работает должным образом, вам, вероятно, нужно установить его. Я сделал. Затем просто перезапустите установочный скрипт.

sudo apt-get install efibootmgr

Это должно быть так. Теперь вы должны удалить флэш-накопитель USB и перезагрузиться, и ваше меню перезагрузки должно вернуться.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .