Вы тут: Главная → Popular → Создание структуры разделов в разметке GPT на ПК с UEFI
Вы задумывались над тем, что происходит во время установки Windows после того, как вы нажимаете волшебную кнопку Далее в окне управления дисками?
Программа установки создает конфигурацию разделов, над каждым из которых она впоследствии выполняет различные действия.
Эта запись открывает серию статей о тонкостях создания разделов, а также резервного копирования и восстановления средствами Windows в разметке GPT на ПК с UEFI. Материала слишком много для одной статьи, поэтому первой ласточкой полетит базовая информация о разделах GPT и пример создания их структуры. Я обязательно буду опираться на этот рассказ, когда дело дойдет до создания и восстановления образов системы в реальных ситуациях.
[+] Сегодня в программе
Давайте рассмотрим примерную конфигурацию дисков в разметке GPT на UEFI-системе. Порядок разделов зависит от ОС.
Увеличить рисунок
System (EFI)
Раздел EFI, отформатированный в FAT32, является обязательным для разметки GPT на системах с UEFI. Стандартный размер раздела EFI составляет 100MB, но на дисках расширенного формата 4K Native (секторы 4KB) он увеличен до 260MB ввиду ограничений FAT32. Изготовители ПК могут хранить на этом разделе какие-то свои инструменты, поэтому его размер варьируется в зависимости от производителя.
В разметке GPT раздел EFI выполняет одну из ролей, которая возложена на раздел System Reserved в разметке MBR. Он содержит хранилище конфигурации загрузки (BCD) и файлы, необходимые для загрузки операционной системы.
Во время установки Windows на нем создается загрузка всего одной командой утилиты bcdboot. Программа установки знает букву раздела Windows (к нему применен install.wim):
bcdboot W:\Windows
Команда создает в корне раздела EFI папку EFI\Microsoft\Boot, копирует в нее файлы загрузки и формирует конфигурацию загрузки (BCD).
В некоторых элементах графического интерфейса русской Windows (например, в diskmgmt.msc) EFI ошибочно называется шифрованным системным разделом. Никакого шифрования там нет, равно как в английской ОС об этом не упоминается.
MSR (Microsoft System Reserved)
Раздел отформатирован в NTFS и занимает в Windows 8 и 8.1 — 128MB, а в Windows 10 — 16MB. Он также является обязательным для разметки GPT, потому что она не позволяет использовать скрытые секторы диска (в отличие от MBR). Как следствие, раздел MSR необходим для служебных операций встроенного и стороннего ПО (например, конвертирование простого диска в динамический). Но Windows может работать и без него, конечно. 1
Несмотря на наличие “System Reserved” в названии, раздел MSR не имеет ничего общего с разделом System Reserved в разметке MBR. Кроме того, он не виден в файловых менеджерах и оснастке управления дисками, хотя diskpart его показывает.
Windows
Это раздел с операционной системой, к которому применяется стандартный образ install.wim или настроенный образ.
Windows RE
В разметке GPT раздел Windows RE размером 300-750MB (в зависимости от версии ОС) содержит среду восстановления. Аналогичный раздел есть и на системах с разметкой MBR – там он называется System Reserved и наряду с RE содержит файлы, необходимые для загрузки Windows.
Среда восстановления находится в файле winre.wim.
Он попадает на раздел Windows RE в процессе установки ОС на отформатированный диск или во время подготовки ПК изготовителем. В обоих случаях принцип одинаковый:
- В процессе создания структуры разделов для Windows RE назначается специальный атрибут
0x8000000000000001
. Он является комбинацией двух атрибутов – один блокирует автоматическое назначение буквы диска, а другой – помечает раздел как обязательный для работы системы, что препятствует его удалению из оснастки управления дисками. - К разделу Windows применяется образ системы — стандартный install.wim или настроенный custom.wim. Как следствие, winre.wim оказывается в папке Windows\System32\Recovery.
- На разделе Windows RE создается папка Recovery\WindowsRE, после чего это расположение среды восстановления регистрируется утилитой reagentc.
W:\Windows\System32\reagentc.exe /setreimage /path T:\Recovery\WindowsRE /target W:\Windows
Утилита входит в состав Windows, но не Windows PE или RE, поэтому запускается она именно с раздела операционной системы. Наряду с регистрацией RE команда перемещает winre.wim с раздела Windows на служебный раздел Windows RE. Если вы хотите увидеть файл, сначала назначьте диску букву с помощью утилиты diskpart. Поскольку файл имеет атрибуты системный и скрытый, быстрее всего его покажет команда dir /ah.
В результате этих действий загрузка в среду восстановления происходит с раздела Windows RE. Подробности процесса я покажу в грядущем рассказе о восстановлении резервной копии.
Раздел Windows RE не является обязательным для работы Windows. Среда восстановления может отсутствовать или находиться прямо на разделе с операционной системой. Однако размещение Windows RE на отдельном разделе преследует две цели:
- Загрузка в среду восстановления на ПК с зашифрованным разделом Windows. В среду восстановления невозможно загрузиться, если она находится на разделе с Windows, который зашифрован. Раздел Windows RE исключен из шифрования, поэтому всегда можно попасть в среду и воспользоваться ее инструментами.
- Защита среды восстановления от шаловливых рук. Поскольку раздел невозможно удалить в оснастке управления дисками, вероятность его смерти по неосторожности несколько ниже, хотя при желании его несложно удалить с помощью diskpart.
Другие разделы (Recovery и т.д.)
Изготовители ПК также добавляют дополнительные разделы, например, один для хранения своих инструментов восстановления (заменяет стандартный Windows RE), а другой — с резервным образом системы для отката к фабричным настройкам. Они могут иметь особые атрибуты GPT по тем же причинам, что и Windows RE.
Так, процесс развертывания ОС на ПК может начинаться с сохранения заводского WIM-образа на разделе R. Это позволяет сначала применить его к разделу с системой, а затем зарегистрировать в качестве резервного образа одной командой.
W:\Windows\System32\reagentc /setosimage /path R: /target W:\Windows /index 1
В результате на этот образ опирается механизм сброса к заводским настройкам Windows 11 и Windows 10 (с оговорками), а также средства Reset и Refresh Your PC в Windows 8.1, хотя производители могут внедрять и свои пути отката по нажатию функциональных клавиш.
Вид на конфигурацию разделов из Windows
В оснастке управления дисками (diskmgmt.msc) описанная выше конфигурация выглядит так.
Разделы идут в том же порядке:
- 100MB – EFI
- MSR (не отображается)
- C – Windows, раздел с ОС
- 583MB – Windows RE
В утилите diskpart эту конфигурацию можно посмотреть командами list par (после выбора диска) и list vol.
Вы можете легко сопоставить тома с разделами, ориентируясь на столбец «Размер». Обратите внимание, что список томов не содержит раздела MSR размером 16MB, как и в оснастке.
Создание конфигурации разделов для разметки GPT
Вы можете создать рассмотренную выше конфигурацию:
- С помощью графического интерфейса программы установки Windows
- В командной строке утилитой diskpart.
Я покажу оба способа, но сначала объясню, почему мои рекомендации менялись со временем.
История моих рекомендаций
Изначально эта статья и первая версия скрипта diskpart в ней были призваны предотвратить проблему с недостаточным размером раздела RE, которая проявлялась при создании образа системы встроенными средствами в Windows 8 и 8.1. Когда это потеряло актуальность, я стал советовать по возможности создавать структуру разделов программой установки Windows.
Смена курса была обусловлена и другими причинами:
- Рекомендуемая структура разделов у Microsoft варьировалась в разных поколениях ОС, а затем и в разных версиях Windows 10. Так, отличается размер и расположение раздела Windows RE (он необходим, например, для восстановления диска, зашифрованного BitLocker).
- Microsoft сама не успевала оперативно отражать эти изменения в своей документации, куда уж мне
Да и не планировал я создавать репозиторий скриптов diskpart на каждый чих.
- Программа установки автоматически создает правильную структуру разделов под конкретную ОС, на все случаи жизни и в соответствии с текущим подходом Microsoft.
Однако с последним пунктом появился нюанс, начиная с Windows 10 2004. Вплоть до Windows 10 1909 все разделы создавались до первой перезагрузки. Поэтому было удобно и достаточно использовать графический интерфейс управления дисками программы установки Windows на этапе WindowsPE.
Однако с версии 2004 раздел восстановления стал создаваться только после первой перезагрузки.
Дожидаться этого не всегда целесообразно, а также сложно для неопытных пользователей, которым этот способ в первую очередь и рекомендовался. Ведь после первой перезагрузки все файлы Windows уже скопированы на диск, а загрузка идет в ОС, а не с установочного диска.
Поэтому сейчас в моих рекомендациях нет нужды. Если требуется среда восстановления на отдельном разделе нежели на разделе с ОС, логично сразу создавать структуру с помощью diskpart.
Способ 1 — программа установки Windows
Начиная с Windows 10 2004 (20H1) этим способом создается только три раздела: EFI, MSR и Windows. Раздел Windows RE создается на следующем этапе установки ОС.
Этот способ работает только при наличии установочного диска, конечно. Достаточно начать установку, дойти до экрана конфигурации дисков и создать раздел на незанятом пространстве.
Программа установки автоматически создаст все необходимые разделы.
Способ 2 – утилита diskpart
Несмотря на отсутствие графического интерфейса, этот способ обладает важным преимуществом: он работает вне зависимости от того, есть ли в наличии установочный диск.
Скрипт ниже взят из документации Microsoft на начало 2022 года и подходит для Windows 11 и Winddows 10 2004+. Скрипт создает структуру разделов как на картинке.
Все команды выполняются в среде Windows PE.
Для ускорения процесса я рекомендую вам заранее сохранить файл с со вторым блоком команд, например, на установочной флэшке.
В команде ниже замените N на номер диска.
diskpart list disk sel disk N
Теперь выполняйте следующие команды или откройте ранее сохраненный файл в блокноте, скопируйте весь текст и вставьте правой кнопкой мыши в окно командной строки. Если блокнот еще не открыт, необязательно выходить из diskpart. Откройте еще одну командную строку сочетанием Shift + F10 и наберите notepad.
clean convert gpt rem == 1. System partition ========================= create partition efi size=100 rem ** NOTE: For Advanced Format 4Kn drives, rem change this value to size = 260 ** format quick fs=fat32 label="System" assign letter="S" rem == 2. Microsoft Reserved (MSR) partition ======= create partition msr size=16 rem == 3. Windows partition ======================== rem == a. Create the Windows partition ========== create partition primary rem == b. Create space for the recovery tools === rem ** Update this size to match the size of rem the recovery tools (winre.wim) rem plus some free space. rem Vadim: 760 for Windows 11 23H2 shrink minimum=760 rem == c. Prepare the Windows partition ========= format quick fs=ntfs label="Windows" assign letter="W" rem === 4. Recovery partition ====================== create partition primary format quick fs=ntfs label="Recovery" assign letter="R" set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac" gpt attributes=0x8000000000000001 lis vol lis par exit
Да, я знаю, что diskpart можно «заскриптовать», но я не могу предугадать правильный номер диска, поэтому метод копирования-вставки оптимален с точки зрения краткости объяснений и скорости решения задачи
Структура разделов создана! Две последних команды перед выходом из diskpart покажут вам расклад по томам и разделам диска.
Здесь я хочу обратить ваше внимание на два момента:
- Ключевым разделам назначены буквы W, S и R, но они действуют исключительно в этом сеансе Windows PE. В загруженной системе только раздел Windows получит букву — C.
- Утилита diskpart автоматически создает первый раздел со смещением 1024KB, что оптимально для SSD.
Дискуссия
Эта запись не претендует на всеобъемлющий FAQ по GPT, тем более что он уже есть у Microsoft (мне кажется, я даже видел его русскую версию, но сходу не нашел). Я просто хотел приоткрыть завесу над одним из этапов установки Windows, а также прояснить весьма запутанную терминологию и снять базовые вопросы о создании структуры разделов. В следующей статье я расскажу о тонкостях и стратегиях резервного копирования ПК с UEFI.
Вообще, наличие UEFI в материнской плате не исключает возможности использования разметки MBR. Кстати, напишите в комментариях, какая у вас система и разметка! Если MBR на UEFI, расскажите, почему так получилось. Если у вас возникали проблемы при создании разметки GPT, напишите, в чем они заключались и как вы их решили.
Время на прочтение6 мин
Количество просмотров583K
Как устроена загрузка современных ОС? Как при установке системы настроить загрузку посредством UEFI, не утонув в руководствах и ничего не сломав?
Я обещал «самое краткое руководство». Вот оно:
- Создаём на диске таблицу разделов GPT
- Создаём FAT32-раздел на пару сотен мегабайт
- Скачиваем из интернета любой UEFI-загрузчик
(нам нужен сам загрузчик, это один бинарный файл!) - Переименовываем и кладем этот файл на созданный раздел по адресу /EFI/Boot/bootx64.efi
- Создаём текстовый конфиг, кладем его там, где загрузчик ожидает его увидеть
(настройка и местоположение конфига зависят от конкретной реализации загрузчика, эта информация доступна в интернете) - После перезагрузки видим меню загрузчика
(Если на диске установлена 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-скриптов, которые до сих пор валяются у меня в корневой ФС:
efibootmgr -c -L "Archlinux (debug)" -l '\EFI\archlinux\vmlinuz-linux' -u "root=/dev/mapper/vg1-lvroot rw initrd=\EFI\archlinux\initramfs-linux.img systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1M enforcing=0"
Не надо использовать GRUB
Это чёртов мастодонт, 90% функциональности которого предназначено для дисков с MBR. Для настройки необходимо отредактировать ряд файлов, после чего выполнить команду генерации конфига. На выходе получается огромная малопонятная нормальному человеку простыня. В составе — гора исполняемых файлов. Ставится командой, которую просто так из головы не возьмешь — надо обязательно лезть в документацию
grub-install --target=x86_64-efi --efi-directory=esp_mount --bootloader-id=grub
Для сравнения — самый простенький UEFI-bootloader, который есть в составе пакета systemd, ставится командой
bootctl install --path=/boot
Эта команда делает ровно две вещи: копирует исполняемый файл загрузчика на 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» с тремя строчками (привожу свои):
default archlinux
timeout 10
editor 1
Параметр editor отвечает за возможность отредактировать пункт загрузочного меню перед запуском.
Рядом с loader.conf необходимо создать каталог entries — один файл в нём будет отвечать за одну загрузочную запись в boot-меню. У меня там один файл arch.conf с таким содержанием:
title Arch Linux
linux /efi/archlinux/vmlinuz-linux
initrd /efi/archlinux/initramfs-linux.img
options root=/dev/mapper/vg1-lvroot rw initrd=\EFI\archlinux\intel-ucode.img
Я не упомянул, но довольно очевидно — ядро и initramfs должны лежать в одной файловой системе с загрузчиком, то есть на EFI-разделе. Пути к ним в конфигах отсчитываются от корня этой ФС.
Другие загрузчики
systemd-boot очень простой и предоставляет спартанского вида чёрно-белое меню. Есть варианты красивей, если душа просит красоты.
rEFind — очень красивый загрузчик. Скачать можно тут в виде deb-пакета. Использую на своём ноуте. Умеет создавать загрузочное меню автоматически, без конфига — просто сканируя файлы.
Clover. Позволяет выставлять нативное разрешение экрана, имеет поддержку мыши на экране загрузки, разные темы оформления. Дефолтная тема ужасна, конфиг в виде xml нечитаем, настроить не смог.
Различные неочевидные последствия
Вы можете легко попробовать эту схему в работе. Берёте USB-флешку, форматируете в таблицу разделов GPT, создаете FAT-раздел и копируете туда загрузчик. Комп сможет с неё стартовать.
Если просто скопировать на такую флешку boot-раздел установленного linux — система будет спокойно загружаться с флешки, не видя разницы.
Представим ситуацию, что по какой то причине, вместо обычной загрузки операционной системы, перед вами появилась командная строка UEFI Shell, с сообщением «Press ESC in 1 in seconds to skip staurtup.nsh or any other key to continue». Что делать?
Содержание
- Возможные Причины
- Что Делать в UEFI Shell
- Вводим Команды
- Настройка Консоли
- Вывод Загрузочных Записей
- Проверка Наличия EFI-раздела
- Проверка Наличия EFI-приложения
- Добавление Загрузочных Записей
- Резюме
Возможные Причины
Загрузка в UEFI происходит согласно загрузочным записям. Если в BIOS данные записи представляли просто список имеющихся жестких дисков, то UEFI в данном плане действует по другой схеме. По умолчанию UEFI определяет все диски с таблицей разделов MBR и GPT, с последующим поиском на них разделов отформатированных в поддерживаемую файловую систему. Таковой является FAT(12, 16, 32). Данные диски попадают в загрузочный список. Приоритет загрузки данного списка можно конфигурировать через интерфейс UEFI, или с помощью командной оболочки UEFI Shell.
Каждая загрузочная запись может указывать либо просто на диск, в котором содержится соответствующий FAT-раздел, либо на конкретный *.efi файл. В первом случае UEFI будет искать загрузочный файл по умолчанию. Таковыми, к примеру, являются /EFI/boot/bootx64.efi, /EFI/boot/bootia32.efi, /EFI/boot/bootarm.efi или /EFI/boot/bootaa64.efi. В данном случае указаны файлы boot*.efi предназначены для разных архитектур ПК.
Исполняемые файлы boot*.efi выполняют запуск основного загрузчика операционной системы, таких как Windows Boot Manager, GRUB2, rEFInd, Clover, Xorboot и других. Загрузчик в свою очередь, уже выполняет запуск ядра операционной системы.
Учитывая все сказанное, можно сделать вывод. Раз перед нами красуется UEFI Shell, то значит подсистеме UEFI по какой то причине не удалось найти необходимый загрузочный *.efi файл. Он может быть поврежденным, или просто отсутствовать. Или как говорилось немного выше, может быть просто изменен приоритет загрузочных записей. И последний вариант, просто отсутствует необходимая загрузочная запись.
UEFI Shell — это инструмент управления загрузкой вручную. Если вы не инициировали запуск данной командной оболочки, то это означает, что нужно проверить загрузочную конфигурацию. И не обязательно делать это именно через командную строку. Сперва разбираемся с конфигурацией в меню UEFI. И если результатов нет, то переходим к следующему разделу.
Что Делать в UEFI Shell
Оказавшись в UEFI Shell, первым делом необходимо будет, на удивление, настроить цвета консоли и ее размер. Делается это для того, чтобы избавиться от нечитаемого синего текста на черном фоне. Изменение размера консоли, позволит отображать больше информации. Подправить внешний вид помогут команды cls и mode.
После настройки внешнего вида, необходимо будет просмотреть информацию о загрузочных записях. Эта информация позволит определить, какие загрузочные EFI-приложения должны грузиться, в какой последовательности, и на каких разделах они должны располагаться. Команда bcfg.
Последний шаг, это проверка вручную возможность загрузки с указанного EFI-приложения или диска.
Важным нюансом данного шага, является то, что необходимое EFI-приложение может присутствовать. Но может отсутствовать приложение которое запускается этим приложением. Или оно может быть повреждено.
К примеру, приложение /EFI/Boot/bootx64.efi, указанное в загрузочной записи, запускает /EFI/Microsoft/Boot/bootmgfw.efi, которое запускает приложение выполняющее запуск операционной системы с другого раздела /Windows/System32/Boot/winload.efi.
Если же загрузочная запись указывает просто на диск, то при загрузке с такой записи, на указанном накопителе будет производиться поиск загрузочного EFI-раздела, и в случае его нахождения, поиск на нем загрузочного EFI-приложения по умолчанию (
/efi/boot/boot*.efi
).
Для такой записи необходимо проверить наличие на диске EFI-раздела, и EFI-приложения расположенного в папке /EFI/boot/. В этом помогут команды map, cd и dir.
Вводим Команды
Все последующие операции будут производиться на виртуальной машине VirtualBox. На виртуальный диск которой, установлено две операционные системы, Windows 10 и Ubuntu 18.10. В качестве основного загрузчика используется GRUB2. Загрузчик Windows Boot Manager, так же присутствует, но не используется.
Не лишним будет, перед началом работы с UEFI Shell, ознакомиться с описанием данной командной оболочки, доступным по этой ссылке https://www.bootdev.ru/2018/05/EFI-Shell.html.
Настройка Консоли
Зададим параметры цвета фона и текста оболочки UEFI Shell. Оптимальными для читабельности, на мой взгляд, являются цвета — серый для фона, и черный для текста.
cls 7 0
Доступные варианты цветов можно посмотреть в справке по команде.
cls -? -b
Размер консоли задается командой mode. Сперва вводим данную команду без каких либо аргументов, чтобы определить доступные разрешения консоли.
А уже после, с указанием нужного разрешения.
mode 128 40
Вывод Загрузочных Записей
Любую проблему загрузки, нужно начинать с анализа загрузочных записей. Выведем список текущих записей.
bcfg boot dump
Текущая загрузочная конфигурация состоит из трех записей.
Запись 0 — загрузка с дисковода.
Запись 1 — загрузка с жесткого диска.
Запись 2 — загрузка встроенной командной оболочки UEFI Shell.
Из присутствующих записей, только одна может осуществлять загрузку операционной системы, это запись под номером 1 (по факту вторая). Запоминаем номер диска и его тип из параметра DevPath.
Если имеются проблемы с загрузкой операционной системы, то необходимо проверить, наличие указанного диска, и присутствие на нем EFI-радела и EFI-приложения.
Проверка Наличия EFI-раздела
Все распознанные дисковые (или блочные) устройства можно просмотреть командой map.
Вывод команды, представляет список точек монтирования FSx: и BLKx:, где x это номер.
Точки монтирования начинающиеся с префикса FS (File System), указывают на разделы или диски (в данном случае имеются в виду CD-диски) файловую систему которых подсистема UEFI смогла определить. То есть, с таким разделом/диском можно полноценно работать. Чтение, редактирование, создание, копирование, удаление, перемещение файлов и каталогов.
Точки монтирования начинающиеся с префикса BLK, это разделы или диски (в этом случае, подразумеваются любые диски), файловая система которых неизвестна UEFI. Или это точка монтирования многотомного диска, то есть она указывает на сам диск, а не на его разделы. Каждый раздел этого диска так же будет иметь свою точку монтирования.
Для понимания, ниже, на снимке экрана, отмечены все точки монтирования указывающие на диски (то есть доступ к данным начинается с первого сектора диска).
Все что не отмечено, это разделы отмеченных дисков.
Исключением из правила, что точки монтирования BLK не определяются, так же возможны. А возможны они если к примеру есть точка монтирования FS и BLK указывающие на один и тот же раздел/диск. Ниже, на снимке, отмечены таковые.
Теперь собственно ответ на вопрос, какой из указанных разделов или дисков может являться для подсистемы UEFI загрузочным, то есть может быть EFI-разделом. Таким может быть любая FSx: точка монтирования. Здесь логика проста, если UEFI может прочитать содержимое указанной точки монтирования, то значит возможен поиск загрузчика по умолчанию (тот что располагается в папке /efi/boot/).
В предыдущем разделе, при просмотре загрузочных записей, мы выяснили что загрузочным диском является диск
Sata(0x0, 0x0, 0x0)
. К данному диску относятся следующие записи, отмеченные на снимке ниже.
Понятной в плане файлового доступа, на уровне UEFI, является лишь запись — FS0:. Эта точка монтирования в данном случае, является загрузочным EFI-разделом (по крайней мере для подсистемы UEFI).
Что было бы, если доступных разделов было бы больше одного. При условии что загрузочная запись указывает на диск в целом. В этом случае, загрузка проходила бы в порядке очереди следования разделов. До момента, пока не будет обнаружено *.efi приложение запускаемое по умолчанию. Нам, в этом случае, пришлось бы проверять каждый на наличие соответствующих загрузочных файлов.
Проверка Наличия EFI-приложения
Определившись с разделом, который может выступать в качестве загрузочного, необходимо проверить наличие на нем соответствующих загрузочных файлов. Из прошлого раздела, мы выяснили, что в качестве такого может выступать раздел смонтированный под меткой FS0.
Для удобства восприятия, далее по тексту, метки точек монтирования, я буду называть дисками. По аналогии с дисками операционной системы Windows, буква после которой идет знак двоеточия. UEFI Shell в этом плане, как раз копирует, по своим повадкам в большей степени, именно командную оболочку Windows CMD.
Выполним переход на диск FS0.
FS0:
Приглашение ввода команд изменится, и будет отображать текущее ваше местоположение в файловой системе. На данный момент это корень диска FS0. Просмотрим его содержимое.
ls
В корне диска, присутствует только каталог EFI. Перейдем в данный каталог и посмотрим что в нем находится.
cd EFI
ls
Внутри каталога EFI находится три подкаталога Boot, Microsoft и ubuntu. Каталог Boot является в данном случае загрузочным по умолчанию. В нем располагаются загрузочные приложения boot*.efi, которые запускаются подсистемой UEFI автоматически. Просмотрим содержимое данного каталога.
ls Boot
Вывод команды показывает, что в каталоге Boot содержится три файла, один из которых bootx64.efi. Данный файл запускается подсистемой UEFI автоматически. Хочу обратить ваше внимание на цвета данных файлов, в выводе команды ls, они зеленые. Это говорит о том, что данные файлы являются исполняемыми, и их можно запустить вручную.
Если сейчас выполнить запуск файла bootx64.efi, то загрузится загрузчик GRUB2.
Boot\bootx64.efi
Каталоги Microsoft и ubuntu, содержат файлы загрузчиков Windows Boot Manager и GRUB2 соответственно.
ls ubuntu
ls Microsoft
Для каталога Microsoft, основные файлы загрузчика располагаются в подкаталоге Boot.
ls Microsoft\Boot -b
Основной загрузчик на данный момент GRUB2. Это означает, что файл /EFI/Boot/bootx64.efi как то использует содержимое каталога /EFI/ubuntu/. Будь то запуск исполняемого файла, либо чтение файла конфигурации. Взглянем внимательно содержимое папок /EFI/Boot/ и /EFI/ubuntu/.
Обратите внимание на файлы shimx64.efi и bootx64.efi, а точнее на их размер. Думаю вы догадались, что данные файлы идентичны. А это означает что, файлу bootx64.efi нет смысла запускать свою копию. Остается два варианта, либо это файл grubx64.efi, что более очевидно исходя из имени файла, либо mmx64.efi. Запустим файл mmx64.efi, чтобы убедиться что это не то приложение.
ubuntu\mmx64.efi
Ожидания подтвердились, открылся явно не загрузчик GRUB2.
Подведем промежуточный итог. Файл /EFI/Boot/bootx64.efi на само деле является файлом /EFI/ubuntu/shimx64.efi. Приложение /EFI/Boot/bootx64.efi при запуске, вызывает другое приложение, а именно /EFI/ubuntu/grubx64.efi. В последнем можно убедиться, просто переименовав файл /EFI/ubuntu/grubx64.efi, с последующей попыткой загрузки с данного диска.
Что полезного можно извлечь из этой информации? Самое важное, это то, что папка /EFI/ubuntu/ содержит полный набор файлов. Если вдруг по какой либо причине, оригинальный файл /EFI/Boot/bootx64.efi будет удален или поврежден, то его можно будет лего восстановить, простым копированием файла /EFI/ubuntu/shimx64.efi с последующим переименованием в bootx64.efi.
Такое поведение, характерно и для директории /EFI/Microsoft/Boot/. В ней так же содержится все необходимое. Роль файла /EFI/Boot/bootx64.efi будет исполнять /EFI/Microsoft/Boot/bootmgfw.efi. Который в свою очередь будет запускать файл /EFI/Microsoft/Boot/bootmgr.efi. То есть, выполнив такую подмену, вместо загрузчика GRUB2 будет запускаться Windows Boot Manager. Попробуем провести такую подмену.
# переименование текущего bootx64.efi
mv Boot\bootx64.efi Boot\bootx64.efi_
# копирование файла bootmgfw.efi в bootx64.efi
cp Microsoft\Boot\bootmgfw.efi Boot\bootx64.efi
# просмотр полученного результата
ls Boot
Пробуем загрузиться.
Windows Boot Manager успешно запустился, и загрузил операционную систему Windows 10.
Чтобы вернуть на место загрузчик GRUB2, достаточно просто удалить (или переименовать) текущий файл /EFI/Boot/bootx64.efi, и переименовать /EFI/Boot/bootx64.efi_ к своему прежнему имени bootx64.efi.
# переходим в каталог Boot
cd Boot
# смотрим список файлов
ls
# удаляем текущий файл bootx64.efi (стартер загрузчика Windows)
rm bootx64.efi
# переименовываем обратно, то есть возвращаем на место файл загруpчика GRUB2
mv bootx64.efi_ bootx64.efi
# смотрим что получилось
ls
Добавление Загрузочных Записей
При обычных условиях, в моем примере с виртуальной машиной, происходит загрузка исполняемого файла по умолчанию /EFI/Boot/bootx64.efi. Этому способствует загрузочная запись указывающая на диск в целом.
bcfg boot dump
В прошлой главе, для того чтобы вернуть вместо загрузчика GRUB2 загрузчик Windows Boot Manager, приходилось производить файловые манипуляции. Переименование и подмена файла bootx64.efi. Точно такого же результата можно добиться просто добавив загрузочную запись, указывающей на нужный исполняемый файл необходимого загрузчика. Добавим ее.
# добавляем загрузочную запись в позицию 0, то есть на первое место
bcfg boot add 0 \EFI\Microsoft\Boot\bootmgfw.efi "Start Windows 10"
# смотрим текущую загрузочную конфигурацию
bcfg boot dump
Посмотрим на загрузочное меню, после добавление новой записи.
Аналогичным образом можно добавить запуск любой исполняемой программы *.efi. Теперь попробуем переместить добавленную запись. Или иначе говоря, изменить приоритет загрузки. Передвинем нашу запись на третье место.
# установка для записи 0 нового порядкового номера 2
bcfg boot mv 0 2
# вывод загрузочной конфигурации
bcfg boot dump
Взглянем на загрузочное меню.
И последнее что осталось сделать, это удалить добавленную запись.
# удаление записи под номером 2
bcfg boot rm 2
# вывод загрузочной конфигурации
bcfg boot dump
Смотрим загрузочное меню.
Загрузочная запись полностью удалена.
Важным нюансом является нумерация. Учтите что она начинается с нуля. То есть если речь идет о третей записи по списку, ее номер будет 2.
Итог
В данном материале были затронуты следующие вопросы: Что делать если вместо операционной системы загрузилась UEFI Shell? Как работать с UEFI Shell? Как работать с файлами в UEFI Shell? Как восстановить, вернуть прежний загрузчик через UEFI Shell? Как определить загрузочный EFI-раздел? Как работать с загрузочными записями через UEFI Shell? Как добавить загрузочную запись UEFI Shell? Как изменить приоритет загрузочной записи через UEFI Shell? Как удалить загрузочную запись в UEFI Shell? Как выполнить запуск приложений EFI? Как загрузить операционную систему через UEFI Shell?
Думаю это не последняя статья на тему UEFI Shell. В следующих, мы поговорим о загрузке драйверов в UEFI Shell. И установке дополнительного загрузчика через UEFI Shell.
P.S. Некоторые цветовые схемы которые могу вам приглянуться cls 3 11, cls 7 0, cls 5 15.
Представим ситуацию: У вас есть компьютер с установленной Windows 10 на MBR-диске. Что подразумевает загрузку только в BIOS-режиме. Но, вам необходимо выполнить загрузку текущей установленной копии Windows в UEFI-режиме. Или даже лучше, организовать возможность загрузки установленной Windows 10 как в BIOS так и в UEFI-режимах. Рассмотрим самый простой способ организовать подобный трюк.
Содержание
- Предисловие
- Тестовая Машина
- Разметка Диска
- Установка Загрузчика
- Двойной Запуск
- Итог
Предисловие
Современные версии операционной системы Windows (начиная с 7-ки), располагают всеми необходимыми средствами для организации загрузки в UEFI-режиме. Так же, последние версии Windows прекрасно понимают оба формата таблиц дисковой разметки. То есть, Windows 10 установленная на MBR-диск, может без каких либо проблем работать с GPT-дисками, и наоборот.
Данных возможностей вполне достаточно для организации загрузки установленной операционной системы Windows на MBR-диске, в двух режимах BIOS и UEFI.
Важное замечание. Для работы с GPT-таблицами необходима 64-разрядная операционная система.
Тестовая Машина
Для проведения тестов использовалась виртуальная машина VirtualBox с установленной операционной системой Windows 10 x64 на MBR-диске.
В текущем варианте, система грузится с помощью BIOS-загрузчика расположенном в первом скрытом разделе жесткого диска.
Для добавления возможности загрузки текущей системы в UEFI-режиме, потребуется совсем немного действий. Сначала необходимо будет создать дополнительный раздел размером в 100 МБ с файловой системой FAT32. После на созданный раздел, необходимо будет установить UEFI-загрузчик. И последний шаг, удалить букву диска созданного загрузочного раздела. Во избежание удаления с него файлов.
Приступим…
Разметка Диска
Разметка диска будет выполняться с помощью инструмента «Управление дисками«. Запустить Управление дисками можно двумя способами: Либо через окно Выполнить (или любое другое средство выполнения команд), набрав в строке запуска команду diskmgmt.msc.
Либо с помощью контекстного меню кнопки пуск (Win+X).
Запустив компонент Управление дисками, сжимаем пространство любого из первичных разделов обладающих достаточным объемом свободного пространства, отнимая необходимые нам 100 МБ для нового загрузочного UEFI-раздела.
Получив свободное, неразмеченное пространство, создадим первичный раздел и отформатируем его в файловую систему FAT32.
Запоминаем букву назначенную созданному разделу (в моем случае это буква E:\), и переходим к установке загрузчика.
Установка Загрузчика
На данный момент, созданный нами загрузочный раздел абсолютно пуст.
Установим UEFI-загрузчик Windows Boot Manager. Для установки, запускаем любую командную оболочку от имени администратора, в моем случае это будет PowerShell (запускается так же через контекстное меню кнопки пуск Win+X).
И выполняем следующую команду:
# Установка UEFI-загрузчика Windows Boot Manager
bcdboot C:\Windows\ /s E: /f UEFI
Обращаем внимание на то что путь C:\Windows\ указывает на текущую папку Windows текущей операционной системы для которой мы выполняем установку загрузчика. А в качестве значения параметра /s указываем букву раздела на который будет установлен загрузчик.
После выполнения команды, на созданном разделе появятся соответствующие папки и файлы.
Загрузчик на этом успешно установлен.
Последний штрих, отключение буквы диска созданного загрузочного раздела, во избежание его удаления файлов на нем в будущем.
Все готово, теперь осталось лишь проверить загрузку в BIOS и UEFI режимах.
Двойной Запуск
На данный момент система загружена в BIOS-режиме.
Выполним загрузку в UEFI-режиме.
Теперь система может загружаться в режимах BIOS или UEFI абсолютно прозрачно.
Итог
В статье было рассмотрено: Как осуществить загрузку операционной системы Windows в UEFI-режиме с MBR-диска?
Почему не был изменен стандартный загрузочный раздел, для получения точно такого же результата? Текущая конфигурация более проста и позволяет легко откатиться к предыдущему состоянию за минимум действий.
На чтение 4 мин Опубликовано Обновлено
UEFI Shell — это оболочка для Unified Extensible Firmware Interface (UEFI), которая предоставляет доступ к базовым функциям компьютера до загрузки операционной системы. Это позволяет установить Windows через UEFI Shell без необходимости использовать установочный диск или флеш-накопитель. В этой статье мы рассмотрим шаги процесса установки Windows через UEFI Shell и приведем подробные инструкции.
Прежде всего, убедитесь, что ваш компьютер поддерживает UEFI и включен режим запуска UEFI в BIOS. Затем загрузите UEFI Shell на USB-накопитель и подключите его к своему компьютеру.
1. Включите компьютер и нажмите клавишу, которая вызывает меню выбора загрузки (обычно это F12 либо F8).
2. Выберите свой USB-накопитель из списка доступных устройств загрузки и нажмите Enter.
3. После загрузки UEFI Shell появится командная строка. Наберите «map» и нажмите Enter, чтобы просмотреть список доступных дисков на вашем компьютере.
4. Определите, на каком диске содержится установочный образ операционной системы. Обычно это будет диск с буквой «C:». Наберите «fs0:», замените «0» на число, соответствующее диску с установочным образом.
5. Введите «efi\boot\bootx64.efi» и нажмите Enter, чтобы запустить установщик Windows через UEFI Shell.
Теперь вы находитесь в установщике Windows. Следуйте инструкциям, чтобы установить операционную систему на желаемый диск и завершите процесс установки.
Примечание: установка Windows через UEFI Shell может отличаться в зависимости от модели компьютера и версии UEFI. Убедитесь, что вы ознакомились с инструкциями, предоставленными производителем вашего компьютера.
Содержание
- Подготовка к установке
- Загрузка UEFI Shell
- Установка Windows
Подготовка к установке
Перед началом установки Windows через UEFI Shell необходимо предпринять несколько шагов для подготовки вашего компьютера:
1. Проверьте совместимость вашей системы с UEFI. Убедитесь, что ваш компьютер поддерживает UEFI и имеет активированный режим загрузки через эту технологию. |
2. Создайте загрузочную флешку с Windows. Подготовьте флешку с необходимыми файлами установщика операционной системы Windows. |
3. Загрузитесь в UEFI Shell. Включите компьютер и войдите в режим UEFI, затем выберите опцию загрузки UEFI Shell. |
4. Подготовьте диск для установки Windows. Очистите диск, на котором будет проводиться установка операционной системы, и создайте необходимые разделы для системного и пользовательского пространства. |
5. Установите необходимые драйверы. Предварительно загрузите и установите драйвера для вашего оборудования, чтобы не столкнуться с проблемами после установки операционной системы. |
После выполнения всех этих шагов вы будете готовы к установке Windows через UEFI Shell и сможете перейти к следующим этапам процесса.
Загрузка UEFI Shell
Перед началом установки Windows через UEFI Shell вам необходимо загрузить саму оболочку UEFI Shell. Для этого выполните следующие шаги:
- Перейдите в настройки BIOS (или UEFI) вашего компьютера. Для этого при включении компьютера нажмите определенную клавишу (обычно это клавиша Del, F2 или F12), чтобы войти в настройки.
- В настройках BIOS (или UEFI) найдите раздел «Boot» или «Загрузка». В этом разделе вы должны найти опцию «Boot Order» или «Порядок загрузки».
- Установите UEFI Shell в качестве первого загрузочного устройства. Для этого выберите опцию «Add Boot Option» или «Добавить загрузочное устройство» и укажите путь к файлу UEFI Shell.
- Сохраните изменения и выйдите из настроек BIOS (или UEFI).
- Теперь ваш компьютер будет загружать UEFI Shell при каждом включении. Однако, на данный момент UEFI Shell еще не содержит операционной системы, поэтому вы должны установить Windows через UEFI Shell вручную.
Поздравляю! Вы успешно загрузили UEFI Shell и готовы перейти к следующему шагу — установке Windows. Перед этим убедитесь, что у вас есть установочный диск или образ Windows, а также необходимые драйвера и программы.
Установка Windows
Установка операционной системы Windows может быть достаточно простой и понятной процедурой, если вы последуете этим шагам:
- Подготовка установочного носителя Windows (например, USB-флеш-накопителя)
- Войти в BIOS и установить режим загрузки UEFI
- Загрузка с установочного носителя и запуск программы установки Windows
- Выбор языковых настроек и принятие лицензионного соглашения
- Выбор раздела для установки и форматирование его в соответствии с требованиями
- Установка операционной системы Windows
- Перезагрузка компьютера и настройка базовых параметров
- Установка дополнительного программного обеспечения и драйверов
- Готово! Теперь вы можете наслаждаться работой с Windows.
Обратите внимание, что некоторые шаги могут незначительно отличаться в зависимости от версии Windows и конкретного оборудования, однако, основные принципы останутся прежними. Следуя этим шагам, вы успешно установите операционную систему Windows.