- Вопрос или проблема
- Ответ или решение
- 1. Подготовка диска
- 1.1 Создание таблицы разделов GPT
- 1.2 Создание разделов
- 1.3 Форматирование разделов
- 2. Установка Linux и Grub
- 2.1 Установка операционной системы
- 2.2 Установка grub2
- 3. Конфигурация и проверка
- 3.1 Настройка efibootmgr
- 3.2 Перезагрузка и тестирование
- 4. Устранение неполадок
- Вывод
Вопрос или проблема
Я использую 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-накопителя. Кажется, у меня есть две проблемы:
- Я не совсем понимаю, как настроить grub для его предполагаемого использования, как убедиться, что необходимые модули встроены и префикс правильно установлен.
- Либо 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.