Бездисковая загрузка windows 10 по сети

Время на прочтение11 мин

Количество просмотров147K

Написанию данного поста предшествовало сбор информации по частям и многочасовое курение как русскоязычных, так и англоязычных ресурсов в сети интернет в поиске сравнительно простых способов реализации бездисковой загрузки ПК.

Предпосылкой к изучению данного вопроса стало наличие в сети компьютера, с вышедшем из строя дисковым накопителем. Необходимо было запустить на данном ПК «полноценную» 64-битную операционную систему Windows 7 без использования Linux-сервера, ограничившись только имеющимися в локальной сети Windows системами. Приводимые в данном посте программные продукты распространяются бесплатно и могут работать как на серверных, так и на пользовательских версиях Windows.

Разговор пойдет о замечательной технологии iSCSI, и как мы её можем использовать для загрузки по локальной сети, чтобы сэкономить на стоимости покупки нового дискового оборудования. Постараюсь описать весь процесс конфигурирования наиболее доступным языком как для начинающих администраторов, так и для непросвещенных пользователей.

Для понимания происходящего определимся немного с терминологией:

  • iSCSI (англ. Internet Small Computer System Interface) — протокол, который базируется на TCP/IP и разработан для установления взаимодействия и управления системами хранения данных, серверами и клиентами;
  • iSCSI Target: (Цель iSCSI) — программа или аппаратный контроллер (HBA), осуществляющие эмуляцию диска и выполняющие запросы iSCSI;
  • iSCSI Initiator: (Инициатор iSCSI) — клиентская программа или аппаратный контроллер, который взаимодействует с iSCSI Target;
  • IQN: (iSCSI Qualified Name) — уникальный идентификатор (имя) iSCSI Target’a или iSCSI Initiator’а;
  • LUN: (Logical Unit Number) — адрес блочного устройства в диапазоне 0-127;
  • DHCP (англ. Dynamic Host Configuration Protocol — протокол динамической настройки узла) — сетевой протокол, позволяющий компьютерам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети TCP/IP;
  • TFTP (англ. Trivial File Transfer Protocol — простой протокол передачи файлов) используется главным образом для первоначальной загрузки бездисковых рабочих станций.

Введение

Современные операционные системы Windows 7, Windows Server 2008 и всё, что старше, умеют подключаться напрямую на iSCSI target. Проблема только в том, как инициализировать удаленное блочное устройство при включении ПК.

Вспомним, что почти все современные сетевые карты умеют загружаться по технологии PXE. А вот с iSCSI дружат в основном только дорогостоящие серверные сетевые карты, например Intel. Однако, существует как минимум два open source проекта gPXE и iPXE позволяющий при загрузке ПК подключаться iSCSI устройствам. Последний, к слову, форк первого, с немного доработанной системой вывода ошибок и дополнительными опциями.

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

Суть такова — при запуске компьютера сетевая карта получает необходимые настройки через DHCP сервер и загружает PXELINUX. Далее загрузчик PXELINUX подключает необходимый скрипт и загружает iPXE, который, в свою очередь, выступает iSCSI инициатором и передает управление диску. До момента инициализации блочного устройства передачу файлов по сети обеспечивает протокол TFTP.

Для чего мы загружаем PXELINUX?

Некоторые могут спросить — а для чего загружать PXELINUX? Во первых, через PXELINUX загрузчик iPXE получает необходимый скрипт для инициализации нужного iSCSI target-а. Во вторых, чтобы можно было построить удобное меню с выбором различных вариантов загрузки. В третьих, если в сети существует несколько бездисковых рабочих станций, то нужно чтобы каждый ПК подключался «к своему» iSCSI-диску и не имел доступа к «чужим» дискам, а значит их нужно как то отделять друг от друга, например, по MAC-адресам. Для этих целей будет использоваться двухстадийная загрузка с использованием PXELINUX.

Но обо всем по порядку. Начнем с установки и настройки в системе Windows необходимого софта для реализации DHCP, TFTP и iSCSI Target-а. Для этого я использовал бесплатно распространяемые программные продукты Tftpd32 и StarWind Virtual SAN. Программа Tftpd32 используется как в роли DHCP сервера, так и в роли TFTP сервера, ну а StarWind Virtual SAN соответственно будет использоваться в роли iSCSI target-а. Скачать данные программы можно на сайте разработчиков, ссылки которых указанны в их названиях. Для скачивание программы StarWind Virtual SAN необходимо будет выбрать на сайте Free версию программы и пройти процесс регистрации, с указанием корпоративного почтового адреса. На указанный вами почтовый адрес придет лицензионный ключ и ссылка на скачивание самой программы.

Настройка программы Tftpd32

Данная программа довольно простая и интуитивно понятная, поэтому приведу просто скриншоты своих настроек:

На вкладке «GLOBAL» у меня отмечены галочкой сервисы TFTP Server, Syslog Server и DHCP Server. На вкладке TFTP в поле Base Directory указана точка, которая означать, что в качестве корневой директорией будет использоваться папка, куда установлена сама программа Tftpd32. На вкладке DHCP в поле Boot File указан название загружаемого файла, которую мы рассмотрим дальше в настройках PXELINUX. На вкладке SYSLOG настройки не требуются.

Цель iSCSI. Настройка программы StarWind Virtual SAN

При установке программа никаких настроек не запрашивает, единственное может дополнительно запустить установку .NET Framework 4, если она еще не установлена в системе. После установки программа запускает свои службы и сразу готова к работе. На рабочем столе создается ярлык StarWind Management Console для управления.

Открываем StarWind Management Console, жмем кнопку Add Server и создаем новый сервер с IP-адресом 192.168.0.1. Имеющийся по умолчанию сервер с IP-адресом 127.0.0.1 можно удалить.
Далее выбираем созданный нами сервер и нажимаем ссылку Add Target. В появившемся окне можем указать свое название IQN цели, активировав галочку Target Name. В частности я указал iqn.2014-11.home:win7-64bit.
Далее выбираем созданный нами Target и нажимаем ссылку Add Device.
В появившейся окне выбираем Hard Disk Device, далее выбираем Virtual Disk, указываем расположение и объем создаваемого диска, задаем объем и параметры кэширования, и создаем дисковое устройство нажатием кнопки Create.

В итоге получаем настроенный и готовый к работе iSCSI Target, имеющий следующий вид:

При необходимости мы можем создавать необходимое количество iSCSI Target-ов и на каждый из них подключить необходимое количество iSCSI дисков. А также обеспечить безопасности доступа к iSCSI Target-ам с использованием CHAP-аутентификации клиентов, нажав по ссылке Add Permission.

Настройка PXELINUX

PXELINUX входит в комплект программ syslinux. Поэтому идем на сайт www.syslinux.org/wiki/index.php/Download, нажимаем на ссылку Download и загружаем zip архив с набором загрузчиков syslinux. Открываем загруженный архивный файл и распаковываем файлы pxelinux.0 из директории core и menu.c32 из директории com32/menu. Файл pxelinux.0 является загрузчиком, который передается клиентскому ПК DHCP сервером, а файл menu.c32 отвечает за построение загрузочного меню. Распакованные файлы размещаем в папку, куда установлена программа Tftpd32 (куда указывает путь в поле Base Directory в настройках TFTP).

В папке программы Tftpd32 создаем вложенную папку pxelinux.cfg, а в нем создаем файл default следующего содержания:
default menu.c32
gfxmenu /erdpxe
prompt 0

MENU TITLE Boot Menu (select the OS to boot)
MENU AUTOBOOT Windows 7 64bit in # seconds
TIMEOUT 50
TOTALTIMEOUT 3000

LABEL Windows 7 64bit
MENU DEFAULT
KERNEL IPXE.KRN
INITRD win7.ipxe

Думаю излишнем писать подробный комментарий к данному файлу, рассмотрим только две последние строчки:
KERNEL IPXE.KRN — указывает на ядро iPXE, которую нужно загрузить.
INITRD win7.ipxe — указывает на файл скрипта с параметрами iPXE

Указанных настроек PXELINUX вполне достаточно для использования дефолтной конфигурации и можно перейти к дальнейшей настройке iPXE, поэтому остающуюся часть текста решил убрать под спойлер.

Создание отдельного загрузочного меню для каждого ПК

Если в сети существует несколько бездисковых рабочих станций, и нужно чтобы каждый ПК имел доступ только «к своему» iSCSI-диску и не имел доступа к «чужим» дискам, то нам нужно будет создать несколько файлов с загрузочным меню для каждого ПК.

При получении файла конфигурации от TFTP сервера клиент ищет подходящую для себя в следующем порядке:
pxelinux.cfg/01-88-99-aa-bb-cc-dd
pxelinux.cfg/C0A800FE
pxelinux.cfg/C0A800F
pxelinux.cfg/C0A800
pxelinux.cfg/C0A80
pxelinux.cfg/C0A8
pxelinux.cfg/C0A
pxelinux.cfg/C0
pxelinux.cfg/С
И если ничего подходящего нет —
pxelinux.cfg/default

Здесь pxelinux.cfg — сама папка с файлами конфигурации.
01-88-99-aa-bb-cc-dd — файл с названием МАС-адрес клиента, в нижнем регистре, разделенный тире, с префиксом 01-.

Соответственно, для каждой бездисковой рабочей станции нам нужно написать «свое» загрузочное меню и разместить в папке pxelinux.cfg с названием файла 01-mac-адрес клиента, в нижнем регистре. Содержимое этих файлов может отличаться, к примеру, только последней строчкой INITRD win7.ipxe.

Инициатор iSCSI. Настройка iPXE

Итак, далее идем на сайт ipxe.org/download и загружаем iso-образ iPXE загрузчика. Из загруженного iso-образа вытаскиваем файл IPXE.KRN и сохраняем его в папке программы Tftpd32.

В этой же папке создаем файл win7.ipxe следующего содержания:
#!ipxe
dhcp net0
set keep-san 1
#login
sanboot iscsi:192.168.0.1::::iqn.2014-11.home:win7-64bit

Строка dhcp net0 данного скрипта указывает, что необходимо получить настройки через DHCP сервер в сети.

Строка set keep-san 1 указывает, что подключение к iSCSI Target-у необходимо сохранить даже если загрузка с данного устройства не удалась (этот параметр необходим, когда нужно устанавливать операционную систему с накопителей CD/DVD).

Если в iSCSI Target настроена CHAP-аутентификации клиентов, то нужно раскомментировать строку #login, которая будет выводит форму для ввода логина и пароля.

Последняя строка непосредственно подключает указанный iSCSI Target, инициализирует удаленный диск и передает процесс дальнейшей загрузки на данное устройство. Синтаксис подключения будет таким iscsi:<Айпи iSCSI target>:::::<IQN цели>.

Добавление дополнительных пунктов в загрузочное меню

Если мы хотим добавить в загрузочное меню еще один пункт, например, для загрузки ОС Windws 8.1, то создаем в StarWind Virtual SAN новый Target с указанием IQN цели iqn.2014-11.home:windows8.1, добавляем в него новое дисковое устройство iSCSI, а затем в файле pxelinux.cfg/default добавляем к примеру такие строчки:
LABEL Windows 8.1
KERNEL IPXE.KRN
INITRD win8.1.ipxe

Ну и далее создаем файл win8.1.ipxe следующего содержания:
#!ipxe
dhcp net0
set keep-san 1
#login
sanboot iscsi:192.168.0.1::::iqn.2014-11.home:windows8.1

Установка ОС Windows 7

Перед началом установки Windows 7 на бездисковую станцию открываем его BIOS и настраиваем порядок опроса загрузочных устройств следующим образом:
1) Hard Disk
2) Network
3) CD/DVD
4) остальные устройства

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

Далее размещаем в приводе CD/DVD установочный диск Windows 7 и перезагружаем компьютер.

Первым делом мы должны увидеть запуск загрузки через PXE. Если этого не произошло то снова заходим в BIOS и разрешаем загрузку компьютера через сетевой адаптер.

Далее на экране появиться загрузочное меню PXELINUX. Если этого не произошло проверяем, запущена ли на другом компьютере программа Tftpd32, правильно ли она настроена и не блокирует ли его работу firewall-ы, антивирусы или другие программы.

После выбора необходимого пункта загрузочного меню PXELINUX мы должны увидеть запуск iPXE.
В процессе инициализации iPXE должны промелькнут надписи:
Registered as BIOS drive 0x80
Booting from BIOS drive 0x80
Это значит, что ПК удачно подключился к iSCSi диску.

Затем мы увидим ошибку загрузки через iSCSi диск, после чего компьютер перейдет к опросу следующего загрузочного устройства и запустит установка Windows 7 с привода CD/DVD. При этом подключение к iSCSi диску останется активным — за это отвечает указанная в скрипте строчка set keep-san 1.

Для тех, у кого не запускается установка Windows с привода CD/DVD

BIOS некоторых компьютеров, после неудачной попытки загрузки с iPXE, останавливает процесс запуска. Соответственно дальнейшая загрузка установщика Windows с привода CD/DVD не происходит. Такое поведение было замечено, например, на ноутбуках компании Hewlett-Packard. В подобных случаях спасает загрузка с использованием gPXE. Для этого:
1) открываем страницу сайта rom-o-matic.net/gpxe/gpxe-git/gpxe.git/contrib/rom-o-matic/build.php,
2) в поле Choose an output format выбираем пункт PXE bootstrap loader keep [Keep PXE stack method 1] (.kpxe),
3) в самом нижнем поле Embedded Script вводим три строчки нашего скрипта:
dhcp net0
set keep-san 1
sanboot iscsi:192.168.0.1::::iqn.2014-11.home:win7-64bit
4) сохраняем загрузчик gPXE в папку программы Tftpd32 и прописываем название файла на сервере DHCP в поле Boot File,
5) устанавливаем ОС Windows и обратно прописываем название файла pxelinux.0 на сервере DHCP в поле Boot File.

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

Если получили сообщение о невозможности установки Windows на выбранный диск

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

В этом случае первым делом проверьте в BIOS порядок опроса загрузочных устройств. Жесткий диск должен находиться на первой позиции, даже если на компьютере физически не установлен дисковый накопитель.
Если проблема не исчезла, то попробуйте в BIOS-е включать/выключать SATA контроллер, менять режим его работы IDE, ACHI, либо подключить реальный диск на время установки, но установку проводить на iSCSI диск.

После выбора дискового устройства начнется установка Windows 7. Дальше никаких трудностей возникнуть не должно. После установки мы получаем «полноценную» операционную систему Windows 7, работающей на iSCSI диске.

Установка ОС Windows (альтернативный метод)

Не знаю кому как, но мне лично не представляется удобным для каждого установочного образа Windows записывать DVD диск.
Мне привычнее распаковать содержимое установочного диска и запустить установку Windows с жесткого диска. К тому же с жесткого диска операционная система устанавливается быстрее.

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

Если коротко, то создаем на iSCSI диске небольшой «активный» раздел, копируем туда содержимое установочного диска Windows, и затем настраиваем MBR, для загрузки с диска установщика Windows. Подробности под спойлером.

Альтернативный метод установки ОС Windows

Итак, откроем на рабочей Windows системе Панель управления — Администрирование — Инициатор iSCSI.
Появиться окно «Свойства: Инициантор iSCSI».

Переходим на вкладку «Обнаружение» и нажимаем кнопку «Обнаружить портал…».
В открывшемся окне вводим IP-адрес нашей цели iSCSI — 192.168.0.1 и нажимаем ОК.
Далее переходим обратно на вкладку «Конечные объекты» и увидим все цели с идентификаторами IQN.
Выбираем в списке нужную цель и нажимаем кнопку «Подключить».
Откроется еще одно окно требующий нашего подтверждения, где также нажимаем ОК.
Если в открывшемся окне оставить галочку «Добавить это подключение в список предпочитаемых конечных объектов» то указанная цель будет автоматически подключаться к системе при каждой загрузке.

Открываем оснастку «Управление компьютером» и переходим на вкладку «Управление дисками». Тут мы увидим, что в нашей системе появилось еще одно дисковое устройство. Создаем на этом диске «Основной раздел», указав размер диска чуть больше размера нашего установочного образа. Далее форматируем под файловую систему NTFS, подключаем любую букву диска и делаем раздел «активным».

Откроем необходимый образ установочного диска программой UltraISO или WinRar и распакуем содержимое образа на созданный в предыдущем пункте раздел диска. Важно, чтобы после распаковки на диске оставалось как минимум 100Мб свободного места (Для Windows 8 рекомендуется 350Мб свободного места). Если свободного места недостаточно, то расширяем выбранный раздел в оснастке «Управление дисками».

Затем скачиваем из интернета программу BOOTICE и запускаем (ссылки приводить не буду, сами сможете найти без труда).
В программе выбираем нужный нам диск из раскрывающегося списка. В моем случае HD6:

Далее нажимаем кнопку «Process MBR» и откроется следующее окно:

В данном окне выбираем последний пункт «Windows NT 5.x / 6.x MBR» и нажимаем кнопку «Install/Config».
На диске будет настроен MBR, загружающий стандартный загрузчик bootmgr из активного раздела диска.

Далее можно загружаться на бездисковом ПК с данного iSCSI-диска и сходу устанавливать ОС WIndows.
Установка Windows запуститься автоматически.

Но рассмотрим еще один момент. Если мы хотим сделать данный раздел скрытым от пользователей и недоступным для операционной системы, то запускаем командную строку от имени администратора и набираем следующие команды:

Diskpart
List disk
Sel disk x (вместо x подставляем номер нужного диска, список которых выводит предыдущая команда)
Sel part 1 (при необходимости список разделов можно посмотреть командой List part)
Remove
Set id=27

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

Надеюсь данная статья будет вам полезна. Всем удачи!

Ссылки на литературу:

  • Бездисковая загрузка по технологии iSCSI
  • PXELINUX — Syslinux Wiki
  • iPXE — open source boot firmware

В этой статье мы рассмотрим, как установить Windows 10 или 11 по сети без использования загрузочной USB флешки (установочного DVD диска). Для загрузки компьютера по сети через PXE мы будем использовать небольшой Tiny PXE Server. Инструкция применима для установки Windows на устройствах как с UEFI, так и с BIOS прошивкой.

В корпоративных сетях для разливки образов Windows по сети используются более функциональные Windows Deployment Services (WDS) и Microsoft Deployment Toolkit (MDT). В этой статье мы покажем, как быстро запустить PXE сервер на любом имеющемся компьютере (будь то устройство с Windows или Linux) и использовать его для сетевой установки Windows на компьютеры в этой же LAN с помощью простых средств.

Нам понадобятся:

  • Установочный ISO образ с Windows 10 или 11 (проще всего создать его с помощью Windows Media Creation Tool согласно инструкции https://winitpro.ru/index.php/2013/12/31/sozdaem-zagruzochnuyu-fleshku-s-windows-7-dlya-uefi-sistemy/ )
  • Образ Windows PE — можно использовать свой образ WinPE, извлечь его из образа восстановления MS DART, получить оригинальный WinPE с помощью Windows Assessment and Deployment Kit (Windows ADK), или использовать готовый образ типа Hiren’s BootCD PE.
  • Сервер Tiny PXE (http://reboot.pro/files/file/303-tiny-pxe-server/ )

Содержание:

  • Создаем загрузочный образ Windows PE с помощью ADK
  • Подготовка сервера сетевой установки TinyPXE
  • Сетевая установка Windows 10 и 11 с PXE сервера

Создаем загрузочный образ Windows PE с помощью ADK

Скачайте Windows ADK для Windows 11 и Windows PE add-on for the Windows ADK по ссылкам на странице https://docs.microsoft.com/en-us/windows-hardware/get-started/adk-install .

скачать ADK для Windows

При установке Windows ADK выберите минимальную установку Deployment Tools.

установка ADK Deployment Tools

Затем аналогично установите Windows PE add-on for Windows ADK.

установка Windows PE add-on for Windows ADK

После окончания установки запустите Deployment and Imaging Tool из стартового меню Windows. Или запустите вручную команду:

"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\DandISetEnv.bat"

запуск Deployment and Imaging Tool

Теперь скопируйте файлы для среды WinPE в указанный каталог (создавать не нужно):

copype amd64 C:\tools\winpe

В данном случае я создаю файлы для среды WinPE x64. Можно использовать другие опции в зависимости от архитектуры: x86, arm или arm64.

генерация файлов для среды WinPE copype amd64

Теперь можно создать загрузочный ISO образ с WinPE:

MakeWinPEMedia /ISO C:\tools\winpe c:\tools\WinPE.iso

MakeWinPEMedia: создать ISO образ WINPE

Подготовка сервера сетевой установки TinyPXE

Теперь нужно настроить ваш PXE сервер:

  1. Распакуйте архив pxesrv.zip в каталог C:\tools\pxesrv;
  2. Перейдите в каталог C:\tools\pxesrv и создайте текстовый файл pxe_menu.txt со следующим содержимым:
    #!ipxe
    set boot-url http://${dhcp-server}
     #================ Main Menu =================
    menu iPXE boot menu
    item WinPEISO WindowsPE ISO
    choose target && goto ${target}
    #============ Main Menu Options =============
    :WinPEISO
    sanboot ${boot-url}/iso/WinPE.iso
    boot

    конфигурационный файл меню для pxe сервера

  3. Скопируйте полученный ранее файл WinPE.iso в каталог C:\tools\pxesrv\files\iso;
  4. Смонтируйте установочный ISO образ в виртуальный привод Windows и откройте общий сетевой доступ к нему (если хотите, можете открыть к нему анонимный доступ, но это не обязательно);
    общий доступ к каталогу с установочным образом Windows

  5. Запустите файл pxesrv.exe с правами администратора;
  6. Включите опцию HTTPd;
  7. Если ваш компьютер сам будет раздавать IP адреса по DHCP (Tiny PXE это умеет), отключите опцию ProxyDHCP. Убедитесь, что в полях Option 54 DHCP Server и Next-Server указан IP адрес вашего компьютера. В поле IP Pool start указано начало диапазона DHCP, убедитесь что этот диапазон не занят в вашей сети;
  8. В разделе Boot File укажите ipxe.pxe (для загрузки на BIOS устройствах) или ipxe-x86_64.efi (для UEFI устройств);
  9. В поле Filename if user-class=gPXE or IPXE укажите имя файла меню, который вы создали ранее pxe_menu.txt;
  10. Запустите PXE сервер, нажав кнопку Online;
    настройки Tiny PXE сервера для загрузки Windows PE по сети

Итак, ваш PXE сервер запущен и готов к работе. Если в Windows включен брандмауэр (проще), отключите его или разрешите входящий трафик для процесса pxesrv.exe по протоколам DHCP, PXE, HTTP, TFTPS и SMB.

Сетевая установка Windows 10 и 11 с PXE сервера

Теперь вам нужно загрузить ваш компьютер, на который вы хотите установить Windows, с PXE сервера. Компьютер должен находится в той же локальной сети (VLAN), что и компьютер с PXE сервером.

В настройках BIOS/UEFI компьютера выберите в качестве первичного устройства загрузки PXE.

загрузка компьютера по сети через PXE (EFI network)

При запуске среды PXE компьютер обнаружит в сети DHCP сервер, получит IP адрес и получит доступных опции в меню iPXE.

загрузочное меню PXE сервера

Компьютер загрузится по сети в среде WinPE.

В моем случае при тестировании загрузки с PXE сервера виртуальной машины VMWare с UEFI прошивкой появилась ошибка:

Could not describe SAN devices: Operation not supported
Could not boot image: Operation not supported https://ipxe.org/err/3c2220


Как оказалось, в UEFI прошивки виртуальной машины на моем хосте VMware ESXi есть баг:

This error indicates that your UEFI firmware has a bug that prevents the installation of the iSCSI boot firmware table (iBFT). Switch to booting in “legacy” BIOS mode rather than UEFI mode.

Пришлось переключить ВМ в режим BIOS и запускать PXE сервер с опцией ipxe.pxe. После этого пошла нормальная установка Windows по сети.

Вам осталось подключить по SMB сетевой каталог, в котором хранится ваш установочный ISO образ Windows 11.

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

Net use E: \\192.168.13.202\e

Где
192.168.13.202
– имя компьютера на котором хранится установочный образ, а
E
– название общей папки.
Введите имя пользователя, с правами доступа к вашей Windows с PXE сервером.

подключение сетевого каталог с установочным образом Windows в WinPE

Запустите знакомый мастер установки Windows.

установка windows 11 по сети через pxe

Здравствуйте, уважаемые читатели сайта remontcompa.ru! Меня зовут Роман Нахват и я представляю Вашему вниманию статью на очень интересную тему, а именно о бездисковой загрузке операционных систем Windows XP, 7, 8.1, 10. Для чего пользователю может потребоваться бездисковая загрузка Windows? Это может быть как элементарная экономия на комплектующих (в частности на жёстких дисках), так и стремление обезопасить себя от потери информации вследствии действия на компьютер различных факторов, таких как вирусная активность, сбои в электропитании, естественный износ жёсткого диска в процессе эксплуатации и так далее. В данной статье мы рассмотрим бездисковую загрузку машины на примере операционной системы Windows XP используя программу CCBoot 2017. CCBoot позволяет выполнить бездисковую загрузку операционных систем Windows XP, 7, 8, 10 с помощью протокола iSCSI.

Бездисковая загрузка Windows XP, 7, 8.1, 10 (на примере Windows XP), используя программу CCBoot 2017

Бездисковая загрузка позволяет компьютерам работать без локального диска. «Бездисковый» компьютер подключается к жесткому диску по сети и загружает операционную систему с удаленного компьютера.»

Для организации бездисковой загрузки я буду использовать свою домашнюю сеть из двух машин, на которых предварительно были установлены операционные системы Windows XP и Windows 8.1. Так как программа CCBoot работает по принципу «клиент-сервер», то в нашем случае в качестве клиента будет выступать машина с Windows XP, а в качестве сервера машина с Windows 8.1.

На машине с Windows 8.1 у нас на жестком диске есть разделы D и E, которые мы будем далее использовать в процессе настройки серверной части программы CCBoot.

На машине с Windows XP установлено два жестких диска, а именно: объёмом 80 GB (на данном жёстком диске создан один раздел и на нем установлена Windows XP, второй жёсткий диск объёмом 1000 GB используется в качестве файлового хранилища.

Переходим по адресу http://www.ccboot.com/download.htmи скачиваем установочный файл программы CCBoot.

Скачанный установочный файл программы CCBoot. Запускаем данный файл на машине с Windows 8.1 и выполняем установку.

Далее.

Как уже говорилось выше, CCBoot работает по принципу «клиент-сервер». В нашем случае роль сервера будет выполнять машина с Windows 8.1, поэтому выбираем CCBoot Server Installation.

Установка серверной части CCBoot на машину с Windows 8.1 завершена.

Ярлык программы CCBoot.

Определим ip адрес машины с Windows 8.1, выполнив в командной строке команду ipconfig. Как видим, ip адрес 192.168.100.14

Запускаем программу CCBoot и на вкладке «Менеджер дисков» видим доступные для использования разделы жёстких дисков, их объём и свободное место на них.

Выполним настройку серверной части программы CCBoot.

Выделяем раздел D и открываем окно его настроек, выбрав «Редактировать диск».

Тип раздела D на жестком диске определяем как «Образ», в выпадающем списке «RAM Cache» выбираем значение 2048.

Получаем следующее.

На разделе D мы будем хранить файл виртуального жесткого диска с расширением .vhd, на котором установлена операционная система Windows XP.

Таким же образом открываем окно настроек раздела E, Тип определяем как «Writeback», в выпадающем списке «RAM Cache» устанавливаем значение, к примеру 1024.

Раздел E будет использоваться для хранения информации, получаемой с клиентских машин.

Должно получиться следующее.

После редактирования настроек разделов D и E, жмём кнопку «Параметры».

На вкладке «Главное» в окошке «Пароль администратора» указываем пароль, который нам будет нужен для подключения к CCBoot серверу.

На вкладке «Настройки DHCP» ставим переключатель на «Используется CCBoot DHCP», указываем ip адрес CCBoot сервера (в нашем случае он 192.168.100.14).

Также указываем интервал ip адресов, которые будут назначаться клиентским машинам для бездисковой загрузки (например с 192.168.100.43 по 192.168.100.76).

Перейдем на вкладку «Менеджер клиентов». На данной вкладке отобразится список клиентских машин, на которых был установлен клиент CCBoot.

Так как мы ещё не установили клиент CCBoot на машину с Windows XP, то на данной вкладке будет пусто.

Переходим на машину с Windows XP и устанавливаем на неё клиентскую часть программы CCBoot. Далее.

Выбираем «CCBoot Client Installation». Далее.

 

Установить.

Установка клиентской части CCBoot на машину с Windows XP завершена.

Определим ip адрес машины с Windows XP, выполнив команду ipconfig. Как видим, он 192.168.100.85.

Переходим в меню Пуск и запускаем CCBootClient.

Перед нами откроется вот такое окно.

Жмём на кнопку «Установить клиент».

Подтверждаем установку клиента CCBoot.

 

Жмём ОК.

Перезагружаем машину с Windows XP.

После перезагрузки машины с Windows XP в окне CCBootClient указываем ip адрес CCBoot сервера (192.168.100.14), размер образа который будет содержать в себе загружающуюся операционную систему Windows XP, а также имя образа (WinXP).

Жмём «Загрузить образ».

Вводим пароль для подключения к CCBoot серверу.

Переходим на машину с Windows 8.1 и в программе CCBoot на вкладке «Менеджер образов» видим, что у нас появился файл виртуального жёсткого диска с названием WinXP.vhd объёмом 75 GB.

Также если перейти на вкладку «Менеджер клиентов», то у нас появилась машина с ip адресом 192.168.100.85, то есть машина с Windows XP.

Удалим машину с ip адресом 192.168.100.85 из вкладки «Менеджер клиентов», выбрав «Удалить клиента».

Подтверждаем удаление клиента.

Выключаем машину с Windows XP и отключаем жёсткий диск объёмом 80 GB (на котором установлена Windows XP), и оставляем подключенным жёсткий диск объёмом 1000 GB, используемый в качестве файлового хранилища.

Получаем следующее.

Выполняем загрузку машины на которой установлена Windows XP (но при этом загрузочный диск с Windows XP отключен) по сети.

Выполняем загрузку по сети.

Как видим, имя нашей клиентской машины определилось как PC043, а DHCP сервер CCBoot присвоил ей ip адрес 192.168.100.43.

Операционная система Windows XP загрузилась.

Заходим в Мой компьютер и видим, что вместо жёсткого диска объёмом 80 GB (на котором была установлена Windows XP) появился жёсткий диск объёмом 75 GB с названием CCBoot.

Данный диск является ни чем иным, как развернутым виртуальным жёстким диском WinXP.vhd.

Перейдем на машину с Windows 8.1 и на вкладке Менеджер клиентов видим клиентскую машину PC043 с ip адресом 192.168.100.43 с загруженной операционной системой Windows XP.

PXE Boot и WinPE для установки по сети Windows 10 / Server 2016

Порывшись в сети нашел массу инструкций по аналогичной теме. Вроде всё разжевано и
инструкции чёткие, но при их выполнении происходят какие-то не очевидные вещи и
пока разбираешься в том, что надо сделать приходится параллельно искать информацию о
появляющихся ошибках. Получив опыт и имея готовую систему я пришел к
выводу, что всё можно было сделать другими инструментами, не устанавливая массу
стороннего софта и не заморачиваясь со сложным редактированием образов. Материал
касающийся нашей темы косвенно я опишу лишь поверхностно, чтобы не скатываться в занудную
статью о настройке серии роутеров на раздачу DHCP. То, что касается непосредственно
создания аналога сервера развёртывания конфигураций я опишу подробно и с картинками.
Не скриншотами командных файлов, а нормальным текстом, который можно скопировать и
запустить на своём компьютере.

Если вы сталкивались с инструкциями в которых необходимо «поднимать»
активдиректори и доменкотроллер, монтировать диски через определённые утилиты и долго шаманить
над созданием текстовых файлов, перепечатывая текст с монитора, то представляю вам
более простой вариант реализации. Тот кто пользовался этой инструкцией дали пару рекомендаций
о подаче информации и думаю, что теперь она вылизана как никогда чётко и красиво.

Есть масса методов установки операционных систем по сети. Данный
вариант предназначен для маленьких сетей в которых нет возможности установить
сервер с операционной системой Windows Server. Например, если компания не хочет
нарушать лицензионную чистоту, а администратор сети не умеет администрировать
Linux-сервера. Единственная сложность с которой придётся столкнуться заключается
в поиске оригинального файла winpe.wim.

Хочу обратить особое внимание на то, что для сетевой установки желательно использовать
Windows Deployment Services (WDS), а не самопальные системы. Там больше инструментов и они
более гибкие.

Вот последовательность которую будем проводить для настройки нашей системы.

  • Настраиваем DHCP-сервер,
  • настраиваем TFTP-сервер,
  • копируем PXElinux,
  • расшариваем папку с распакованными образами,
  • скачиваем и извлекаем winpe.wim,
  • дорабатываем winpe.wim для работы с сетью,
  • создаём файл для выбора устанавливаемой ОС.

Думаю стоит немного уточнить, что для чего нужно.

Настройка DHCP-сервера

Исходя из того, что сеть небольшая и в ней нет ни Линуксового, ни виндового
сервера, то можно предположить, что в качестве DHCP-сервера выступает роутер
компании. Настройка каждого конкретного роутера уникальна и по этому администратор
должен самостоятельно решить вопрос о добавлении необходимых настроек. В качестве примера
могу привести настройку роутеров Cisco.

conf t
 ip dhcp pool {ИМЯ}
  bootfile pxelinux.0
  next-server {IP-адрес вашего TFTP-сервера}

В настройках роутера необходимо указать два параметра. Первый — это имя файла
для первоначальной загрузки PXE. Второй — это адрес TFTP-сервера. Настроив эти
данные на своём DHCP-сервере мы можем приступить к следующему шагу. Если у роутера нет
возможности манипулировать настройками его DHCP, то нужно искать выход. Например, можно
отключить автоматический DHCP на роутере и установить DHCP-сервер на компьютере
выделенном для сетевой установки операционных систем. В качестве универсального решения
могу предложить использовать Tftpd64, который выступает в роли как TFTP-сервера, так и
DHCP-сервера.

Настройка TFTP-сервера

Следующим шагом мы настраиваем TFTP-сервер. Хотя, что там настраивать? Устанавливаем
программу Tftpd64 и в ней указываем каталог в котором располагаются файлы для
нашего проекта. Допустим, что корень TFTP-сервера расположен по адресу D:\TFTP\.
Для усиления системы безопасности я не рекомендую располагать данные публичного
характера на системном диске.

Tftpd64 настройка сервера.

Подготовка PXElinux

Далее ищем самый свежий архив на сайте
www.kernel.org.
Скачиваем на компьютер и распаковываем в отдельный каталог. Нам необходимо несколько файлов из этого архива.
Сначала я думал сделать свой архив, чтобы люди не выискивали нужное из архива, но потом передумал, ведь через
несколько месяцев или лет выйдет новая версия, а моя безнадёжно устареет. После копирования файлов
нужно будет создать каталог pxelinux.cfg и в нём два пустых файла: default и
graphics.conf. В результате получится вот такая структура.

  • /pxelinux.cfg/
  • /pxelinux.cfg/default
  • /pxelinux.cfg/graphics.conf
  • /ldlinux.c32
  • /libcom32.c32
  • /libutil.c32
  • /pxelinux.0
  • /vesamenu.c32

Создаём главное меню с выбором действия. Меню состоит всего из двух пунктов. Первый
отвечает за загрузку операционной системы с первого раздела жесткого диска. Второй
же отвечает за загрузку установщика операционных систем который мы подготовим чуть позже.
Загрузка с локального диска срабатывает через десять секунд бездействия. Это сделано для
компьютеров у которых забыли убрать загрузку по сети и за ними работают пользователи.

Файл default:

DEFAULT vesamenu.c32
PROMPT 0
MENU INCLUDE pxelinux.cfg/graphics.conf
TIMEOUT 100

MENU TITLE WWW.ORCINUS.RU PXE Boot menu

LABEL bootlocal
menu label Boot Local HDD
menu default
localboot 0x80

LABEL wininstall64
menu label Установка MS Windows OS (x64)
kernel pxeboot.0

Второй файл содержит информацию о настройке графического режима. Так сложилось
исторически из-за того, что у меня на «боевом» сервере используется
разветвлённое меню загрузчика и это вполне оправдано. В маленьких проектах нет
необходимости во вложенных меню, но если вы следили за моими статьями, то
читали статью о PXE загрузке компьютеров.
Возможно для вас подобный подход станет необходимым и
каждодневным инструментом.

Файл graphics.conf:

MENU MARGIN 10
MENU ROWS 16
MENU TABMSGROW 21
MENU TIMEOUTROW 26
MENU COLOR BORDER 30;44 #00000000 #00000000 none
MENU COLOR SCROLLBAR 30;44 #00000000 #00000000 none
MENU COLOR TITLE 0 #ffffffff #00000000 none
MENU COLOR SEL 30;47 #40000000 #20ffffff
MENU BACKGROUND background.png
NOESCAPE 0
ALLOWOPTIONS 0

На этом основа проекта уже создана. PXE грузится, можно даже сделать меню, скопировать
пару утилит и пользоваться благами удалённой загрузки. Но наша цель — это установка
операционных систем Windows по сети. И тут кроется очень интересная система подводных
камней. В PXElinux можно подключить образ диска и загрузиться с него. Например, я таким
образом загружаю диски восстановления и LiveCD с антивирусными программами. Но у протокола
TFTP есть огромная проблема с передачей больших файлов. Дополнительно всё усугубляется тем,
что перед запуском образа весь файл образа копируется в оперативную память. Ради эксперимента
я запустил на нескольких компьютерах запуск установки Windows 10 используя стандартный
метод. На одном компьютере загрузка продлилась около трёх часов, а на остальных происходил
сбой приблизительно через час. И это только копирование образа в память. Так же на компьютере
должно быть установлено памяти больше чем занимает образ. Если вы попробуете загрузить
образ размером пять гигабайт, то памяти необходимо около шести. А в офисных компьютерах редко
встретишь больше четырёх гигабайт. Естественно, что это совершенно не рабочий вариант.

Расшариваем папку с образами операционных систем

Тут вообще всё очень просто. Создаём каталог на сервере и создаём не привилегированного пользователя
с доступом к этому каталогу с правами чтения и исполнения.

Допустим мы создали каталог D:\SETUP\ и дали к нему доступ. Так же надо сделать его сетевым.
Это тоже просто. Но для того, чтобы у пользователей не возник праздный интерес воспользоваться
публичным ресурсом я его сделал скрытым. Конечно, есть масса программ которые позволяют увидеть
скрытые каталоги на сервере, но сокрытие ресурсов не бывает лишним.

Но существует обходной путь. Мы воспользуемся небольшой операционной системой WindowsPE,
которая будет служить оболочкой для запуска установочной программы. WindowsPE
является полнофункциональной системой. В ней доступно подключение по сети к SMB-ресурсам,
есть графический интерфейс и возможность писать командные файлы, под ней можно запускать программы
написанные для ОС Windows. Больше всего меня интересует возможность работать с SMB, так как
это нас раскрепощает по скорости скачивания и уменьшает объём скачиваемой информации. Уменьшение
объёма произойдёт из-за того, что мы будем использовать лишь несколько реально необходимых файлов
из распакованного образа, а не огромный файл.

Продолжаем. Для дальнейшей работы нам необходимо найти чистый образ Winpe.wim. Лучше
его не скачивать со сторонних сайтов. Мало ли, кто туда заразу подсунет. Надо идти проторённым
и официальным путём. Заходим на сайт Майкрософта и скачиваем образ Windows AIK. Он распространяется
в виде ISO-образа, который необходимо смонтировать в систему. У Windows 10 ISO-образы
монтируются прямо средствами операционной системы. Находим внутри архив winpe.cab.

Windows AIK disk.

Внутри winpe.cab находится два файла: F1_WINPE.WIM и F3_WINPE.WIM.

Windows PE.

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

Создадим каталог Boot в корневой папке вашего TFTP-сервера. Скопируем туда понравившийся файл
и переименуем его в winpe.wim.

Теперь из winpe.wim нужно извлечь несколько файлов и положить их в определённые каталоги.
Для доступа к внутренностям этого файла можно использовать архиватор 7-zip или Far manager. Лично я
пользуюсь Far и не замечаю разницы между файловой системой и внутренностями архива. Чтобы открыть
wim-архив необходимо выделить его курсором и нажать Crtl+PageDown.

Windows PE.

Приведу таблицу размещения файлов для правильного копирования. В левой табличке каталог
вашего TFTP-сервера и название файла, а в правой файл из архива winpe.wim. Обратите внимание
на то, что файл pxeboot.n12 придётся переименовать, так как это одна из особенностей загрузки
файлов с использованием PXElinux.

TFTP файл WIM файлы
\pxeboot.0 Windows\Boot\PXE\pxeboot.n12
\bootmgr.exe Windows\Boot\PXE\bootmgr.exe
\Boot\Fonts\wgl4_boot.ttf Windows\Boot\Fonts\wgl4_boot.ttf
\boot.ini Создать пустой файл.
\Boot\winpe.wim Скопировать сам архив winpe.wim.

Но этого не достаточно для работы. Нужно еще сформировать BCD-файл, который
является заменой boot.ini в операционных системах Windows Vista и выше.
Для его формирования необходимо выполнить несколько команд с правами администратора.

Чтобы долго не печатать, создайте командный файл createbcd.cmd и скопируйте в него следующий текст.

bcdedit -createstore %1\BCD
bcdedit -store %1\BCD -create {ramdiskoptions} /d "Ramdisk options"
bcdedit -store %1\BCD -set {ramdiskoptions} ramdisksdidevice boot
bcdedit -store %1\BCD -set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
for /F "tokens=2 delims={}" %%i in ('bcdedit -store %1\BCD -create /d "WWW.ORCINUS.RU Boot Image" /application osloader') do set guid={%%i}
bcdedit -store %1\BCD -set %guid% systemroot \Windows
bcdedit -store %1\BCD -set %guid% detecthal Yes
bcdedit -store %1\BCD -set %guid% winpe Yes
bcdedit -store %1\BCD -set %guid% osdevice ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions}
bcdedit -store %1\BCD -set %guid% device ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions}
bcdedit -store %1\BCD -create {bootmgr} /d "Windows BootManager"
bcdedit -store %1\BCD -set {bootmgr} timeout 1
bcdedit -store %1\BCD -set {bootmgr} displayorder %guid%

Так как при создании BCD будет несколько файлов, то создайте каталог, например, C:\pxe\.
Скопируйте туда createbcd.cmd. Запустите командную строку от имени администратора и дайте команду.

C:\pxe\createbcd.cmd c:\pxe

Из сгенерированных файлов нам понадобится только два: BCD и boot.sdi. Оба файла необходимо скопировать
на наш TFTP-сервер в каталог \Boot\.

На этом моменте всё готово для запуска нашей сетевой операционной системы. Но это лишь запуск
Windows PE. А как на счёт запуска установки операционных систем? Для этого придётся откорректировать
образ winpe.wim.

Доработка Windows PE

В образе winpe.wim есть файл отвечающий за первоначальное иницирование. Используя Far Manager
можно открыть и отредактировать этот файл состоящий всего из одной команды. Адрес файла:

\Windows\System32\startnet.cmd

Чаще всего встречается инструция в которой этот файл содержит подключение сетевого
диска с распакованными образами и меню для установки. Но во время использования меня это
не устроило. Да, в этом случае у нас получается удобное загрузочное меню, а все настройки
лежат в одном файле. Но лично меня это не устраивает из-за того, что я люблю экспериментировать
и мне нужна универсальная система. По этой причине я разделил задачу на две подзадачи.
В startnet.cmd будет простенький скрипт подключающий сетевой диск и запускающий с этого
сетевого диска командный файл autostart.cmd.

Почему именно такой подход? Дело в том, что получить доступ к командному файлу на SMB-шаре
на порядок проще чем вспоминать адрес и имя файла в wim-образе операционной системы. Тем более,
манипулируя файлами и каталогами с программами установки операционных систем, вы всё равно
будете рядом с этим файлом и сможете оперативно вносить изменения.

Но никто не мешает вам объединить оба файла в один.

Содержимое startnet.cmd:

@echo off
cls
echo.
echo Подготовка к запуску.
echo Подождите немного...
echo.

wpeinit

echo Подключение сетевого диска.
echo.
@net use Z: \\192.168.0.1\setup$ pa$$W0rd /USER:server\guest

Z:
z:\autostart.cmd
exit /b

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

И так, что ж мы тут имеем? В файле запускается команда wpeinit которая отвечает за
запуск сетевых сервисов и прочих настроечных приблуд. Далее идёт наш код. Я поместил
строку подключения к сетевом ресурсу в невидимую для ползователя область так, что он увидит
факт подключения сетевого ресурса, но не увидит логин и пароль пользователя для подключения.
В какой-то степени защита от дурака, но у простого пользователя не возникнет праздный интерес
воспользоваться полученной информацией. Далее будет произведен запуск командного файла с
сетевого ресурса.

Как мы знаем, с SMB работа происходит значительно быстрее и не будет лишних проблем с
попыткой скачать весь образ установочного диска. Установщих Windows воспользуется только
реально необходимыми ему файлами.

Содержимое z:\autostart.cmd, расположенного в корневой директории нашего ресурса:

@echo off
:beginsetup
cls
echo Выберите интересующий вас пункт:
echo.
echo    1) Запуск Far manager
echo.
echo    2) Установка Windows 10 Professional 
echo.
echo    3) Установка Windows 7 Professional
echo.
echo    4) Установка Windows Server 2016 Standard
echo.
echo    5) Установка Windows Server 2016 Hyper-V
echo.
echo Введите номер и нажмите Enter. 
set /p ID=
echo.

if %ID%==1 goto :farman
if %ID%==2 goto :win10pro
if %ID%==3 goto :win07pro
if %ID%==4 goto :winsrv2016
if %ID%==5 goto :winsrv2016h
if %ID% GTR 3 goto :failure
if %ID% LSS 3 goto :failure
exit /b

:farman
echo.
echo Запуск установки.
z:\Far\far.exe
goto :beginsetup


:win10pro
echo.
echo Запуск установки.
z:\Windows_10_professional\setup.exe
exit /b

:win07pro
echo.
echo Запуск установки.
z:\Windows_07_professional\setup.exe
exit /b

:winsrv2016
echo.
echo Запуск установки.
z:\Windows_Server_2016\setup.exe
exit /b

:winsrv2016h
echo.
echo Запуск установки.
z:\Windows_Server_2016_hyperv\setup.exe
exit /b

:failure
cls
echo.
echo Доступных пунктов не выбрано. 
echo Вернитесь в предыдущее меню и выберите нужный пункт.
echo.
pause

goto :beginsetup

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

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

Тэги: ИТ, Cisco

Отредактировано:2022-09-16 06:24:41

29 комментариев

Имя: Orcinus Orca 🖉
Андрей, какой размер дистрибутива? При загрузке ISO-шника нету строки прогресс-бара внизу. Если размер больше чем оперативы, то не загрузится.

Комментарий оставлен: 2017-12-19 00:00:00

Имя: Orcinus Orca 🖉
Андрей, тот который в дистрибутиве не запустится, он будет обращаться к несуществующему диску.

Судя по ошибкам на сервере на котором у вас крутится TFTP закрыты входящие соединения по портам 65***. В настройках TFTP можно жестко задать диапазон используемых портов для подключения клиентов (для функциональности лучше задать диапазон не менее 50 портов, на каждое новое подключение используется новый порт).

По февральскому надо внимательно смотреть имена образов, регистр и прочее. Почему-то повторяемость статьи оказалась не очень хорошей. Но проверить на большем количестве сетей не представляется возможным, я везде использую развёртывание через WDS. А то решение используется как временная заплатка.

Комментарий оставлен: 2017-12-28 00:00:00

Имя: Андрей 🖉
содержимое BCD после работы Вашего скрипта:

Windows Boot Manager
——————————
identifier {9dea862c-5cdd-4e70-acc1-f32b344d4795}
description Windows BootManager
displayorder {04cadba0-eb5c-11e7-8473-005056c00008}
timeout 1

Windows Boot Loader
—————————-
identifier {04cadba0-eb5c-11e7-8473-005056c00008}
device ramdisk=[boot]Bootwinpe.wim,{ae5534e0-a924-466c-b836-758539a3ee3a}
description Boot Image
osdevice ramdisk=[boot]Bootwinpe.wim,{ae5534e0-a924-466c-b836-758539a3ee3a}
systemroot Windows
detecthal Yes
winpe Yes

Комментарий оставлен: 2017-12-28 00:00:00

Имя: Андрей 🖉
Можно Вас попросить сбросить архивом Ваш полный рабочий пакет?

Комментарий оставлен: 2017-12-28 00:00:00

Имя: Андрей 🖉
получилось пройти этап с BCD
сформировал BCD без передачи параметра пути

Комментарий оставлен: 2017-12-28 00:00:00

Имя: Андрей 🖉
некоторые сетевые карты realtek не инициализируются wpeinit
соответственно требуется интеграция сетевых драйверов.

скорость копирования по tftpd32 до 6Mbs

Комментарий оставлен: 2017-12-28 00:00:00

Имя: Андрей 🖉
AIK все же пришлось установить, чтобы быстро интегрировать недостающие сетевые драйвера.

Windows установилась! Finish!

Спасибо за идею!
Никакой там WDS и близко не стоял.

Комментарий оставлен: 2017-12-28 00:00:00

Имя: Orcinus Orca 🖉
Андрей, отлично. Поздравляю с успехом.

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

Но я рад, что вы смогли повторить данную инструкцию. Не у всех получается.

Комментарий оставлен: 2017-12-29 00:00:00

Имя: Orcinus Orca 🖉
Андрей, список файлов для загрузчика перечислен в разделе «Подготовка PXElinux». Но действительно при написании я могу заббыть указать вещи которые мне кажутся тривиальными.

Комментарий оставлен: 2017-12-29 00:00:00

Имя: Андрей 🖉
WDS
выделить ресурс под сервер
установить сервер
установить сам WDS
и т.д.

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

поправте у себя в мануале, что BCD нужно создать без передачи параметров в cmd
т.к. текущий путь сохраняется в BCD, а затем ошибка при загрузке.
Конечно сразу заметил, что в BCD путь, заданный параметром прописался, но никаких намеков, что именно это влияло.

кроме того сделал cmd для автоматической интеграции в winpe.wim любого количества драйверов.
AIK должен быть установлен.

структура, 2 папоки и cmd:
inf — драйвера, можно по папкам.
mount — для распаковки winpe.win
integrate drivers to winpe.cmd

содержание cmd:

@echo 1. AIK must be installed to: C:Program FilesWindows AIKToolsPETools
@echo 2. Put drivers to folder inf
@echo 3. Copy winpe.wim to the current folder
@echo.
@pause
@echo.
@set winpepath=%CD%
@C:
@cd «C:Program FilesWindows AIKToolsPETools»

@echo off
echo Updating path to include dism, oscdimg, imagex
echo.
if /i %PROCESSOR_ARCHITECTURE% EQU X86 set PATH=%~dp0;%~dp0..\%PROCESSOR_ARCHITECTURE%;%~dp0..\%PROCESSOR_ARCHITECTURE%Servicing;%PATH%;
if /i %PROCESSOR_ARCHITECTURE% NEQ X86 set PATH=%~dp0;%~dp0..\%PROCESSOR_ARCHITECTURE%;%~dp0..x86;%~dp0..\%PROCESSOR_ARCHITECTURE%Servicing;%~dp0..x86Servicing;%PATH%;
cd /d %~dp0

@dism /Mount-Wim /WimFile:%winpepath%winpe.wim /index:1 /MountDir:%winpepath%mount
@dism /image:%winpepath%mount /add-driver /driver:»%winpepath%inf» /recurse /forceunsigned
@dism /unmount-wim /mountdir:%winpepath%mount /commit
@echo.
@echo.
@echo.
@echo Drivers from inf folder integrated to winpe.wim
@echo.
@echo Now you can copy winpe.wim to TFPTD root folder: ’Boot’
@echo.
@echo.
@pause
:end

p.s. почистите мои посты, оставьте только необходимое.
Спасибо.

Комментарий оставлен: 2017-12-29 00:00:00

Имя: Андрей 🖉
Да, Вы правы c BCD, возможно одновременно с созданием BCD перешел на tftpd32 и ошибочно принял, что проблема была в BCD, а не в tftpd64.

по интеграции драйверов, тем проще и быстре — тем лучше и эффективнее.
т.е. уставновили AIK, создали две папки и батник — winpe.wim с драйверами готов. все!

Что представляет наибольшую ценность на сегодня?
— простота
— быстрота
— минимализм
и т.д. в таком же духе

WDS, WSUS (кстати разворачивал, пользовался, удалил) — это полная противоположность, это мамонты прошлого века и must die

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

p.s. Вообще, нужно будет как нибудь попробовать перенести это все на Linux, если создавать PXE как стационарный вариант.

Комментарий оставлен: 2017-12-30 00:00:00

Имя: Orcinus Orca 🖉
Андрей, у вас несколько устаревшее представление. Но думаю когда у вас перевалит хотябы за 800 компьютеров в сети, тогда вы поймёте в чем сила и плюсы большой развёрнутой системы.

Комментарий оставлен: 2017-12-30 00:00:00

Имя: Андрей 🖉
Возможно,
но пока всё сервисное ПО под Windows приводит только в ярость.
поэтому все что можно перевожу на linux, это gstes, site-to-site, backups, http, sftp, dhcp, loaders, и т.д.
вот и загрузчик для сетевой установки теперь одной ногой в linux…

Уточните, у Вас в офисе около 800 компьютеров?
Вам при жизни нужно ставить мемориал, если у Вас всё крутиться на Windows!!!
:)

Комментарий оставлен: 2017-12-30 00:00:00

Имя: Orcinus Orca 🖉
Конкретно данный пут внутри файлика ни на что не влияет. Я уже проверял. В майкрософтовских реализациях там иногда висят такие пути, что можно догадаться о именах пользователей в корпорации.

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

Про мобильность развёртывания — это хорошо. Но она всё-же требуется на больших предприятиях, а когда у тебя много компов и десяток серверов, то можно и под развёртку ресурс найти. У меня WDS стоит вместе с WSUS.

Огромное спасибо за обратный отзыв.

Комментарий оставлен: 2017-12-30 00:00:00

Имя: Hash911 🖉
Я в первый раз собирал WinPE и все хорошо в описании кроме того, где брать boot.sdi
1) У меня в сборке f3_winpe.wim из AIK не было boot.sdi.
Брать boot.sdi надо с любого диска установки Win7/8/10 из /boot/boot.sdi (это драйвер виртуального диска и он универсальный)

2)Путь, как писали выше, который прописывается в BCD из-за переменной в батнике действительно может поставить раком TFTP Server. На Микротике прошло только без пути и забирать пришлось сгенерированный файл и корня системы.
3) У Андрея классный скрипт по интеграции драйверов .inf файла. Но начиная с Win7 необходимости ставить AIK нет так как DISM.exe идет в комплекте по умолчанию. Остальные утилиты в скрипте не используются. Ну и команды «mkdir %winpepath%mount» явно не хватает такак из-за её отсутствия dism некуда монтировать образ winpe.wim.
Сами драйвары, можно позаимствовать из DriverPack. Там хорошая свалка из Lan дравйверов.

Вот такой у меня получился скрипт:

@echo 1. Put drivers to folder inf
@echo 2. Copy winpe.wim to the current folder
@set winpepath=%CD%
mkdir %winpepath%mount

@dism /Mount-Wim /WimFile:%winpepath%winpe.wim /index:1 /MountDir:%winpepath%mount
@dism /image:%winpepath%mount /add-driver /driver:»%winpepath%inf» /recurse /forceunsigned
@dism /unmount-wim /mountdir:%winpepath%mount /commit
@echo.
@echo Drivers from inf folder integrated to winpe.wim
@echo.
@echo Now you can copy winpe.wim to TFPTD root folder: ’Boot’

Комментарий оставлен: 2018-02-28 00:00:00

Имя: Orcinus Orca 🖉
Hash911, в инструкции приведет командный файл createbcd.cmd который генерирует этот файлик.

Да, интеграция драйверов может быть серьёзным вопросом для новых материнок.

Комментарий оставлен: 2018-03-01 00:00:00

Имя: Павел 🖉
WinPE от Windows 7 не поддерживает большинство драйверов для современных сетевых карт, следовательно, не удается примонтировать сетевой диск.

выход — переделать WinPE (boot.wim), я это сделал с помощью нового Windows Kit (Win 10) (все по аналогии с гайдом автора)

Комментарий оставлен: 2018-03-02 00:00:00

Имя: Orcinus Orca 🖉
Павел, интересное решение.

Комментарий оставлен: 2018-03-11 00:00:00

Имя: imarek 🖉
У вас при формировании BCD вначале путь ootoot.sdi затем Bootwinpe.wim
Я долго мучался с tftp на ubuntu, где, как известно регистр значение имеет.
Еще проблема возникла — при старте WinPE (я взял ее от Windows 10 из-за драйверов) долго инициализируется сеть — около 10 секунд, поэтому команда net use выдает ошибку.
В startnet.cmd никаким способом не удалось всавить задержку или ping с обработкой ошибки.
Может кто сталкивался или идеи есть?

Комментарий оставлен: 2018-04-26 00:00:00

Имя: Orcinus Orca 🖉
imarek, при подготовке файлов необходимо было строго следовать инструкции, в исходниках именно такие регистры и должны использоваться.

Комментарий оставлен: 2018-04-27 00:00:00

Имя: Orcinus Orca 🖉
Алексей, всё зависит от того какой тип системы вы хотите использовать, лично я использую:
ioscom32elflinkldlinuxldlinux.c32
ioscom32liblibcom32.c32
ioscom32libutillibutil.c32
ioscorepxelinux.0
ioscom32menuvesamenu.c32

Комментарий оставлен: 2018-10-12 00:00:00

Имя: Orcinus Orca 🖉
user, десятка не запускается с помощью такой вот системы. Она хочет запущенную винду 32 или 64 разряда.

Комментарий оставлен: 2019-11-05 00:00:00

Имя: Евгений 🖉
Один символ в статье не отображается. Возможно из-за нестандартного шрифта. Например, вот здесь «? ootmgr.exe WindowsBootPXE? Ootmgr.exe» логично предположить неспособную отобразится букву «b» или «B». Соответственно регистр неизвестен, если он где-то влияет.

Комментарий оставлен: 2021-01-23 23:41:20

Ответ:
Спасибо за замечание. Косяк переезда сайта с ASP на PHP. В течение недели восстановлю правильные символы.

Ответ оставлен: 2021-01-26 19:01:39

Имя: Евгений 🖉
самое неприятное, что содержимое для файла «createbcd.cmd» у Вас на сайте выглядит вот так:
bcdedit -createstore %1BCD
bcdedit -store %1BCD -create {ramdiskoptions} /d «Ramdisk options»
bcdedit -store %1BCD -set {ramdiskoptions} ramdisksdidevice boot
bcdedit -store %1BCD -set {ramdiskoptions} ramdisksdipath ootoot.sdi
for /F «tokens=2 delims={}» %%i in (‘bcdedit -store %1BCD -create /d «WWW.ORCINUS.RU Boot Image» /application osloader’) do set guid={%%i}
bcdedit -store %1BCD -set %guid% systemroot Windows
bcdedit -store %1BCD -set %guid% detecthal Yes
bcdedit -store %1BCD -set %guid% winpe Yes
bcdedit -store %1BCD -set %guid% osdevice ramdisk=[boot]Bootwinpe.wim,{ramdiskoptions}
bcdedit -store %1BCD -set %guid% device ramdisk=[boot]Bootwinpe.wim,{ramdiskoptions}
bcdedit -store %1BCD -create {bootmgr} /d «Windows BootManager»
bcdedit -store %1BCD -set {bootmgr} timeout 1
bcdedit -store %1BCD -set {bootmgr} displayorder %guid%

Комментарий оставлен: 2021-01-24 03:25:03

Ответ:
Косяк переезда сайта с ASP на PHP. В течение недели восстановлю правильные символы.

Ответ оставлен: 2021-01-26 19:01:06

Имя: Orcinus Orca 🖉
Всё исправил.

Комментарий оставлен: 2021-01-27 10:59:17

Имя: Дмитрий 🖉
Мертва ли тема не знаю, делал разными способами. Во всех у меня все загружается но не работает клавиатура и мышь. Пробовал грузится с виртуалки там все работает, не работат только на физическом оборудовании. Все драйвера которые существуют уже позасовывал. Думаю этот варик работает только на старых компах.

Комментарий оставлен: 2024-11-12 09:25:01

Имя: Дмитрий 🖉
Вообще ради интереса еще потратил кучу времени и добил все таки образ рабочий. Все решилось путем установки с сайта Microsoft необходимые инструменты ADK и WinPE последней версии и вытягивании от туда bootwim, засунул туда драйвера и сделал iso образ так как pxelinux может грузить маленькие образы легко, и чудо все заработало.

Комментарий оставлен: 2024-11-21 08:53:49

Ответ:
Это старая технология, но работает до сих пор как часики.

Ответ оставлен: 2025-02-20 09:27:35


Этот сайт использует файлы cookies, чтобы упростить вашу навигацию по сайту,
предлагать только интересную информацию и упростить заполнение форм. Я
предполагаю, что, если вы продолжаете использовать мой сайт, то вы согласны с
использованием мной файлов cookies. Вы в любое время можете удалить и/или
запретить их использование изменив настройки своего интернет-браузера.

Сообщайте мне о замеченных ошибках на:
web@orcinus.ru.
Все пожелания и советы будут учтены при дальнейшем проектировании сайта.
Я готов сотрудничать со всеми желающими.
В некоторых случаях, мнение автора может не совпадать с мнением автора!
Phone: +7-902-924-70-49.

В этой статье мы расскажем, как установить Windows 10 или 11 по сети без использования загрузочной USB флешки или установочного DVD диска. Для загрузки компьютера по сети через PXE мы будем использовать компактный Tiny PXE Server. Инструкция применима для установки Windows на устройствах с прошивкой UEFI и BIOS.

В корпоративных сетях для разливки образов Windows по сети часто применяются решения, такие как Windows Deployment Services (WDS) и Microsoft Deployment Toolkit (MDT). Однако в этой статье мы покажем, как быстро запустить PXE сервер на любом компьютере и использовать его для сетевой установки Windows на устройства в локальной сети с минимальными ресурсами.

Приобрести оригинальные ключи активации Windows всегда можно у нас в каталоге от 1099 ₽

Вам понадобятся:

— Установочный ISO образ с Windows 10 или 11 (можно создать с помощью Windows Media Creation Tool).

— Образ Windows PE — можно использовать свой образ WinPE, извлечь его из образа восстановления MS DART, или скачать оригинальный WinPE с помощью Windows ADK.

— Сервер Tiny PXE.

Создаем загрузочный образ Windows PE с помощью ADK

1. Скачайте Windows ADK с официального сайта, для Windows 11 и Windows PE add-on for the Windows ADK.

2. При установке выберите минимальный набор Средств развертывания.

3. Затем установите Windows PE add-on.

4. Запустите Deployment and Imaging Tool через меню или вручную с помощью команды:

"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\DandISetEnv.bat"

5. Скопируйте файлы для среды WinPE:

copype amd64 C:\tools\winpe

6. Создайте загрузочный ISO образ с WinPE:

MakeWinPEMedia /ISO C:\tools\winpe c:\tools\WinPE.iso

Подготовка сервера сетевой установки TinyPXE

1. Распакуйте архив pxesrv.zip в каталог C:\tools\pxesrv.

2. Создайте текстовый файл pxe_menu.txt с содержимым:


#!ipxe
set boot-url http://${dhcp-server}
menu iPXE boot menu
item WinPEISO WindowsPE ISO
choose target && goto ${target}
:WinPEISO
sanboot ${boot-url}/iso/WinPE.iso
boot

3. Скопируйте WinPE.iso в каталог C:\tools\pxesrv\files\iso.

4. Смонтируйте установочный ISO образ и откройте общий доступ к нему.

5. Запустите pxesrv.exe от имени администратора, включите опцию HTTPd.

6. Укажите IP адрес компьютера в полях Option 54 DHCP Server и Next-Server.

7. Установите ipxe.pxe (для BIOS) или ipxe-x86_64.efi (для UEFI) в качестве Boot File.

8. Укажите pxe_menu.txt в поле Filename.

9. Запустите PXE сервер, нажав кнопку Online.

Сетевая установка Windows 10 и 11 с PXE сервера

Теперь вам нужно загрузить ваш компьютер, на который вы хотите установить Windows, с PXE сервера. Компьютер должен находится в той же локальной сети (VLAN), что и компьютер с PXE сервером.

1. Настройте компьютер, на который вы хотите установить Windows, для загрузки через PXE в BIOS/UEFI.

2. Компьютер получит IP адрес через DHCP и увидит меню iPXE.

3. После загрузки WinPE командой wpeinit, подключитесь к сетевому каталогу с установочным образом Windows с помощью команды:

Net use E: \\192.168.13.202\e

Где 192.168.13.202 — это IP компьютера с PXE сервером, а E — имя общей папки.

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

Лицензионный ключ активации Windows 11 от

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Не работают скриншоты windows 10 win shift s
  • Система не обнаружила msvcr71 dll windows 10 для винкс
  • Windows 7 home basic oa cis and ge acer
  • Windows 10 intel atom d2550
  • Чем посмотреть dmp файл windows