Как изменить загрузочный диск без биоса

Обновлено: 06.07.2024

Как устроена загрузка современных ОС? Как при установке системы настроить загрузку посредством UEFI, не утонув в руководствах и ничего не сломав?

Я обещал "самое краткое руководство". Вот оно:

  1. Создаём на диске таблицу разделов GPT
  2. Создаём FAT32-раздел на пару сотен мегабайт
  3. Скачиваем из интернета любой UEFI-загрузчик
    (нам нужен сам загрузчик, это один бинарный файл!)
  4. Переименовываем и кладем этот файл на созданный раздел по адресу /EFI/Boot/bootx64.efi
  5. Создаём текстовый конфиг, кладем его там, где загрузчик ожидает его увидеть
    (настройка и местоположение конфига зависят от конкретной реализации загрузчика, эта информация доступна в интернете)
  6. После перезагрузки видим меню загрузчика
    (Если на диске установлена Windows 8 или 10 — с большой вероятностью это руководство сокращается до пунктов 3 — 5.)

TL;DR не надо прописывать путь к загрузчику в новых загрузочных записях UEFI — надо файл загрузчика расположить по стандартному "пути по-умолчанию", где UEFI его найдет, и вместо загрузочного меню UEFI пользоваться меню загрузчика, которое гораздо проще и безопаснее настраивается

Как делать не надо

Есть, на самом-то деле, несколько способов настроить UEFI-загрузку. Я начну с описания других вариантов — чтобы было понятно, как (и почему) делать не надо. Если вы пришли за руководством — мотайте в самый низ.

Не надо лезть в NVRAM и трогать efivars

Наиболее "популярная" процедура установки загрузчика в систему такова: установщик ОС создаёт специальный раздел, на нём — структуру каталогов и размещает файлы загрузчика. После этого он с помощью особой утилиты (efibootmgr в linux, bcdedit в windows) взаимодействует с прошивкой UEFI-чипа, добавляя в неё загрузочную запись. В этой записи указывается путь к файлу загрузчика (начиная от корня файловой системы) и при необходимости — параметры. После этого в загрузочном меню компьютера появляется опция загрузки ОС. Для linux существует возможность вообще обойтись без загрузчика. В загрузочной записи указывается путь сразу к ядру вместе со всеми параметрами. Ядро должно быть скомпилировано с опцией EFISTUB (что давно является стандартом для большинства дистрибутивов), в этом случае оно содержит в себе заголовок "исполняемого файла EFI", позволяющий прошивке его запускать без внешнего загрузчика.

При старте системы, когда пользователь выбирает нужную ему загрузочную запись, прошивка UEFI сперва ищет на прописанном в этой записи диске особый EFI-раздел, обращается к файловой системе на этом разделе (обязательно FAT или FAT32), и запускает загрузчик. Загрузчик считывает из файла настроек свой конфиг, и либо грузит ОС, либо предоставляет загрузочное меню. Ничего не замечаете? Да, у нас два загрузочных меню — одно на уровне прошивки чипа UEFI, другое — на уровне загрузчика. В реальности о существовании второго пользователи могут даже не догадываться — если в меню всего один пункт, загрузчик Windows начинает его грузить без лишних вопросов. Увидеть экран с этим меню можно, если поставить вторую копию Windows или просто криво её переустановить.

Обычно для управления загрузочными записями руководства в интернете предлагают взаимодействовать с прошивкой UEFI. Есть аж пять основных вариантов, как это можно сделать: efibootmgr под linux, bcdedit в windows, какая-то софтина на "Маках", команда bcfg утилиты uefi shell (запускается из-под UEFI, "на голом железе" и без ОС, поскольку скомпилирована в том самом особом формате) и для особо качественных прошивок — графическими средствами UEFI (говоря популярным языком, "в настройках BIOS").

За всеми вышенаписанными "многобуков" вы могли легко упустить такую мысль: пользователь, чтобы изменить настройки программной части (например, добавить параметр запуска ОС), вынужден перезаписывать flash-память микросхемы на плате. Есть ли тут подводные камни? О да! Windows иногда способна сделать из ноутбука кирпич, linux тоже, причём разными способами. Качество прошивок часто оставляет желать лучшего — стандарты UEFI либо реализованы криво, либо не реализованы вообще. По логике, прошивка обязана переживать полное удаление всех переменных efivars без последствий, не хранить в них критичных для себя данных и самостоятельно восстанавливать значения по-умолчанию — просто потому что пользователь имеет к ним доступ, и вероятность их полного удаления далека от нуля. Я лично в процессе экспериментов неоднократно (к счастью, обратимо) "кирпичил" свой Lenovo — из загрузочного меню исчезали все пункты, включая опцию "зайти в настройки".

Работа с загрузочными записями UEFI — тоже не сахар. К примеру, утилита efibootmgr не имеет опции "редактировать существующую запись". Если ты хочешь немного изменить параметр ядра — ты удаляешь запись целиком и добавляешь её снова, уже измененную. При этом строка содержит в себе двойные и одинарные кавычки, а также прямые и обратные слеши в не особо очевидном порядке. Когда я наконец заставил эту магию работать — я сохранил её в виде bash-скриптов, которые до сих пор валяются у меня в корневой ФС:

Не надо использовать GRUB

Это чёртов мастодонт, 90% функциональности которого предназначено для дисков с MBR. Для настройки необходимо отредактировать ряд файлов, после чего выполнить команду генерации конфига. На выходе получается огромная малопонятная нормальному человеку простыня. В составе — гора исполняемых файлов. Ставится командой, которую просто так из головы не возьмешь — надо обязательно лезть в документацию

Для сравнения — самый простенький UEFI-bootloader, который есть в составе пакета systemd, ставится командой

Эта команда делает ровно две вещи: копирует исполняемый файл загрузчика на EFI-раздел и добавляет свою загрузочную запись в прошивку. А конфиг для неё занимает ровно СЕМЬ строчек.

"Самое краткое руководство" — чуть более подробно

Загрузочная запись нам не нужна — дело в том, что при выставлении в настройках BIOS загрузки с диска прошивка UEFI сначала ищет на нём EFI-раздел, а затем пытается исполнить файл по строго фиксированному адресу на этом разделе: /EFI/Boot/BOOTX64.EFI

Что такое "EFI-раздел"? В теории, он должен иметь особый тип "EFI System" (ef00). На практике, годится первый раздел на GPT-диске, отформатированный в FAT32 и имеющий достаточно места, чтобы разместить загрузчик и вспомогательные файлы (если есть).

Пункт 3: "Скачиваем из интернета любой UEFI-загрузчик". Что это значит? Загрузчик — это просто исполняемый файл определенного формата, к которому в комплекте идет конфиг. К примеру, если у вас есть под рукой установленный пакет с systemd — файл загрузчика можно найти по адресу /usr/lib/systemd/boot/efi/systemd-bootx64.efi, переименовать его в bootx64.efi и скопировать в /EFI/Boot/ на EFI-разделе. Нет под рукой systemd? Скачайте архив с сайта Archlinux. Или с репозитария Ubuntu. Или Debian. Есть под рукой система с Windows? Возьмите виндовый загрузчик оттуда, тоже сгодится )) Если сумеете настроить, я честно говоря не пробовал.

Пункт 4: "Настроить конфиг". Как и обычная программа, когда загрузчик запускается — он ожидает найти по определенным путям файлы конфигурации. Обычно эту информацию легко найти в интернете. Для загрузчика systemd-boot нам необходимо в корне EFI-раздела создать каталог "loader", а в нём файл "loader.conf" с тремя строчками (привожу свои):

Параметр editor отвечает за возможность отредактировать пункт загрузочного меню перед запуском.

Рядом с loader.conf необходимо создать каталог entries — один файл в нём будет отвечать за одну загрузочную запись в boot-меню. У меня там один файл arch.conf с таким содержанием:

Я не упомянул, но довольно очевидно — ядро и initramfs должны лежать в одной файловой системе с загрузчиком, то есть на EFI-разделе. Пути к ним в конфигах отсчитываются от корня этой ФС.

Другие загрузчики

systemd-boot очень простой и предоставляет спартанского вида чёрно-белое меню. Есть варианты красивей, если душа просит красоты.

Clover. Позволяет выставлять нативное разрешение экрана, имеет поддержку мыши на экране загрузки, разные темы оформления. Дефолтная тема ужасна, конфиг в виде xml нечитаем, настроить не смог.

Различные неочевидные последствия

Вы можете легко попробовать эту схему в работе. Берёте USB-флешку, форматируете в таблицу разделов GPT, создаете FAT-раздел и копируете туда загрузчик. Комп сможет с неё стартовать.

Если просто скопировать на такую флешку boot-раздел установленного linux — система будет спокойно загружаться с флешки, не видя разницы.

В предыдущей статье я показал как войти с БИОС на разных компьютерах и ноутбуках. Но зачем туда заходят? В 90% случаев для того, чтобы поменять загрузочный диск по умолчанию и загрузить портативную операционную систему или начать новую установку Windows. На самом деле принцип везде одинаков, от вас требуется лишь немного внимательности и логичности. А чтобы получше разобраться в этом, я вам покажу несколько видео, снятых на различных компьютерах.

Два способа загрузки компьютера

Есть два варианта. Первый – выставить в БИОСе (он же SETUP) устройство загрузки по умолчанию. Это будет означать, что при каждом включении компьютер будет загружаться с указанного устройства. Если оно окажется недоступным или не загрузочным, то он попытается загрузиться с второго по списку устройства, которое вы также можете указать. Если и оно не сработает, то компьютер пойдёт дальше по списку.

Второй способ поддерживают почти все современные компьютеры и ноутбуки. Нужно при старте компьютера вызвать меню выбора загрузочного устройства. Так можно единоразово выбрать с чего грузиться, это очень удобно.

Чтобы выбрать загрузочное устройство в БИОСе первым способом нужно в него зайти и посмотреть на его интерфейс. Если это синенькие окошки, то скорей всего это Award, если серенькие – то AMI, если графический интерфейс – значит UEFI. Есть и другие варианты. В общем, просто посмотрите на скриншоты или видео, и соотнесите это с увиденным у себя.

Как загрузиться с устройства без входа в БИОС

Для этого достаточно при старте компьютера или ноутбука нажать какую-то кнопку. Например, этот BIOS Award предлагает нажать «F9» для вызова загрузочного меню:

Вызов загрузочного меню биоса Award

Там будет написано что-то похожее на «Press F9 to Select Booting Device after POST», т.е. нажмите «F9» чтобы выбрать загрузочное устройство. Нажимаем и видим следующее:

загрузочное меню компьютера

Это список обнаруженных устройств. Выбираем флешку, диск CD/DVD или ещё что-то и жмём «Enter». В AMI биосе может быть по-другому:

Вызов загрузочного меню в AMI биосе

Там написано «Press F8 for BBS POPUP». Это значит, что надо нажать «F8» чтобы появилось меню выбора. На нотбуках это может быть клавиша «F12», а меню будет таким:

меню ноутбука Lenovo

Просто выбираем что хотели и ждём загрузки. Вот видео с этим моментом:

Загрузка в UEFI BIOS

А это наглядный пример БИОСа EFI (UEFI) с графическим интерфейсом и даже работающей мышкой! Если у вас компьютер с UEFI, то при попадании в БИОС вы увидите такую картину:

UEFI BIOS

В нижней части экрана есть раздел Boot Priority , где можно с помощью мышки (перетаскиванием) выставить нужный порядок загрузки. Также можно:

приоритет устройств в UEFI биосе

Владельцы компьютеров Hewlett-Packard вероятно обнаружат такую картину в БИОСе:

BIOS Hewlett Packard

В меню «Storage –> Boot order» выберите нужное устройство, нажмите «Enter», затем передвиньте его на самый верх и ещё раз нажмите «Enter». Сохраните настройки в меню «File -> Save and Exit» .

Рассмотрим вариант с биосом Award

После входа в SETUP нужно пройти в пункт «Advanced BIOS Features». Он располагается вторым или третим сверху:

Advanced BIOS Features

Далее ситуация может разниться. В первом случае нужно зайти в пункт, похожий по названию с «Boot Seq & Floppy Setup»

Boot Seq & Floppy Setup

Во втором случае нужные нам пункты находятся сразу перед глазами:

Выбор загрузочного устройства в биосе Award

Теперь разберёмся с нужными пунктами меню:

Назначение First Boot Device

  • First Boot Device – устройство, с которого компьютер будет загружаться в первую очередь
  • Second Boot Device – второе устройство, если «First Boot Device» не окажется загрузочным
  • Third Boot Device – третье устройство, если «Second Boot Device» не окажется загрузочным

На каждое из этих «…Boot Device» задаётся жёсткий диск (или флешка), CD/DVD диск или другое загрузочное устройство.

Boot Other Device – в состоянии «Enabled» позволяет искать операционную систему на других накопителях, если ни один из вариантов не сработал.

Hard Disk Boot Priority – если в одном из «…Boot Device» мы выбрали один или несколько жёстких дисков (Hard Drive), то в этом пункте нужно выбрать какой именно жёсткий диск использовать. Это касается и флешек, потому что загрузочная флешка для компьютера считается как внешний жёсткий диск.

Таким образом, чтобы загрузиться с диска CD или DVD нужно в «First Boot Device» выбрать «CDROM» или «ATAPI CD» и больше ничего не нужно. Чтобы загрузиться с флешки «First Boot Device» выбираем «Hard Drive», а затем переходим в меню «Hard Disk Boot Priority» и передвигаем нашу флешку на самый верх с помощью кнопок «+» и «-» или «PageUp» и «PageDown»:

Выбираем флешку


Флэшка должна быть вставлена в компьютер до его включения или до перезагрузки! Иначе БИОС может её не обнаружить! Флешка может называться по-разному. Чаще всего начинается на «USB…» или «Generic USB…», ещё может быть «External Device». После проделанных действий, результат необходимо сохранить. Нажимаем «F10» (точную клавишу смотрите в подсказке внизу экрана с названием «Save», «Exit») или выходим в главное меню БИОСа и выбираем пункт «Save and Exit Setup». В красном окошке выбираем «Yes» кнопкой «Y» на клавиатуре и нажимаем «Enter»

Save and Exit

Компьютер перезагрузиться и при загрузке с установочного диска с Windows может возникнуть такой запрос на несколько секунд «Press any key to boot from CD or DVD…»

Нажмите любую клавишу

Дословно перевожу: «Нажмите любую кнопку чтобы загрузиться с CD иди DVD». Это означает, что если в этот момент не нажать любую кнопку на клавиатуре, то компьютер продолжит загружаться со следующего по списку устройства.

Посмотрите видео как войти в БИОС Award и выставить загрузочное устройство

Как выбрать с чего загрузиться в AMI BIOS

AMI БИОСы выглядят по-другому, нежели Award’ы. После захода в SETUP переходим в раздел «Boot» с помощью кнопки «вправо». Там вы обнаружите два важных пункта:

Раздел Boot биоса AMI

Раздел Hard Disk Drives

Далее идём в Boot Device Priority , заходим в 1st Boot Device и снова выбираем из списка флешку:

Раздел Boot Device Priority

Обратите внимание, что если бы мы на предыдущем шаге выбрали жёсткий диск, то и в этом списке вместо флешки был бы только жёсткий диск!

Чтобы загрузиться с CD/DVD диска нужно в этом меню выбрать «ATAPI CD-ROM» (или просто «CDROM»), при этом нет надобности заходить в меню «Hard Disk Drives». Теперь сохраняем результаты кнопкой «F10» или переходим в раздел БИОСа «Exit» и выбираем «Exit Saving Changes»

Save and Exit биоса Lenovo

На вопрос отвечаем «OK» А вот пример AMI БИОСа, который выглядит как Award. Здесь всё так же по аналогии, нужно зайти в подменю «Hard Disk Drives»

Подменю Hard Disk Drives

Выбираем с чего загрузиться

На компьютерах и ноутбуках всё примерно одинаково. Например на обычном ноутбуке Lenovo в разделе «Boot» перечислены сразу все устройства, что очень удобно. Нет путаницы с приоритетом и дополнительных пунктов меню. Достаточно просто выставить порядок загрузки устройств с помощью кнопок «F5/F6». Т.е., чтобы загрузиться с USB надо просто передвинуть флешку на самый верх:

Выбираем флешку

На всякий случай даю расшифровку:

  • USB HDD: флешка или внешний жёсткий диск
  • ATAPI CD: это CD или DVD-ROM
  • ATA HDD или просто HDD: жёсткий диск
  • USB FDD: внешний дисковод для дискет
  • USB CD: внешний привод для дисков
  • PCI LAN: загрузка по локальной сети

На некоторых моделях ноутбуков, например Lenovo G500, нужно нажать клавишу OneKey Recovery при выключенном ноутбуке.

Проблемы при загрузке с USB-устройств

Далее, проверьте не отключён ли контроллер USB в BIOS. В Award это можно проверить в разделе «Advanced Chipset Features» или «Integrated Peripherals». Ищите опцию «USB Controller», она должна быть в состоянии «Enabled»

Включение USB контроллера Award

В AMI в разделе «Advanced» опция «USB 2.0 Controller» должна быть «Enabled» и «USB 2.0 Controller Mode» в состоянии «HiSpeed»

Включение USB контроллера AMI

Ещё могут быть проблемы с гнёздами на передней панели системного блока – попробуйте подключиться к USB сзади компьютера.

uefi legacy only

Потом причина может быть в самой флешке или в диске. Они должны быть точно загрузочными! Проверить это можно на другом компьютере, где всё работает.

На очень старых компьютерах вообще нет возможности загружаться с USB-флешек. Если не существует более нового БИОСа, тогда вам поможет проект PLOP. Нужно скачать последнюю версию Plop Boot Manager и распаковать архив. Там есть файлы: plpbt.img – образ для дискеты, и plpbt.iso – образ для CD-диска.

Соответственно, если у вас есть дискета, то на неё записываете образ для дискеты, а если есть CD-R/RW диск, то записываете образ для диска. Просто переписать файл на носитель нельзя, для записи образа нужно использовать специальные программы. Далее загружаетесь с этого диска и в появившемся меню нужно выбрать своё USB-устройство. Таким образом можно загружаться с флешек даже на очень старых компьютерах.

при загрузке в Windows PE (WinPE) или программа установки Windows выберите режимы BIOS UEFI или legacy. если после установки Windows необходимо переключить режимы микропрограммы, можно использовать средство MBR2GPT .

в общем случае установите Windows с использованием более нового режима UEFI, так как он включает больше функций безопасности, чем устаревший режим BIOS. При загрузке с сети, которая поддерживает только BIOS, необходимо загрузить устаревший режим BIOS.

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

Для загрузки с UEFI или BIOS:

Откройте меню встроенного по. Можно использовать любой из следующих методов.

Загрузите компьютер и нажмите клавишу изготовителя, чтобы открыть меню. Используются общие ключи: ESC, DELETE, F1, F2, F10, F11 или F12. На планшетных ПК распространенные кнопки — это громкое уменьшение или громкость (Поиск более общих ключей и кнопок). Во время запуска часто возникает экран, в котором упоминается ключ. Если это не так или если экран слишком быстро отображается, проверьте сайт изготовителя.

 значок power button

если Windows уже установлен, на экране входа или меню выберите Power ( ) > удерживайте клавишу Shift во время выбора перезапуска. Выберите Устранение неполадок > дополнительные параметры > параметры встроенного по UEFI.

В меню встроенного по выполните загрузку на диск или сеть в режиме UEFI или BIOS:

В меню загрузочное устройство выберите команду, определяющую режим микропрограммы и устройство. Например, выберите UEFI: USB-диск или BIOS: сеть/сеть.

Для одного устройства могут отображаться отдельные команды. Например, вы можете увидеть USB-накопитель UEFI и USB-накопитель в BIOS. Каждая команда использует одно и то же устройство и носитель, но загружает компьютер в другом режиме микропрограммы.

Некоторые устройства поддерживают только один режим (UEFI или BIOS). Другие устройства позволяют загружаться в режиме BIOS только путем отключения функций безопасности UEFI вручную. Чтобы отключить функции безопасности, перейдите в раздел безопасность > безопасная загрузка и отключите эту функцию.

некоторые старые пк (Windows 7-эры или более ранней версии) поддерживают UEFI, но для этого требуется перейти к файлу загрузки. В меню встроенного по найдите параметр: "Загрузка из файла", а затем перейдите к \EFI\BOOT\BOOTX64.. EFI на Windows PE или программа установки Windows носителе.

Режимы UEFI и BIOS в WinPE

Обнаружение загрузки WinPE в режиме BIOS или UEFI

Запросите реестр, чтобы определить, в каком режиме находится устройство. Это можно сделать в командной строке:

Код возврата Режим встроенного по
0x1 BIOS
0x2 UEFI

Используйте его в скрипте:

Обратите внимание, что между delims= и " %%A находится вкладка, за которой следует пробел.

Вы всегда должны загружаться в нужный режим каждый раз.

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

Используйте предварительно отформатированные жесткие диски и используйте метод, который не форматирует диск автоматически.

Если вы хотите убедиться, что диск загружается в определенный режим, используйте диски, предварительно форматированные с помощью формата GPT для режима UEFI, или формат файла MBR для режима BIOS. при запуске установки, если компьютер загружен в неправильном режиме, Windows установка завершится сбоем. Чтобы устранить эту проблему, перезапустите компьютер в правильном режиме микропрограммы.

Удаление загрузочных файлов UEFI или BIOS

если требуется, чтобы компьютер загружался только в определенный режим, можно удалить файлы, которые Windows PE или программа установки Windows использовать для загрузки в режиме UEFI или BIOS. Удалите следующие файлы в зависимости от режима, в котором требуется выполнить загрузку.

Загрузка только в режиме UEFI

удалите файл bootmgr из корневого каталога Windows PE или программа установки Windows носителя. Это предотвращает запуск устройства в режиме BIOS.

Загрузка только в режиме BIOS

удалите папку efi из корня Windows PE или программа установки Windows носителя. Это предотвращает запуск устройства в режиме UEFI.

Как устроена загрузка современных ОС? Как при установке системы настроить загрузку посредством UEFI, не утонув в руководствах и ничего не сломав?

Я обещал "самое краткое руководство". Вот оно:

  1. Создаём на диске таблицу разделов GPT
  2. Создаём FAT32-раздел на пару сотен мегабайт
  3. Скачиваем из интернета любой UEFI-загрузчик
    (нам нужен сам загрузчик, это один бинарный файл!)
  4. Переименовываем и кладем этот файл на созданный раздел по адресу /EFI/Boot/bootx64.efi
  5. Создаём текстовый конфиг, кладем его там, где загрузчик ожидает его увидеть
    (настройка и местоположение конфига зависят от конкретной реализации загрузчика, эта информация доступна в интернете)
  6. После перезагрузки видим меню загрузчика
    (Если на диске установлена Windows 8 или 10 — с большой вероятностью это руководство сокращается до пунктов 3 — 5.)

TL;DR не надо прописывать путь к загрузчику в новых загрузочных записях UEFI — надо файл загрузчика расположить по стандартному "пути по-умолчанию", где UEFI его найдет, и вместо загрузочного меню UEFI пользоваться меню загрузчика, которое гораздо проще и безопаснее настраивается

Как делать не надо

Есть, на самом-то деле, несколько способов настроить UEFI-загрузку. Я начну с описания других вариантов — чтобы было понятно, как (и почему) делать не надо. Если вы пришли за руководством — мотайте в самый низ.

Не надо лезть в NVRAM и трогать efivars

Наиболее "популярная" процедура установки загрузчика в систему такова: установщик ОС создаёт специальный раздел, на нём — структуру каталогов и размещает файлы загрузчика. После этого он с помощью особой утилиты (efibootmgr в linux, bcdedit в windows) взаимодействует с прошивкой UEFI-чипа, добавляя в неё загрузочную запись. В этой записи указывается путь к файлу загрузчика (начиная от корня файловой системы) и при необходимости — параметры. После этого в загрузочном меню компьютера появляется опция загрузки ОС. Для linux существует возможность вообще обойтись без загрузчика. В загрузочной записи указывается путь сразу к ядру вместе со всеми параметрами. Ядро должно быть скомпилировано с опцией EFISTUB (что давно является стандартом для большинства дистрибутивов), в этом случае оно содержит в себе заголовок "исполняемого файла EFI", позволяющий прошивке его запускать без внешнего загрузчика.

При старте системы, когда пользователь выбирает нужную ему загрузочную запись, прошивка UEFI сперва ищет на прописанном в этой записи диске особый EFI-раздел, обращается к файловой системе на этом разделе (обязательно FAT или FAT32), и запускает загрузчик. Загрузчик считывает из файла настроек свой конфиг, и либо грузит ОС, либо предоставляет загрузочное меню. Ничего не замечаете? Да, у нас два загрузочных меню — одно на уровне прошивки чипа UEFI, другое — на уровне загрузчика. В реальности о существовании второго пользователи могут даже не догадываться — если в меню всего один пункт, загрузчик Windows начинает его грузить без лишних вопросов. Увидеть экран с этим меню можно, если поставить вторую копию Windows или просто криво её переустановить.

Обычно для управления загрузочными записями руководства в интернете предлагают взаимодействовать с прошивкой UEFI. Есть аж пять основных вариантов, как это можно сделать: efibootmgr под linux, bcdedit в windows, какая-то софтина на "Маках", команда bcfg утилиты uefi shell (запускается из-под UEFI, "на голом железе" и без ОС, поскольку скомпилирована в том самом особом формате) и для особо качественных прошивок — графическими средствами UEFI (говоря популярным языком, "в настройках BIOS").

За всеми вышенаписанными "многобуков" вы могли легко упустить такую мысль: пользователь, чтобы изменить настройки программной части (например, добавить параметр запуска ОС), вынужден перезаписывать flash-память микросхемы на плате. Есть ли тут подводные камни? О да! Windows иногда способна сделать из ноутбука кирпич, linux тоже, причём разными способами. Качество прошивок часто оставляет желать лучшего — стандарты UEFI либо реализованы криво, либо не реализованы вообще. По логике, прошивка обязана переживать полное удаление всех переменных efivars без последствий, не хранить в них критичных для себя данных и самостоятельно восстанавливать значения по-умолчанию — просто потому что пользователь имеет к ним доступ, и вероятность их полного удаления далека от нуля. Я лично в процессе экспериментов неоднократно (к счастью, обратимо) "кирпичил" свой Lenovo — из загрузочного меню исчезали все пункты, включая опцию "зайти в настройки".

Работа с загрузочными записями UEFI — тоже не сахар. К примеру, утилита efibootmgr не имеет опции "редактировать существующую запись". Если ты хочешь немного изменить параметр ядра — ты удаляешь запись целиком и добавляешь её снова, уже измененную. При этом строка содержит в себе двойные и одинарные кавычки, а также прямые и обратные слеши в не особо очевидном порядке. Когда я наконец заставил эту магию работать — я сохранил её в виде bash-скриптов, которые до сих пор валяются у меня в корневой ФС:

Не надо использовать GRUB

Это чёртов мастодонт, 90% функциональности которого предназначено для дисков с MBR. Для настройки необходимо отредактировать ряд файлов, после чего выполнить команду генерации конфига. На выходе получается огромная малопонятная нормальному человеку простыня. В составе — гора исполняемых файлов. Ставится командой, которую просто так из головы не возьмешь — надо обязательно лезть в документацию

Для сравнения — самый простенький UEFI-bootloader, который есть в составе пакета systemd, ставится командой

Эта команда делает ровно две вещи: копирует исполняемый файл загрузчика на EFI-раздел и добавляет свою загрузочную запись в прошивку. А конфиг для неё занимает ровно СЕМЬ строчек.

"Самое краткое руководство" — чуть более подробно

Загрузочная запись нам не нужна — дело в том, что при выставлении в настройках BIOS загрузки с диска прошивка UEFI сначала ищет на нём EFI-раздел, а затем пытается исполнить файл по строго фиксированному адресу на этом разделе: /EFI/Boot/BOOTX64.EFI

Что такое "EFI-раздел"? В теории, он должен иметь особый тип "EFI System" (ef00). На практике, годится первый раздел на GPT-диске, отформатированный в FAT32 и имеющий достаточно места, чтобы разместить загрузчик и вспомогательные файлы (если есть).

Пункт 3: "Скачиваем из интернета любой UEFI-загрузчик". Что это значит? Загрузчик — это просто исполняемый файл определенного формата, к которому в комплекте идет конфиг. К примеру, если у вас есть под рукой установленный пакет с systemd — файл загрузчика можно найти по адресу /usr/lib/systemd/boot/efi/systemd-bootx64.efi, переименовать его в bootx64.efi и скопировать в /EFI/Boot/ на EFI-разделе. Нет под рукой systemd? Скачайте архив с сайта Archlinux. Или с репозитария Ubuntu. Или Debian. Есть под рукой система с Windows? Возьмите виндовый загрузчик оттуда, тоже сгодится )) Если сумеете настроить, я честно говоря не пробовал.

Пункт 4: "Настроить конфиг". Как и обычная программа, когда загрузчик запускается — он ожидает найти по определенным путям файлы конфигурации. Обычно эту информацию легко найти в интернете. Для загрузчика systemd-boot нам необходимо в корне EFI-раздела создать каталог "loader", а в нём файл "loader.conf" с тремя строчками (привожу свои):

Параметр editor отвечает за возможность отредактировать пункт загрузочного меню перед запуском.

Рядом с loader.conf необходимо создать каталог entries — один файл в нём будет отвечать за одну загрузочную запись в boot-меню. У меня там один файл arch.conf с таким содержанием:

Я не упомянул, но довольно очевидно — ядро и initramfs должны лежать в одной файловой системе с загрузчиком, то есть на EFI-разделе. Пути к ним в конфигах отсчитываются от корня этой ФС.

Другие загрузчики

systemd-boot очень простой и предоставляет спартанского вида чёрно-белое меню. Есть варианты красивей, если душа просит красоты.

Clover. Позволяет выставлять нативное разрешение экрана, имеет поддержку мыши на экране загрузки, разные темы оформления. Дефолтная тема ужасна, конфиг в виде xml нечитаем, настроить не смог.

Различные неочевидные последствия

Вы можете легко попробовать эту схему в работе. Берёте USB-флешку, форматируете в таблицу разделов GPT, создаете FAT-раздел и копируете туда загрузчик. Комп сможет с неё стартовать.

Если просто скопировать на такую флешку boot-раздел установленного linux — система будет спокойно загружаться с флешки, не видя разницы.

Читайте также: