LINUX.ORG.RU

Установка с «UEFI USB» или просто USB

 


0

1

Здравствуйте! Устанавливаю убунту с флешки. И если при загрузки ПК можно выбрать «UEFI USB» и просто USB. В начале выбирал «UEFI USB» и в конце установки выскакивала ошибка что нет раздела boot/efi (что то типа grub-install .... _target). Я после этого заново делал установку но уже создавал еще раздел boot/efi и установка проходила успешно., Но потом не загружалась система с ПК, писало «error: file '/grub/i386-pc/normal.mod' not found.» и мне приходилось загружаться с флешки и устанавливать grub так «grub-install --root-directory=/mnt /dev/sda» и после перезагрузки система загружалась.
Потом попробовал еще раз переустановить систему и выбрал загрузку просто USB без uefi и в разметки диска убрал раздел boot/efi и все успешно установилось и после система загрузилась с пк без ошибок grub. Дополнительную установку grub-install я не делал.
Не могу понять в чем такая разница, почему UEFI требует раздел boot/efi и еще надо делать grub-install после установки?

Не могу понять в чем такая разница, почему UEFI требует раздел boot/efi

А ты пробовал читать что такое EFI и как он работает, в чём его отличие от старого BIOS и в особенности в чём отличие в загрузчиках?

Почему ты начинаешь что-то делать не разобравшись, даже банально почитать wikipedia и разобраться как это работает?

Если кратко, то у BIOS и EFI совершенно отличный способ запуска загрузчиков.

И разные структуры разметки дисков, таблицы разделов.

BIOS: таблица разделов в формате MBR, находится в начале диска, в нулевом секторе, можно размечать диски размером до 2Тб включительно. В нулевом секторе также находится и первичный загрузчик, в первых 466 байтах, в оставшихся 46 байтах может храниться 4 записи по 11 байт с описанием 4 первичныйх разделов и 2 байта сигнатура корректности таблицы разделов. При старте компьютера BIOS перебирает загрузочные устройства и считывает с них этот 0 сектор и если в каком-то находит загрузчик, то вызывает его.

Обычно в эти 466 байт помещается не весь загрузчик, а тольк его первичная часть, если брать загрузчик Windows в формате BIOS, то эта часть загрузчика может только найти активный (загрузочный) раздел и вызвать с этого раздела остальную (основную) часть загрузчика, которая уже умеет работать с файловыми системами, грузить ядро, драйверы и запускать и передавать ему управление, это относительно Microsoft.

В случае Linux загрузчиков, наприме GRUB, в 466 байтах тоже только часть загрузчика, но активный раздел она не ищет, а грузит вторую часть загрузчика, stage1.5, которая находится в секторах диска с 1-63, в этой части уже хранится информаци об разделе с конфигом и ядрами, далее эта часть открывает конфиг и отображает меню.

UEFI (EFI): схема разметки дисков GPT, сама структура со схемой разделов записывается в конец диска, в нулевом секторе создаётся защится mbr таблица. GPT поддерживает работу с дискамт более 2Тб.

EFI не загружает загрузчики напрямую с нулевого сектора или каких-то других секторов. EFI работает напрямую с файловой системой, она поддерживает FAT/FAT32 и считывает файлы EFI образов загрузчиков со специального раздела EFI System Partition, по умолчанию 64 битный EFI ищет файл /efi/boot/bootx64.efi, вызывает его и далее этот загрузчик считывает свой конфиг и отображает меню.

ТВОЯ СИТУАЦИЯ

Я после этого заново делал установку но уже создавал еще раздел boot/efi и установка проходила успешно., Но потом не загружалась система с ПК, писало «error: file '/grub/i386-pc/normal.mod' not found.» и мне приходилось загружаться с флешки и устанавливать grub так «grub-install --root-directory=/mnt /dev/sda» и после перезагрузки система загружалась.

Эта ситуация более похожа, что ты поставил систему в EFI режиме и EFI загрузчик, но потом запускался в BIOS (Legacy) режиме и с диска стартовал старый загрузчик от прошлой системы.

С другой стороны, если ты всё такие путаешь и возможно говоришь не «boot/efi», а bios_boot или bios_grub типе раздела, то он нужен в случае если у тебя на диске GPT разметк, но ставишь ты версию загрузчика для платформы PC (i386-pc), это загрузчик для BIOS режима загрузки и ему нужно место, куда он встраивает вторую часть, посмотри выше я писал что это.

Вот почитай: https://wiki.gentoo.org/wiki/GRUB2/ru

anonymous
()
Ответ на: комментарий от anonymous

по умолчанию 64 битный EFI ищет файл /efi/boot/bootx64.efi, вызывает его и далее этот загрузчик считывает свой конфиг и отображает меню.

Как я недавно разбирался с этим всем (честно, не до конца разобрался, но своих целей достиг пока что Скопировать Debian на новый диск с EFI и Grub ) это не по умолчанию, а так называемый путь для «removable media path», то есть, место куда надо класть загрузчик для съемных устройств.

Но и для встроенного винта можно туда же положить, но это не совсем правильно, по науке надо в nvram прописать путь к нужному загрузчику. Например, \EFI\debian\grubx64.efi и положить туда. Или вообще записать в nvram-флешку выбор ОС. К сожалению, на практике достаточно многие производители материнок косо криво реализуют работу в этом месте (и не только в этом). Так что в итоге именно EFI\boot\bootx64.efi универсальный.

praseodim ★★★★★
()
Последнее исправление: praseodim (всего исправлений: 1)
Ответ на: комментарий от praseodim

это не по умолчанию, а так называемый путь для «removable media path», то есть, место куда надо класть загрузчик для съемных устройств.

Но и для встроенного винта можно туда же положить, но это не совсем правильно, по науке надо в nvram прописать путь к нужному загрузчику.

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

Если у тебя есть Windows установленная в режиме EFI, то ты увидишь, что она как раз и использует путь для EFI файла по умолчанию для установки своего загрузчика.

anonymous
()
Ответ на: комментарий от anonymous

Есть. И винда это вообще прикол, посмотрел efibootmgr как она засрала своей записью nvram. Там в UTF-16 на пару строчек какие-то параметры еще для загрузчика прописала

А кстати, еще приколы. Надо бы по-хорошему проверить еще на нескольких компах, но у меня есть подозрение, что путь, указываемый в efibootmgr на одних материнках надо указывать в кавычках, на других - без. Во всяком случае в виртуалке virtualbox спокойно принял путь без кавычек (но не сохранил после выключения), а на реальной машине слэши из пути без кавычек изъялись и все слитно оказалось и не работало, пока не удалил и не записал с кавычками.

praseodim ★★★★★
()
Последнее исправление: praseodim (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.