Установка windows 7 / windows server 2008 по сети (PXE BOOT)

PXE (англ. Preboot eXecution Environment, произносится пикси) — среда для загрузки компьютеров с помощью сетевой карты без использования жёстких дисков, компакт-дисков и других устройств, применяемых при загрузке операционной системы. Для организации загрузки системы в PXE используются протоколы IP, UDP, BOOTP и TFTP.

PXE-код, обычно находящийся в ПЗУ сетевой карты, получает из сети по протоколу TFTP (получив адрес TFTP-сервера по BOOTP) исполняемый файл, после чего передаёт ему управление.

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

Требования

  • Другой компьютер с ОС windows7/windows 2008 под рукой (для создания файлов установки)
  • Компьютер, на который будет ставиться ОС, должен быть доступен физически, или через IP-KVM
  • Его BIOS должен уметь грузиться с PXE
  • В одном сегменте сети с ним должен быть ещё какой-нибудь компьютер с windows или linux

Если в одном сегменте сети есть компьютер с ОС windows, можно обойтись без манипуляций с linux сервером, а использовать программу TFTPD32.

Подготовка файлов (на windows):

Установить WAIK (Windows Automated Installation Kit) for Windows® 7 and Windows Server® 2008 R2.

Как администратор:

Start (Пуск) -> All Programs (Все программы) -> Microsoft Windows AIK -> Deployment Tools Command Prompt

В появившимся окне выполнить:
copype.cmd amd64 c:\winpe
mkdir c:\netboot\win\boot
imagex /mountrw winpe.wim 1 mount
xcopy c:\winpe\winpe.wim c:\netboot\win\boot
xcopy c:\winpe\mount\windows\boot\pxe\pxeboot.n12 c:\netboot\win
xcopy c:\winpe\mount\windows\boot\pxe\bootmgr.exe c:\netboot\win
imagex.exe /unmount /commit mount
xcopy c:\winpe\iso\boot\boot.sdi c:\netboot\win\boot

Сделать файл 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 "MyWinPE 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 30
bcdedit -store %1\BCD -set {bootmgr} displayorder %guid%

Как администратор:
createbcd.cmd c:\netboot\win\boot

Скопировать папку sources c установочного образа/диска в папку c:\netboot\win
Заархивировать папку c:\netboot\win и закачать на linux сервер.

Подготовка ПО (на linux сервере):
aptitude install dhcp3-server tftpd-hpa samba
dhcp3-server


Настроить выдачу ip адреса и загрузку с файла pxeboot.n12
/etc/dhcp3/dhcpd.conf
subnet 192.168.10.0 netmask 255.255.255.240
{
#  host ferrum {
#    hardware ethernet 68:b5:99:b0:44:94;
#    fixed-address 192.168.10.100;
#  }
# или range 192.168.10.100 192.168.10.100;
  filename = "pxeboot.n12";
}

важно: filename = "pxeboot.n12";
Выполнить:
/etc/init.d/dhcp3-server restart
iptables -A INPUT -p udp -m udp --dport 67 -j ACCEPT
tftpd-hpa
Настроить трансляцию слешей и заглавных букв:
/etc/default/tftpd-hpa
# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-m /etc/tftpd.remap --secure"

/etc/tftpd.remap
rg \\ /
rg A a
rg B b
rg C c
rg D d
rg E e
rg F f
rg G g
rg H h
rg I i
rg J j
rg K k
rg L l
rg M m
rg N n
rg O o
rg P p
rg Q q
rg R r
rg S s
rg T t
rg U u
rg V v
rg W w
rg X x
rg Y y
rg Z z

Выполнить:
/etc/init.d/tftpd-hpa restart
iptables -A INPUT -s gnu.su -p udp -m udp --dport 67 -j ACCEPT
samba

Настроить:
/etc/samba/smb.conf
[win]
    comment = win
    read only = yes
    path = /var/lib/tftpboot
    valid users = gnu win

Выполнить:
useradd win
smbpasswd -a win (поставить пароль, например "win")
/etc/init.d/smbd restart
iptables -A INPUT -s gnu.su -p tcp -m tcp --dport 139 -j ACCEPT
iptables -A INPUT -s gnu.su -p tcp -m tcp --dport 445 -j ACCEPT
iptables

На всякий случай выполнить:
iptables -A INPUT -s gnu.su -j ACCEPT

Подготовка файлов (на linux сервере):
Получить и распаковать файлы с windows сервера.
Скопировать файлы в папку /var/lib/tftpboot/ так, чтобы в корне папки лежали:
boot
bootmgr.exe
pxeboot.n12
sources
Выполнить:
find /var/lib/tftpboot/ -exec rename 'y/A-Z/a-z/' {} \;

На устанавливаемом сервере
Запустить загрузку по сети (PXE)
В появившемся командном окне выполнить:
net use z: \\\win /user:win <пароль из команды "smbpasswd -a win" (например, win)>z:\sources\setup.exe


Установить windows, как при обычной установке






Вас также может заинтересовать:

Официально доступны релиз-кандидаты Windows 7 SP1 и Windows Server 2008 R2 SP1
Подписан финальный SP1 для Windows 7 и Windows Server 2008 R2
Вышел Windows Server 2012 Essentials
Развертывание RemoteFX на Windows Server 2012: как обойти GUI ошибку консоли Hyper-V
Windows 8 и Windows Phone 8 получат поддержку игрового движка Unity
Nginx с Виндой и ... (или установка Nginx под Windows в качестве сервиса)