Как создать системный раздел EFI?
TL; DR Как мне создать системный раздел EFI с нуля? Как поставить прошивку EFI на то, что он создан? Длинная версия У меня хава ноут Toshiba T430. Я получил его с установленной Windows 7 (но я думаю, что изначально он поставляется с Windows 8). Я установил на него Ubuntu, но удалил некоторые разделы на диске, так что я закончил с того, что уничтожил Windows и имел только Ubuntu. Среди удаленных разделов был системный раздел EFI. Я обнаружил, что Ubuntu теперь загружается в режиме Legacy (а не UEFI). Я пытаюсь следовать этому руководству по преобразованию моей установки Ubuntu из Legacy в UEFI. Проблема в том, что, когда я выбираю из BIOS загрузку с использованием UEFI, раздел EFI отсутствует, я не могу загрузиться. Это относится не только к жесткому диску, но и к USB и DVD. Я думаю, что это логично — он ожидает раздел EFI и, поскольку он не может его найти, он не может продолжать загрузку дальше, будь то с жесткого диска или DVD. Итак, как мне восстановить раздел EFI? Руководство выше говорит:
- Если на вашем диске уже есть раздел EFI (например, если на вашем компьютере была предустановлена Windows8), его можно использовать и для Ubuntu. Не форматируйте это. Настоятельно рекомендуется иметь только 1 раздел EFI на диск.
- Раздел EFI может быть создан с помощью последней версии GParted (версия Gparted, включенная в диск 12.04, в порядке) и должна иметь следующие атрибуты:
- Точка монтирования: /boot /efi (примечание: нет необходимости устанавливать эту точку монтирования при использовании ручного разбиения, установщик Ubuntu обнаружит ее автоматически)
- Размер: минимум 100Mib. Рекомендуется 200MiB
- Тип: FAT32
- Другое: нужен флаг загрузки.
У меня были некоторые проблемы при создании этого раздела:
- Я загружаюсь с живого Ubuntu DVD, открываю GParted, создаю раздел размером 200 МБ и форматирую его в FAT32.
- В GParted я не могу установить точку монтирования и, следовательно, не могу установить флаг загрузки.
- Я не установил точку монтирования в /etc/fstab так как это live CD, и fstab выглядел совсем не так, как я ожидал, по сравнению с обычной загрузкой. Во всяком случае, я просто не знал, какие значения установить.
Я снова загрузился через live DVD и затем решил установить Ubuntu. Затем я создал раздел с указанными критериями — точка монтирования, 200 МБ, FAT32, флаг загрузки.
Тем не менее, у меня продолжает возникать эта проблема, и я полагаю, что это связано с тем, что на этом разделе нет прошивки EFI, это просто пустой раздел, который подходит для прошивки EFI.
Итак, еще раз, как мне создать раздел EFI с программным обеспечением EFI, чтобы ноутбук снова мог загружаться в режиме UEFI?
РЕШЕНИЕ Спасибо вам обоим за ответы. Что я сделал, так это установил Windows 8.1 с нуля, отформатировав весь диск, а затем установив (на этот раз правильно) Ubuntu рядом с ним. Это мои разделы сейчас:
Во время установки Win 8, как только я удалил все существующие разделы и позволил Windows переформатировать диск, он автоматически создал, помимо основного установочного раздела, три дополнительных раздела, а именно 1, 2, 3. Теперь, после того, как у меня появился ESP, я мог загружаться как с жесткого диска, так и с DVD в режиме UEFI.
Вы говорите, что ESP не хранит никакой информации по умолчанию, но я предполагаю, что при установке ОС, она помещает туда некоторую информацию. Поэтому я думаю, что мой случай был следующим: я стер его, и, хотя я воссоздал его, он не был заполнен какой-либо информацией, поскольку создание ESP было сделано после того, как была установлена ОС. Я потерял установку Ubuntu (ничего страшного, в любом случае это была новая установка), но я думаю, что для ее сохранения я должен был последовать совету grawity . Хотя времени не было, но, к счастью, все в порядке.
4 ответа 4
Во-первых, вы не устанавливаете точку монтирования в GParted; это делается вручную (и временно) с помощью команды mount или постоянно путем редактирования /etc/fstab . Таким образом, ваша озабоченность по поводу этой проблемы неуместна.
Во-вторых, системный раздел EFI (ESP) — это просто раздел FAT с определенным кодом типа (а именно, C12A7328-F81F-11D2-BA4B-00A0C93EC93B на GPT-дисках). Обратите внимание, что точка монтирования в /etc/fstab не является частью определения ESP; Просто в Linux (но не обязательно) доступ к ESP осуществляется путем монтирования его в /boot/efi , обычно через запись в /etc/fstab . То, как вы устанавливаете код типа, варьируется от одной программы к другой:
- В gdisk вы устанавливаете код типа на EF00. ( gdisk использует двухбайтовые коды типов, которые расширяются до реальных кодов типов на диске; «EF00» — просто мнемоника для «C12A7328-F81F-11D2-BA4B-00A0C93EC93B».)
- В GParted или parted вы устанавливаете «флаг загрузки». Обратите внимание, что это работает только на GPT-дисках; Вы не можете установить код типа ESP на MBR-дисках с этими программами. (Обычно это не имеет большого значения, поскольку компьютеры на основе EFI обычно загружаются с GPT-дисков.)
- В установщике Ubuntu вы определяете раздел как «загрузочный раздел EFI». Затем он устанавливает код типа и соответственно устанавливает /etc/fstab .
- В последних версиях Linux fdisk тип раздела устанавливается по его номеру (1 для «EFI System» на дисках GPT или 0xEF на дисках MBR) или путем ввода полного кода типа на дисках GPT.
В-третьих, ESP не держит прошивку — прошивка по определению хранится в микросхемах на материнской плате. Таким образом, ваши усилия по установке прошивки EFI на ESP — погоня за диким гусем. (Есть два исключения из этого правила. Во-первых, вы можете сохранить файл прошивки на ESP, чтобы обновить прошивку на вашем компьютере. Это всего лишь зона временного содержания. Во-вторых, загрузчик DUET или Clover , EFI загружается как обычная программа, обычно из ESP. Эти инструменты представляют собой загрузчики BIOS, которые позволяют компьютерам, использующим только BIOS, загружаться так, как если бы они были EFI-компьютерами; они обычно не используются на компьютерах с микропрограммой EFI, которая, как вы утверждаете, установлена на вашем компьютере. Технически, ни DUET, ни Clover не являются прошивками; это загрузчики BIOS, которые выполняют ту же работу, что и EFI.)
Наконец, я могу вспомнить ряд возможных причин вашей проблемы, но без дополнительной информации мне нужно написать половину книги, чтобы охватить их все. Я рекомендую вам запустить Boot Info Script на компьютере. Это создаст файл с именем RESULTS.txt . Опубликуйте его на сайте pastebin и отправьте обратно с URL вашего документа. Это даст достоверные данные о вашей конфигурации, что значительно сократит диапазон возможных причин вашей проблемы.
Создание загрузочной системы EFI⚓︎
Отключите secure boot ! На данный момент эта технология не поддерживается. Чтобы настроить процесс загрузки с помощью GRUB для UEFI, необходимо отключить её в интерфейсе конфигурации прошивки. Прочтите документацию, предоставленную производителем вашей системы, чтобы узнать, как это сделать.
Убедитесь, что вы не пропустили раздел по настройке ядра, для поддержки EFI.
Поиск, или создание системного раздела EFI⚓︎
В системе на основе EFI загрузчики устанавливаются в специальный раздел FAT32, называемый системным разделом EFI (ESP). Если ваша система поддерживает EFI и предустановлен дистрибутив Linux и (или) Windows, скорее всего, ESP уже создан. Посмотрите все разделы на вашем жёстком диске (замените sda на нужное устройство):
Столбец ESP type должен быть EFI System .
Устр-во начало Конец Секторы Размер Тип /dev/sda1 4096 618495 614400 300M EFI /dev/sda2 618496 268430084 267811589 127,7G Файловая система Linux
Если система или жёсткий диск новые, или если вы впервые устанавливаете ОС, загружаемую через UEFI , ESP может не существовать. В этом случае создайте новый раздел, создайте на нем файловую систему vfat и установите тип раздела EFI system .
Некоторые (старые) реализации UEFI могут требовать, чтобы ESP был первым разделом на диске.
Создайте точку монтирования для ESP и смонтируйте ее (замените sda1 на соответствующий ESP ):
mkdir -pv /boot/efi && mount -v -t vfat /dev/sda1 /boot/efi
Добавьте запись для ESP в /etc/fstab , чтобы он автоматически монтировался во время загрузки системы:
cat >> /etc/fstab /dev/sda1 /boot/efi vfat defaults 0 1 EOF
Монтирование EFI Variable File System⚓︎
Для установки GRUB на UEFI необходимо смонтировать файловую систему EFI Variable, efivarfs . Если она еще не была смонтирована ранее, выполните команду:
mountpoint /sys/firmware/efi/efivars || mount -v -t efivarfs efivarfs /sys/firmware/efi/efivars
Добавьте запись для efivarfs в /etc/fstab , чтобы она автоматически монтировалась во время загрузки системы:
cat >> /etc/fstab efivarfs /sys/firmware/efi/efivars efivarfs defaults 0 0 EOF
Если система не загружается с UEFI, каталог /sys/firmware/efi будет отсутствовать. В этом случае вы должны загрузить систему в режиме UEFI с аварийным загрузочным диском.
Настройка⚓︎
В системах на основе UEFI GRUB работает устанавливая приложение EFI (особый вид исполняемого файла) в /boot/efi/EFI/[id sizes/grubx64.efi , где /boot/efi — точка монтирования ESP , а [id] заменяется идентификатором, указанным в командной строке grub-install . GRUB создаст запись в переменных EFI , содержащую путь EFI/[id]/grubx64.efi , чтобы прошивка EFI могла найти grubx64.efi и загрузить его.
grubx64.efi очень легкий (136 Кб), поэтому он не будет занимать много места в ESP. Типичный размер ESP составляет 100 Мб (для диспетчера загрузки Windows, который использует около 50 Мб в ESP). Как только grubx64.efi загружен прошивкой, он загрузит модули GRUB в загрузочный раздел. Расположение по умолчанию — /boot/grub .
Установите файлы GRUB в /boot/efi/EFI/LFS/grubx64.efi и /boot/grub . Затем настройте загрузочную запись в переменных EFI:
grub-install --bootloader-id=LIN --recheck
Если установка прошла успешно, вывод должен быть:
Installing for x86_64-efi platform. Installation finished. No error reported.
Запустите efibootmgr , чтобы ещё раз проверить конфигурацию загрузки EFI.
BootCurrent: 0000 Timeout: 1 seconds BootOrder: 0005,0000,0002,0001,0003,0004 Boot0000* ARCH Boot0001* UEFI:CD/DVD Drive Boot0002* Windows Boot Manager Boot0003* UEFI:Removable Device Boot0004* UEFI:Network Device Boot0005* LIN
Обратите внимание, что 0005 является первым в BootOrder , а Boot0005 — это LIN . Это означает, что при следующей загрузке системы будет использоваться версия GRUB , установленная в LIN .
Создание файла конфигурации GRUB⚓︎
Создайте /boot/grub/grub.cfg для настройки меню загрузки GRUB:
cat > /boot/grub/grub.cfg # Begin /boot/grub/grub.cfg set default=0 set timeout=5 insmod part_gpt insmod ext2 set root=(hd0,2) if loadfont /boot/grub/fonts/unicode.pf2; then set gfxmode=auto insmod all_video terminal_output gfxterm fi menuentry "GNU/Linux, Linux 5.10.17-lfs-10.1" linux /boot/vmlinuz root=/dev/sda2 ro > menuentry "Firmware Setup" fwsetup > EOF
(hd0,2) , sda2 следует заменить в соответствии с вашей конфигурацией.
Для GRUB файлы используются относительно раздела. Если вы использовали отдельный раздел /boot , удалите /boot из указанных выше путей (к ядру и к unicode.pf2). Вам также нужно будет изменить строку корневого раздела, чтобы она указывала на загрузочный раздел.
Загрузка вместе с Windows⚓︎
Добавьте запись в файл конфигурации grub.cfg :
cat >> /boot/grub/grub.cfg # Begin Windows addition menuentry "Windows 10" insmod fat insmod chain set root=(hd0,1) chainloader /EFI/Microsoft/Boot/bootmgfw.efi > EOF
(hd0,1) следует заменить назначенным GRUB именем для ESP. Директива chainloader может использоваться, чтобы указать GRUB запустить другой исполняемый файл EFI, в данном случае диспетчер загрузки Windows. вы можете поместить больше используемых инструментов в исполняемом формате EFI (например, оболочку EFI) в ESP и создать для них записи GRUB.