Приходилось ли вам устанавливать современные версии Windows? Если да, то вам точно знаком установщик, каждый этап которого прогружается несколько секунд, и который яростно навязывает вам использование аккаунта Microsoft, с каждым обновлением делая использование локального аккаунта всё труднее и труднее.

Но существует альтернативный способ установить Windows — более быстрый, не требующий подключения к интернету и не навязывающий никаких сервисов — ручная установка с использованием CMD.

Если описать кратко, процесс состоит из следующих частей:

  1. Загрузка с установочного носителя

  2. Ручная разметка диска

  3. Применение WIM-образа (WIM — формат файлов, используемый Microsoft для хранения упакованных системных файлов Windows)

  4. Установка загрузчика

  5. Шаманство с реестром

  6. Первая перезагрузка, запуск с жёсткого диска

  7. Запуск процесса «развёртывания» (deploy) системы

  8. Создание пользователя

  9. Ещё немного возни с реестром и две перезагрузки

  10. PROFIT!

Этап 1. Установка системы

Итак, предположим, что вы уже знаете, как запустить установщик Windows. Теперь было бы неплохо открыть командную строку — для этого, конечно, можно долго и нудно ковыряться в средствах восстановления, но есть и метод проще — нажать сочетание клавиш Shift+F10.

Выглядит это вот так:

Разметка диска

Теперь, пожалуй, стоит разметить диск, ведь нужно же куда-то устанавливать систему. Для этого прекрасно подойдёт встроенная утилита diskpart, предоставляющая консольный интерфейс для работы с дисками.

Для установки системы вам понадобится два раздела — тот, на котором она будет установлена, и загрузочный раздел EFI. Эти разделы нужно создать, отформатировать (EFI-раздел нужно форматировать в FAT32, а основной — в NTFS) и назначить им буквы, чтобы позже использовать их в процессе установки. Я предпочитаю назначать для основного раздела букву C, а для EFI — W. Если вы захотите использовать другие буквы, не забудьте поменять их во всех командах, которые я буду приводить ниже.

Если ваш диск абсолютно пустой (например, если вы ставите систему на ВМ), то вы можете воспользоваться подготовленными мной командами:

select disk 0
convert gpt
create partition efi size=512
format quick fs=fat32
assign letter W
create partition primary
format quick
assign letter C

Здесь сначала выбирается диск с индексом 0 (то есть первый). Далее он конвертируется в формат GPT, а затем на нём создаются, форматируются и получают буквы два раздела — EFI размером 512 мб и основной, занимающий всё оставшееся место.

Применение WIM-образа

Теперь пришло время скопировать на свежесозданный раздел системные файлы Windows. Для этого существует утилита Dism. Она способна выполнять самые разнообразные операции с образами, однако нам понадобятся лишь две из них — /Get-WinInfo и /Apply-Image.

Для начала стоит определиться, какие редакции Windows доступны для установки. Чтобы узнать это, используйте следующую команду:

dism /get-wininfo /wimfile:D:\sources\install.wim

D:\sources\install.wim — файл, содержащий все файлы всех доступных редакций системы. Также этот файл может называться install.esd, поэтому, если команда выдала ошибку о том, что файл не найден, попробуйте заменить расширение .wim на .esd.

UPD: диск D: — установочная флешка. Если у вас возникают ошибки при вводе команды, возможно, система назначила установочной флешке другую букву. Используйте команду diskpart list volume, чтобы просмотреть список томов.

Результат будет примерно таким:

Каждая редакция внутри WIM-файла имеет уникальный индекс, который в дальнейшем нужно будет передать команде установки. Я буду устанавливать Windows 10 Pro, её индекс - 4.

Теперь пришло время самого важного и долгого процесса — применения WIM-образа. В терминологии DISM, применение — это копирование содержащихся в образе файлов в указанную папку (обычно в корень диска) с последующей их подготовкой к работе.

Применение WIM-образа осуществляется такой командой:

dism /apply-image /imagefile:D:\sources\install.wim /index:4 /applydir:C:\

Параметр /imagefile указывает утилите путь к файлу образа, параметр /index — необходимую редакцию системы, а /applydir — место, куда должны быть помещены файлы. В нашем случае это корень диска C.

Окно CMD после ввода этой команды будет выглядеть так:

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

Установка загрузчика

Загрузчик устанавливается довольно простой командой:

bcdboot C:\Windows /s W:

Первый параметр задаёт папку, в которой находится система, а параметр /s — раздел, на который необходимо установить загрузчик. Установка загрузчика — быстрая операция, занимающая всего несколько секунд.

Когда загрузчик установлен, система фактически готова к загрузке с жёсткого диска, но есть ещё один момент...

Немного твиков реестра

Я не думаю, что вы хотели бы после ручного выполнения первого этапа установки увидеть стандартный OOBE, который сразу же предложит вам подключиться к интернету, чтобы окунуть вас в цифровой концлагерь экосистему Microsoft. Если уж ставить руками — то ставить до конца, не так ли?)

Чтобы при загрузке системы с жёсткого диска вместо неповоротливого OOBE вас встретила элегантная консоль, выполните эти две команды:

reg load HKLM\mount_SYSTEM C:\Windows\System32\config\SYSTEM
reg add HKLM\mount_SYSTEM\Setup /v CmdLine /d "cmd.exe" /t REG_SZ /f

Первая загрузит куст реестра SYSTEM только что распакованной вами с помощью DISM системы, поместив его в локальном реестре по пути HKEY_LOCAL_MACHINE\mount_SYSTEM (если вы не знали, HKLM — это сокращение от HKEY_LOCAL_MACHINE, а весь реестр на самом деле лежит в папке C:\Windows\System32\config в виде файлов особого формата).

Вторая команда задаст в качестве установщика программу cmd.exe, то есть командную строку. Если хотите подробнее узнать о том, что происходит, то вот небольшое объяснение:

  • Первый аргумент — HKLM\mount_SYSTEM\Setup указывает команде раздел реестра, с которым ей предстоит работать;

  • /v (сокр. от value) указывает название значения, которое необходимо добавить или изменить;

  • /d (сокр. от data) указывает данные, которые необходимо поместить в указанное значение реестра;

  • /t (сокр. от type) указывает используемых тип данных (например, REG_SZ — это строка, а REG_DWORD — целое число);

  • /f (сокр. от force) подавляет запрос на изменение существующего значения.

После всех проделанных операций необходимо перезагрузиться, для чего можно использовать команду wpeutil reboot.

Этап 2. Первая перезагрузка

После перезагрузки вы попадёте в особый режим работы Windows — режим установки. В данном режиме запускается лишь одно приложение, указанное в значении CmdLine раздела реестра HKEY_LOCAL_MACHINE\SYSTEM\Setup. В нашем случае этим приложением является командная строка.

Развёртывание системы

Для полноценного функционирования систему нужно «развернуть» (deploy). Этим занимается программа C:\Windows\System32\oobe\windeploy.exe. Поскольку CMD запускается в папке C:\Windows\System32, для начала развёртывания системы необходимо ввести команду oobe\windeploy.

После выполнения этой команды под вращающимся кругом появятся надписи, информирующие о текущей операции, проводимой программой.

Создание пользователя

В системе до сих пор нет ни одного пользовательского аккаунта — обычно эту задачу берёт на себя OOBE, но мы ставим систему без него, поэтому и пользователя придётся создать вручную:

net user /add uzver $tr0ng_p@$$
net localgroup Пользователи /add uzver
net localgroup Администраторы /add uzver

Первая команда создаёт пользователя с именем uzver и назначает ему пароль $tr0ng_p@$$, вторая и третья добавляют свежесозданного юзера в группы Пользователи и Администраторы. Добавление в группу пользователей необходимо, потому что команда net по какой-то причине не может сделать этого самостоятельно, а добавление в группу администраторов нужно, чтобы в дальнейшем иметь полный доступ к установленной системе.

Выдирание хоста с мясом

Чтобы окончательно и бесповоротно покончить с любыми проявлениями OOBE, нужно удалить (или переименовать) файл C:\Windows\System32\WWAHost.exe, являющийся хост-процессом для OOBE и прочих неприятных штук, которые Microsoft так любит пихать пользователям под нос.

Лучше всего переименовать файл, на случай, если когда-нибудь понадобится:

move wwahost.exe wwahost.exe.bak

Уборка за windeploy

Чтобы продолжать дальше, необходимо дождаться, пока windeploy закончит со своими грязными делишками. Понять, что процесс завершился, поможет исчезновение надписи снизу от кружка загрузки:

Удостовериться, точно ли windeploy завершил свою работу, можно с помощью команды:

tasklist | find "windeploy"

Если эта команда не вывела ни одного процесса — можно продолжать.

Windeploy во время своей работы устанавливает значения реестра, при которых система грузится во второй этап OOBE. Наша задача — изменить это, чтобы запускалась командная строка. Таким образом, система «засчитает» прохождение второго этапа OOBE, но сам OOBE запущен не будет.

Все создаваемые Windeploy значения реестра лежат в HKLM\SYSTEM\Setup, поэтому можно использовать команду reg query HKLM\SYSTEM\Setup /t REG_DWORD, чтобы вывести их названия и значения. (/t REG_DWORD — указатель на тип значений).

Всем значениям, кроме SetupType, значения которых отличаются от 0, необходимо установить значение 0 следующей командой:

reg add HKLM\System\Setup /v <значение> /d 0 /t REG_DWORD /f

После этого необходимо вновь настроить систему на запуск командной строки:

reg add HKLM\System\Setup /v CmdLine /d "cmd.exe"

Выполнение этих действий показано на скриншоте.

После внесения изменений в реестр систему необходимо перезагрузить командой shutdown -r -t 0.

Этап 3. Вторая перезагрузка

Вы вновь попадёте в командную строку, в которой нужно ввести команду shutdown -r -t 0. Произойдёт перезагрузка, и система загрузится уже полноценно, с графическим интерфейсом входа в аккаунт.

Скриншоты установленной системы

P.S.

Этот способ может показаться сложным, но, на самом деле, если сравнить его с установкой через графический интерфейс, окажется, что он требует выполнения даже меньшего количества действий и времени, чем «нормальная» установка. Также этот способ можно легко автоматизировать при помощи, например, bat-файлов, не прибегая к изучению сложного синтаксиса файла unattend.xml.

Комментарии (13)


  1. V1tol
    27.06.2025 15:13

    Вот это круто, как будто ArchWiki прочитал. Такими темпами можно портировать Calamares и будет графический установщик нормального человека xD


    1. ryzhpolsos Автор
      27.06.2025 15:13

      Планирую когда-нибудь заняться графическим установщиком на основе описанного в статье подхода


      1. asuzena
        27.06.2025 15:13

        так всегда был файл-конфиг установки: дополни и запусти инсталл чтобы всё само произошло


  1. hitlocker
    27.06.2025 15:13

    С одной стороны - очень интересно. Спасибо.

    С другой... Ох уже эти гайды для "знающих людей". "Так вот диск, режем его на EFI и C". Через два абзаца "D:\sources.....". Что за диск D? Это третий раздел? Это другой диск? Флешка? А как узнать букву если я болтаюсь в CMD с пустым размеченным диском.... Ех

    Но еще раз, все равно любопытно. Спаибо)!


    1. Busla
      27.06.2025 15:13

      А как узнать букву если я болтаюсь в CMD с пустым размеченным диском

      в diskpart набрать

      list volume

      там будут все флэшки, CD/DVD


      1. ryzhpolsos Автор
        27.06.2025 15:13

        Спасибо, добавил в статью.


    1. ryzhpolsos Автор
      27.06.2025 15:13

      Спасибо, учту, что нужно делать гайды подробнее.

      А как узнать букву если я болтаюсь в CMD с пустым размеченным диском

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

      for %i in (D E F G H I J K L M N O P Q R S T U V) do @(if exist "%i:\sources\install.wim" echo.%i)


      1. asuzena
        27.06.2025 15:13

        x y z это оптика


  1. hurtavy
    27.06.2025 15:13

    Зачем вам раздел EFI аж на 512, если сама Микрософт рекомендует 100?


    1. ryzhpolsos Автор
      27.06.2025 15:13

      Здесь написано, что

      The minimum size of this partition is 200 MB, and must be formatted using the FAT32 file format.


    1. ququnta
      27.06.2025 15:13

      потому что если на компе зоопарк из разных осей, то оно может заполниться


  1. alegz81
    27.06.2025 15:13

    При разбивке диска под uefi нужен раздел типа msr на 16 мб. Так же нужно создать раздел для recovery (WinRE), и соответственно установить и настроить его.


  1. LexD1
    27.06.2025 15:13

    Интересно. Но. Ставил в GUI (GPT), автоматически создалось три раздела метров по 100...200 каждый, помимо C:\.

    Насчёт присвоения буквы EFI. Это для удобства прописывания пути загрузчика? Потом буква (W:\) удаляется?