Shell как установить windows

Обновлено: 29.06.2024


Начну немного с предисловия. Понадобилось мне, значит, переустановить ОС на новеньком ноутбуке. Установщик запустился, да не дал продолжить - не буду, мол, ставиться на GPT-разметку, т.к. загружен в режиме MBR. При попытке загрузиться в режиме UEFI (тыканием в устройство с припиской UEFI в меню загрузки) ничего не происходило. Почесал я репу и понял, что надо это дело довести до конца. Погуглив, столкнулся тем, что информации по этой теме чрезвычайно мало (особенно в рунете), но кое-какой материал, который меня натолкнул на дальнейшую работу, нашелся. Ну что же, постараюсь привести собранную и полученную информацию в более-менее понятную и удобную инструкцию, дабы другие не наступали на те же грабли.

Из семейства Windows Vista и 7 на UEFI можно поставить только 64-битную редакцию. В 32-битной версии просто-напросто отсутствуют необходимые для загрузки файлы. Попытки взять их от x64-версии ни к чему, кроме ошибок загрузчика, не привели, что логично. Учитывая то, что современные UEFI-устройства оснащаются обычно 4 и более гигабайтами ОЗУ, проблем здесь не должно быть. Работает данный метод, понятное дело, только для 64-битных версий EFI (все современные устройства на рынке). Не пытайтесь грузить 32-битный boot.wim, это бесполезно, он просто не запустится. В Windows 8 появилась поддержка UEFI32, таких устройств на рынке мало, в основном это планшеты с 1-2гб озу. UEFI32 и UEFI64 между собой несовместимы, поэтому и файлы разные применяются - BOOTX86.EFI и BOOTX64.EFI соответственно.

Данный материал применим ко всем редакциям Windows Vista SP2 и Windows 7 RTM/SP1, а также их серверных собратьев - Windows Server 2008/2008 R2, вне зависимости от локализации. В Windows 8 и выше все аналогично, кроме того, что там появилась поддержка UEFI32.

Командная строка во всех примерах была запущена из корня дистрибутива (где лежат папки sources и efi), для удобства.

Загрузочное меню до правки:



4.Ну вот и все. Втыкаем флешку в UEFI-устройство, вызываем загрузочное меню, тыкаем на UEFI USB Device и радуемся загрузке.


Работоспособность проверена на ASUS K45A и VMware 9 (в последнем случае, установщик Windows не видел USB-хард и не мог продолжить установку, по всей видимости, это связано с кривой реализацией EFI, в VirtualBox даже bootmgr не запускался).
На Apple MacBook Pro Sandy Bridge загрузка происходит, но какой-то глюк с видеорежимом, видно что установщик запускается, но все сжато в полоску, отображаемую поверх меню загрузки EFI. Отключение графической загрузки в bootmgr не помогло.

Если вдруг выкинуло в EFI Shell и загрузка не пошла, не отчаивайтесь. Обычно, в таком случае, высвечивается список доступных устройств и дисков (первые идут как blk, вторые как fs). Просто находим нужный нам диск (в моем случае - fs1:, т.к. он Removable USB), убеждаемся, что это точно наш диск (делам ls /EFI/BOOT/BOOTX64.EFI) и запускаем установщик - /EFI/BOOT/BOOTX64.EFI.
Обычно, EFI Shell отключен, в реальности я его видел только на виртуалках. Однако, никто не мешает использовать тот же rEFIt. Скриншот для примера:

При установке Windows® на компьютер на базе EFI необходимо включить режим EFI в микропрограмме ПК как при ручной, так и при автоматической установке. Необходимо загрузиться в 64-разрядном режиме EFI с предустановочного диска (64-разрядная версия среды предустановки Windows или 64-разрядная версия программы установки Windows в режиме EFI). Windows невозможно установить на компьютеры на базе UEFI, в режиме BIOS. (Дополнительные сведения о переключении режимов см. в документации по микропрограммам EFI.) Шаги, приведенные в данном разделе, служат только для справки и могут не соответствовать определенным командам вашего типа микропрограмм EFI.

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

  1. Установите Windows, запустив установку Windows с записи загрузки EFI на компьютере-образце. Используйте оболочку EFI или меню микропрограммы Boot from file (Загрузка из файла), чтобы запустить загрузчик Windows EFI с установочного диска. Дополнительные сведения см. в документации по микропрограммам.

Для компьютеров с архитектурой Itanium используйте следующую команду:

Если диспетчер загрузки EFI поддерживает загрузку с DVD-диска, то командная оболочка EFI не требуется. Можно загрузить DVD-диск непосредственно из диспетчера загрузки EFI.

При необходимости нажмите любую клавишу для загрузки с DVD-диска Windows. Windows устанавливается на компьютер.

При загрузке среды предустановки Windows с компакт-диска или DVD-диска можно пропустить приглашение «Нажмите любую клавишу для загрузки с компакт-диска или DVD-диска» и загрузиться напрямую в данную среду. Для архитектур x86 и AMD64 удалите файл Bootfix.bin из своего пользовательского образа среды предустановки Windows. Для компьютеров с архитектурой Itanuim при создании образа со средой предустановки Windows для своих клиентов используйте файл Efisys_noprompt.bin вместо файла Efisys.bin.

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

После того, как Windows установлена на компьютер, завершите остальные задачи по настройке.

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

После завершения работы программы Sysprep завершается забота компьютера.

2.Убедитесь, что в папке EFIMICROSOFTBOOT есть необходимые для загрузки файлы (при необходимости, их можно взять с дистрибутива Windows Vista/7 x64 на DVD):

Вместо source64oot.wim укажите свои пути, и убедитесь, что GUID образа совпадает (я использовал дистрибутив Windows 7 Enterprise x64 SP1, в случае с Windows Vista, GUID могут отличаться), иначе получите BSOD 0x7B сразу после загрузки образа. Узнать это можно командой

Командная строка во всех примерах была запущена из корня дистрибутива (где лежат папки sources и efi), для удобства.

Загрузочное меню до правки:

efi shell команды для загрузки с флешки

efi shell команды для загрузки с флешки

4.Ну вот и все. Втыкаем флешку в UEFI-устройство, вызываем загрузочное меню, тыкаем на UEFI USB Device и радуемся загрузке.

efi shell команды для загрузки с флешки

Работоспособность проверена на ASUS K45A и VMware 9 (в последнем случае, установщик Windows не видел USB-хард и не мог продолжить установку, по всей видимости, это связано с кривой реализацией EFI, в VirtualBox даже bootmgr не запускался).
На Apple MacBook Pro Sandy Bridge загрузка происходит, но какой-то глюк с видеорежимом, видно что установщик запускается, но все сжато в полоску, отображаемую поверх меню загрузки EFI. Отключение графической загрузки в bootmgr не помогло.

Как устроена загрузка современных ОС? Как при установке системы настроить загрузку посредством 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 — система будет спокойно загружаться с флешки, не видя разницы.

Если вы планирует выполнить чистую установку Windows 10, то для запуска процесса установки вам понадобится загрузочное USB-устройство флеш-памяти. Тем не менее, если ваш компьютер является достаточно современным, то велика вероятность, что на нем используется Unified Extensible Firmware Interface (UEFI) вместо традиционного BIOS. В этом случае вам нужно убедиться, что загрузочный носитель также поддерживает соответствующий интерфейс прошивки, в противном случае вы не сможете запустить процесс установки.

К счастью, для компьютеров UEFI доступно несколько способов создания загрузочного носителя. Например, вы можете использовать утилиту Media Creation Tool от Microsoft, которая позволяет упростить копирование установочных файлов Windows 10 на съемный диск и поддерживает как классический BIOS, так и UEFI. В качестве альтернативы вы можете воспользоваться сторонним инструментом Rufus, который может создавать загрузочные флешки специально для устройств с UEFI.

В данном руководстве приведем шаги по созданию загрузочного USB-устройства флеш-памяти с поддержкой UEFI, используя Media Creation Tool и Rufus.

Как создать загрузочный диск Windows 10 с помощью Media Creation Tool

Если вы планируете обновить или выполнить чистую установку Windows 10 на ПК с UEFI, Вы можете воспользоваться Media Creation Tool для создания совместимого загрузочного носителя. Просто подключите USB-накопитель объемом не менее 8 ГБ к вашему компьютеру и проделайте следующие шаги:

Скачайте последнюю версию инструмента Media Creation Tool:

Media Creation Tool: Создать установочный носитель (USB-устройство флэш-памяти, DVD-диск или ISO-файл)

Совет. в разделе Архитектура вы можете заметить опцию “Оба”, которая предназначена для создания универсального загрузочного носителя для 32- и 64-разрядных процессоров.

Media Creation Tool: создать ISO-файл Windows 10

После выполнения данных шагов, мастер создания носителей приступит к загрузке установочных файлов Windows 10 и создаст загрузочное USB-устройство для компьютера с UEFI или BIOS.

Как создать загрузочный диск Windows 10 с помощью Rufus

Использование Media Creation Tool - рекомендуемый метод создания загрузочного USB-устройства флеш-памяти. Тем не менее, если по какой-то причине данный вариант для вас не сработал, вы можете загрузить ISO-образ Windows 10 из другого источника и воспользоваться инструментом Rufus для создания установочного носителя с поддержкой UEFI. Просто подключите USB-накопитель объемом не менее 4 ГБ к вашему компьютеру и проделайте следующие шаги:

Скачайте последнюю версию программу Rufus.

Rufus

После выполнения данных шагов, инструмент Rufus создаст загрузочный носитель Windows 10 с поддержкой UEFI.

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

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