Как настроить новый диск для загрузки UEFI с использованием grub2

Вопрос или проблема

Я использую ASUS N53J, который в данный момент загружается с помощью MBR. Я включил UEFI-загрузку в BIOS и, похоже, могу загружать USB-накопители, которые были настроены с таблицами GPT. Хотя мне пока не удалось разобраться, как использовать выделенный раздел EFI на USB-накопителе.

Отдельно я подключил второй жесткий диск к ноутбуку через внешний SATA-порт, создал таблицу разделов GPT, раздел загрузки ESP, а также файловую систему и разделы подкачки.

Когда я запускаю grub-mkconfig на внутреннем жестком диске, он находит новый образ linux на внешнем жестком диске. Я могу загрузиться с этого внешнего образа и подтвердить, что раздел загрузки ESP смонтирован в /boot/efi, так что, похоже, я должен быть в состоянии настроить grub2. Однако, если я запускаю grub-mkconfig из внешнего диска, его собственный образ не обнаруживается, только образы linux и windows на внутреннем диске.

Я также не могу запустить efibootmgr. Уроки, которые я читал, неясны как по тому, как, так и по тому, почему, поэтому я не могу устранить неполадки самостоятельно или использовать команды, которые не могу найти в пакетах, которые, как я думаю, они используют. Есть ли у кого-нибудь хорошая подсказка о том, как настроить диск перед тем, как установить его в качестве основного загрузочного диска?

Спасибо.

Обновление 2015-12-30
Я продвинулся к созданию USB-накопителя, который, по крайней мере, загружает grub rescue. Я не знаю, почему grub не работает с этого накопителя, но он хотя бы позволяет мне вручную загрузиться в целевую ОС. Поскольку я теперь загрузил через UEFI, efibootmgr доступен.

Я выполнил новую установку grub, нацелившись на раздел esp, смонтированный в /boot/efi. Это завершилось без ошибок. Однако, когда я выбираю целевую систему для загрузки, загрузчик микропрограммы останавливается на пустом экране. Это происходит как при подключении диска через ESATA, так и при перемещении его в основное место в машине.

вывод efibootmgr -v:

BootCurrent: 0003
Timeout: 2 seconds
BootOrder: 0005,0002,0003,0004,0000,0001
Boot0000  Жесткий диск    BBS(HD,,0x0)
Boot0001  CD/DVD устройство  BBS(CDROM,,0x0)P1: Slimtype BD  E  DS4E1S    .
Boot0002* ubuntu 15.10  HD(1,GPT,8b6800c2-0b24-4f00-aa66-b1378052604e,0x800,0xfa000)/File(\bootx64.efi)
Boot0003* grub  HD(2,GPT,b07e72fd-9168-4924-a17c-b75e55ed685c,0x800,0xfa000)/File(\Shellx64.efi)
Boot0004* UEFI: SanDisk Cruzer Micro 1.26   PciRoot(0x0)/Pci(0x1d,0x0)/USB(1,0)/USB(2,0)/HD(2,GPT,b07e72fd-9168-4924-a17c-b75e55ed685c,0x800,0xfa000)
Boot0005* ubuntu15.10   HD(1,GPT,8b6800c2-0b24-4f00-aa66-b1378052604e,0x800,0xfa000)/File(\EFI\ubuntu15.10\grubx64.efi)

Желаемая цель – Boot0005. Boot0002 – это эксперимент по копированию grubx64.efi в /boot/efi/bootx64.efi. Оба Boot0002 и Boot0005 ведут себя одинаково.

Boot0003 (grub) – это USB-накопитель и единственное средство загрузки, хотя он запускается только в grub rescue.

Есть ли идеи, где мне следует исследовать или какая дополнительная информация может помочь в диагностике?

Больше успехов:

grub rescue> set  
prefix=(hd0,2)/boot/grub  ... Это раздел загрузки esp, отформатированный в FAT32  

grub rescue>ls (hd0,2)/  
неизвестная файловая система      ... или что-то в этом роде

grub rescue>set prefix=(hd0,1)/boot/grub  ... раздел, отформатированный в ext4
grub rescue> insmod fat
grub rescue>ls (hd0,2)/
                    .... каталог теперь читается

Установив корень на целевую загрузочную систему и префикс на каталог /boot/grub этой целевой системы, я могу insmod linux искать конфигурационный файл и начать загрузку. Если normal не запускает страницу параметров загрузки, следующее сработает:

grub rescue>configfile /boot/grub/grub.cfg

В конечном итоге я могу загрузить целевую систему из меню.

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

Пока я был загружен через efi в свою целевую файловую систему, я создал новый USB-накопитель, также с таблицей разделов GPT, на этот раз с загрузкой esp в качестве первого раздела. Я упоминаю это, чтобы помочь с чтением таблицы загрузки BIOS, представленной позже.

монтирование второго раздела USB в соответствующий узел:

mkdir -p /boot/efi

монтирование (раздел USB 1) в (раздел USB 2)/boot/efi

grub-install --target=x86_64-efi --efi-directory=(раздел USB 2)/boot/efi --removable

генерирует EFI/BOOT/BOOTx64.EFI. Запись UEFI: Sandisk в таблице загрузки BIOS – это средство для загрузки через этот загрузчик

grub-install --target=x86_64-efi --efi-directory=(раздел USB 2)/boot/efi --bootloader-id=USBboot

генерирует EFI/USBboot/grubx64.efi. Пункт USBboot также записывается в таблицу загрузки BIOS

cmp -v BOOT/BOOTx64.EFI USBboot/grubx64.efi не выявляет различий
любой из вариантов загрузки теперь загружает непосредственно в целевую файловую систему, не отображая меню загрузки grub. Поскольку USB-накопитель не имеет каталога /boot/grub или grub.cfg, grubx64.exe должен быть настроен для поиска этого каталога на целевом разделе, а не на USB.

$ efibootmgr -v
BootOrder: 0007,0004,0005,0002,0003,0008,0000,0001
Boot0000  Жесткий диск    BBS(HD,,0x0)
Boot0001  CD/DVD устройство  BBS(CDROM,,0x0)P1: Slimtype BD  E  DS4E1S    .
Boot0002* ubuntu 15.10  HD(1,GPT,8b6800c2-0b24-4f00-aa66-b1378052604e,0x800,0xfa000)/File(\bootx64.efi)
Boot0003* grub  HD(2,GPT,b07e72fd-9168-4924-a17c-b75e55ed685c,0x800,0xfa000)/File(\Shellx64.efi)
Boot0004* ubuntu_15_10  HD(1,GPT,8b6800c2-0b24-4f00-aa66-b1378052604e,0x800,0xfa000)/File(\EFI\ubuntu_15_10\grubx64.efi)
Boot0005* ubuntu15.10   HD(1,GPT,8b6800c2-0b24-4f00-aa66-b1378052604e,0x800,0xfa000)/File(\EFI\ubuntu15.10\grubx64.efi)
Boot0007* USBboot   HD(1,GPT,f887bf87-18a9-40e1-9bca-6c4bfd1cbb4a,0x800,0xc8000)/File(\EFI\USBboot\grubx64.efi)
Boot0008* UEFI: SanDisk PciRoot(0x0)/Pci(0x1d,0x0)/USB(1,0)/USB(4,0)/HD(1,GPT,f887bf87-18a9-40e1-9bca-6c4bfd1cbb4a,0x800,0xc8000)

Я все еще не понял, как даже добраться до grub rescue без загрузки с внешнего USB-накопителя. Кажется, у меня есть две проблемы:

  1. Я не совсем понимаю, как настроить grub для его предполагаемого использования, как убедиться, что необходимые модули встроены и префикс правильно установлен.
  2. Либо BIOS на ASUS N53J неправильно сконфигурирован, либо он не принимает конфигурацию жесткого диска как допустимую для загрузки.

Есть ли еще идеи? Я знаю, что это становится довольно длинным. Как я могу задокументировать это, чтобы это было более читабельно?

Обновление состояния

Просматривая интернет, я обнаружил grub-mkimage. Я еще не начал работать с этим и сообщу о прогрессе, как только сделаю это и смогу либо понять результаты, либо задать новый вопрос об этом.

После экспериментов с другими жесткими дисками я определил, что мои проблемы, похоже, связаны с разделом загрузки esp на оригинальном жестком диске. Когда я изначально создавал раздел загрузки esp, я принял значение по умолчанию 1 МБ, предложенное gparted. Исследуя, почему я мог загружаться с USB-накопителей и другого жесткого диска, подключенного через ESATA, общим признаком успешных носителей было то, что раздел загрузки esp находился первым на диске и имел 0 смещение.

Моя попытка переместить раздел загрузки esp не увенчалась успехом. Однако я не проверил, чтобы убедиться, что UUID и PARTUUID не изменились, так что я не знаю, была ли эта неудача вызвана тем, что перемещение не настроило диск, чтобы BIOS смог понять, как его читать, или я не смог перенастроить grub.

В любом случае, я научился:
правильно перемещать файловую систему на новый жесткий диск
настраивать проблемный жесткий диск с нуля.
перемещать файловую систему обратно
изменять /etc/fstab, чтобы отразить новые UUID для смонтированных разделов
раздел загрузки esp имел в корневом каталоге копию Shellx64.efi

Затем я:
переустановил жесткий диск в внутренний отсек
запустил систему в режиме настройки BIOS
инициировал Shellx64.efi из BIOS
ввел "c", чтобы перейти к подсказке grub

grub> linux /vmlinuz root=/dev/sda2
grub> initrd /initrd.img
grub> boot

Это запустило файловую систему (как это всегда было ранее, если бы у меня был способ добраться до grub). На этот раз, когда я выполняю grub-install и grub-mkconfig, и перезагружаю, BIOS может прочитать grubx64.efi из правильного места на разделе загрузки esp. Успех!

Ответ или решение

Как настроить новый диск для загрузки UEFI с использованием grub2

Настройка нового диска для загрузки UEFI требует внимательного планирования и выполнения нескольких шагов. Ваша ситуация с ASUS N53J, который использует MBR и требует перехода на UEFI, является распространенной задачей, и мы охватим все необходимые этапы для успешной конфигурации системы.

1. Подготовка диска

1.1 Создание таблицы разделов GPT

Первым шагом является создание таблицы разделов GPT на новом диске. Это можно сделать с помощью gdisk или parted:

sudo parted /dev/sdX mklabel gpt

Замените sdX на соответствующий идентификатор вашего диска.

1.2 Создание разделов

Для UEFI загрузки вам потребуется создать несколько ключевых разделов:

  • EFI System Partition (ESP): должен быть отформатирован в FAT32 и занимать как минимум 100-200 МБ. Обычно он размечается как первый раздел на диске.
  • Корневой раздел: для установки операционной системы.
  • Дополнительные разделы: такие как swap и другие, в зависимости от ваших нужд.

Пример команд для создания разделов с parted:

sudo parted /dev/sdX mkpart primary fat32 1MiB 201MiB
sudo parted /dev/sdX mkpart primary ext4 201MiB 100%

1.3 Форматирование разделов

Форматируйте ESP:

sudo mkfs.vfat -F 32 /dev/sdX1

А корневой раздел (например ext4):

sudo mkfs.ext4 /dev/sdX2

2. Установка Linux и Grub

2.1 Установка операционной системы

Установите вашу операционную систему на корневой раздел (/dev/sdX2 в нашем примере).

2.2 Установка grub2

После завершения установки системы, установите grub2 на ваш EFI раздел.

sudo mount /dev/sdX1 /boot/efi
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Ubuntu
sudogrub-mkconfig -o /boot/grub/grub.cfg

Примечание: команда --bootloader-id указывает название, под которым будет отображаться загрузчик в меню BIOS.

3. Конфигурация и проверка

3.1 Настройка efibootmgr

После установки загрузчика, используйте efibootmgr для проверки конфигурации загрузки:

sudo efibootmgr -v

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

3.2 Перезагрузка и тестирование

Перезагрузите систему и проверьте, что BIOS правильно определяет ваш загрузочный пункт UEFI. Если все сделано верно, вы должны войти в систему без необходимости использования grub rescue.

4. Устранение неполадок

Если возникают проблемы:

  • Проверьте, действительно ли BIOS настроен на UEFI загрузку.
  • Убедитесь, что EFI раздел установлен на правильный диск и имеет правильный формат.
  • Убедитесь, что grub установлен и конфигурирован на соответствующем разделе.

Вывод

Конфигурация нового диска для загрузки UEFI с использованием grub2 требует четкой последовательности действий. Следуя данным шагам, вы сможете успешно настроить систему и решить возникшие проблемы. Если у вас все еще возникают трудности, проверьте настройки BIOS и убедитесь, что ваш загрузочный раздел правильно настроен в efibootmgr.

Таким образом, вы сможете добиться стабильной и успешной UEFI загрузки на своем устройстве ASUS N53J.

Оцените материал
Добавить комментарий

Капча загружается...