Какие команды преобразуют установку Ubuntu BIOS в EFI / UEFI без восстановления загрузки на оборудовании с одной загрузкой?


35

Случайный режим установки BIOS

У меня Intel 64-битное оборудование с утилитой установки UEFI. Ubuntu 14.04.1 LTS была установлена ​​как единственная операционная система на единственном подключенном диске. Случайно Ubuntu был установлен в BIOS / CSM / устаревшем режиме.

Конвертировать в UEFI

Позже, изучая UEFI, цель состоит в том, чтобы изменить существующую установку Ubuntu на (более быструю) загрузку через EFI / UEFI. Я все еще хочу, чтобы какое-то время отображалось - 2 секунды - меню загрузки, которое позволяет мне войти в утилиту настройки UEFI. Поэтому я думаю, что мне нужно использовать Grub (не могу использовать загрузочную заглушку EFI), а поддержка GOP требует Grub версии 1.99 или выше . Я уже переразделил диск с помощью Live CD и вставил EFI-раздел размером 200 МБ в начало диска и отметил этот форматированный раздел fat16 как id типа 0xEF.

До:

# fdisk -l /dev/sda
...
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   108478463    54238208   83  Linux
/dev/sda2       108480510   125044735     8282113    5  Extended
/dev/sda5       108480512   125044735     8282112   82  Linux swap / Solaris

После:

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *      411648   108478463    54033408   83  Linux
/dev/sda2       108480510   125044735     8282113    5  Extended
/dev/sda3            2048      411647      204800   ef  EFI (FAT-12/16/32)
/dev/sda5       108480512   125044735     8282112   82  Linux swap / Solaris

Partition table entries are not in disk order

Нет загрузки-ремонта, пожалуйста

Вики сообщества Ubuntu предлагает использовать восстановление загрузчика для преобразования Ubuntu в режим EFI . Я не хочу использовать графический интерфейс или устанавливать какие-либо дополнительные пакеты, и я не хочу, чтобы какие-либо данные были случайно отправлены на pastebin.com, и поскольку я действительно хочу знать, что именно будет изменено, я не хочу использовать Boot-ремонт .

Под капотом

Пытаясь выяснить, что на самом деле делает boot-repair, я нашел этот фрагмент:

Boot-Repair преобразует установку BIOS в UEFI, удалив grub-pc и установив grub-efi, если gpt разбит на разделы.

источник: http://ubuntuforums.org/showthread.php?t=2147295&p=12657352#post12657352

Сравнение установки в режиме UEFI

Чистая установка Ubuntu 14.04.1 в режиме UEFI создает раздел EFI размером 512 МБ Fat32. Этот раздел содержит один каталог /EFI/ubuntu, содержащий 4 файла: grub.cfg, grubx64.efi, MokManager.efiи shimx64.efi. Grub.cfg содержит:

search.fs_uuid 7d843e47-3917-4114-8725-55dfa1fbe002 root hd0,gpt2
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

Search.fs_uuid указывает на UUID установочного раздела Linux, в этом сравнении для установки UEFI в Linux установлен раздел / dev / sda2 (по сравнению с sda1 в режиме установки BIOS) .

Потенциальные проблемы с прошивкой Asrock не найдены

После отключения CSM во встроенном ПО и использования установки Ubuntu в чистом режиме UEFI. Изменение размера раздела EFI размером 512 МБ до 200 МБ с использованием Live CD gpartedприводит к изменению его форматирования с FAT32 на FAT16. Прошивка Asrock P1.50 (неправильно называемая BIOS по AMI в сообщении загрузки «Дата BIOS») все еще может загружаться в режиме UEFI Ubuntu: UEFI + FAT16 = ok .
Преобразование таблицы разделов из GPT в MBR (msdos) с использованием той же команды терминала Live CD gdiskи ее команд r g p wтакже приводит к загрузке UEFI Ubuntu на многораздельном диске MBR: UEFI + MBR = ok .

Вопрос

Означает ли это, что единственные команды, которые мне нужно выполнить - из устаревшей установки Ubuntu и в следующем порядке - это:

# apt-get install grub-efi
# apt-get remove grub-pc

? Или нужно сделать больше?


1
Я все еще использовал бы ремонт ботинка. Вы предполагаете, что вам нужно установить пакеты ... Я считаю, что вы не правы. Смотрите: askubuntu.com/questions/226061/…
Rinzwind

@Rinzwind Я не могу использовать boot-repair, потому что в текущей установке Ubuntu (только для консоли) нет графического интерфейса, и ubuntu-14.04.1-desktop-amd64.iso не загружается, если в Asrock установлено первое загрузочное устройство USB UEFI H81 Pro BTC P1.50 Утилита для настройки UEFI.
Pro Backup

1
Boot-Repair - это не графический интерфейс, а bash с одной из надстроек, которая делает его более похожим на графический интерфейс. С новой версией Ubuntu имена пакетов немного изменились, теперь я думаю, что это grub-efi-amd64 или grub-efi-amd64-подписанный. Это может быть потому, что они хотят выпустить 32-битный загрузчик UEFI, имя которого изменилось. Chroot версия, обратите внимание, у вас также есть установить grub и создать grub.cfg. askubuntu.com/questions/53578/…
oldfred

@oldfred Boot-Repair зависит от графического интерфейса пользователя: выполнение apt-get install boot-repairэтой установки сервера Ubuntu приводит к 245 МБ GTK, как требуется для установки зависимостей boot-repair. И выполнить boot-repairкоманду в обратном направлении не удается. Обновление новых имен grub-efi было действительно полезным.
Pro Backup

Если Asrock, убедитесь, что у вас нет привода или DVD-дисков, подключенных к портам Asmedia. У них нет драйверов. Лучше иметь только gpt разделенный диск при загрузке в UEFI. rodsbooks.com/gdisk/hybrid.html
oldfred

Ответы:


41

Запустите Live CD Ubuntu Linux (14.04) в режиме UEFI. В случае загрузочного устройства USB отключите «Быструю загрузку» в UEFI.

Откройте окно терминала ( Ctrl+ Alt+ T)

Чтобы убедиться, что вы действительно работаете в режиме UEFI, используйте команду bash:

$ [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS

Полученный результат должен быть:

UEFI

В случае, если это говорит BIOS, перезагрузитесь в свою прошивку и исправьте предпочтение устройства загрузки.

Для преобразования BIOS в EFI / UEFI введите следующие команды:

$ sudo mount /dev/sda1 /mnt
$ sudo mkdir -p /mnt/boot/efi
$ sudo mount /dev/sda3 /mnt/boot/efi
$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /proc /mnt/proc
$ sudo mount --bind /sys /mnt/sys
$ sudo mount --bind /run /mnt/run
$ modprobe efivars
$ sudo chroot /mnt
# apt-get install grub-efi-amd64

The following extra packages will be installed:
  efibootmgr grub-efi-amd64-bin
The following packages will be removed:
  grub-gfxpayload-lists grub-pc
...
After this operation, 2,399 kB of additional disk space will be used.

# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck --no-floppy --debug

Несмотря на окончание в сообщении об ошибке:

Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.

следующая перезагрузка уже показывает « ubuntu » в прошивке свое меню параметров загрузки и загружается на консоль, как и раньше, за исключением текущей загрузки в режиме efi:

$ dmesg | grep EFI
efi: EFI v2.31 by American Megatrends
fb0: EFI VGA frame buffer device
EFI Variables Facility v0.08 2004-May-17
fb: switching to inteldrmfb from EFI VGA

В случае если что-то пойдет не так, https://superuser.com/questions/376470/how-to-reinstall-grub2-efi может помочь.


Это помогло мне обновить жесткий диск и преобразовать его в GPT / UEFI / SecureBoot без переустановки. Спасибо. Одно замечание: мне нужен был grub-efi-amd64-signedпакет, чтобы не связываться с отключением SecureBoot в моем UEFI BIOS.
Роби Басак

Сейчас 2018 год, и эта проблема с EFI все еще сохраняется. даже EFI Boot установлен, но я в конечном итоге в Grub Cli. Я отказываюсь от Ubuntu.
Абхишек Дуджари

Это работало для меня под Ubuntu 19.10. Я загрузил живой USB с EFI и добавил в конец моего диска раздел размером 200 МБ типа FAT32 для EFI.
Джои Адамс

1

Это сработало и для меня с одним небольшим изменением. Даже при том, что сеть работала, я не мог заставить "apt-get install grub-efi-amd64" найти любой из серверов пакетов.

Я справился с этим, загрузившись в режиме BIOS в последний раз и установив grub-efi-amd64.

Затем я мог бы следовать приведенным здесь процедурам, за исключением исключения слова «apt-get install grub-efi-amd64».


1

Небольшая коррекция:

sudo apt-get install -y grub-efi-amd64
sudo mount /dev/sda1 /mnt
sudo mkdir -p /mnt/boot/efi
sudo mount /dev/sda3 /mnt/boot/efi
for d in dev sys proc usr run; do sudo mount -B /$d /mnt/$d; done
sudo modprobe efivars
sudo chroot /mnt
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck --no-floppy --debug

Выполнено.


Можете ли вы объяснить, почему вы предлагаете эти изменения, из ответа ОП? ………… Пожалуйста, не отвечайте в комментариях; отредактируйте  свой ответ, чтобы сделать его более понятным и полным.
G-Man говорит: «Восстанови Монику»
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.