Итак, я плавно со своим PXE сервером развернутым на Ubuntu 18.04 Server подошел к этапу, когда нужно в дополнении к автоматизированным установкам Ubuntu 18.04 Desktop & Server дополнить функционал. Уже сделал, что можно загрузившись через LiveCD инструмент сбросить Windows пароль, проверить жесткий диск на предмет заражения вирусами т. д. А вот моя мечта это возможность устанавливать Windows 7,10 и серверную линейку из среды Ubuntu. Использовать WDS, пожалуй нет. Я специализируюсь на Ubuntu системах, а значит и пишу и делаю исходя из своего предпочтения. В этой заметке я для себя разобрал, как сделать Windows загрузку из под Ubuntu 18.04 PXE.
Подготавливаю систему Ubuntu 18.04 Server amd64 под первоначальное использование:
ekzorchik@srv-bionic:~$ hg clone --insecure https://172.33.33.7/hg/dproject
ekzorchik@srv-bionic:~$ sudo ./dproject/default
Устанавливаю пакет Samba на нем, точнее с его помощью у меня будет файловый ресурс где будет храниться образа Windows 7, как x86/amd64:
ekzorchik@srv-bionic:~$ sudo apt-get install samba samba-common -y
ekzorchik@srv-bionic:~$ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.backup
ekzorchik@srv-bionic:~$ sudo nano /etc/samba/smb.conf
[global]
workgroup = WORKGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
idmap config * : backend = tdb
cups options = raw
netbios name = pxe
map to guest = bad user
dns proxy = no
public = yes
## For multiple installations the same time - not lock kernel
kernel oplocks = no
nt acl support = no
security = user
guest account = nobody
[install]
comment = Windows 7 Image
path = /windows
read only = no
browseable = yes
public = yes
printable = no
guest ok = yes
oplocks = no
level2 oplocks = no
locking = no
acl allow execute always = true
На заметку: Параметр “acl allow execute always = true
” в smb.conf
необходим для возможности запускать на исполнение файлы exe.
ekzorchik@srv-bionic:~$ sudo testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing
rlimit_max (1024) to minimum Windows limit (16384)
ekzorchik@srv-bionic:~$ sudo mkdir -p /windows/x32
ekzorchik@srv-bionic:~$ sudo mkdir -p /windows/x64
Монтирую ISO образ Windows 7 на каталог Samba сервиса:
ekzorchik@navy:~$ scp /media/ekzorchik/iso/SW_DVD5_Win_Pro_7w_SP1_64BIT_Russian_-2_MLF_X17-59431.ISO ekzorchik@172.33.33.25:/home/ekzorchik
ekzorchik@srv-bionic:~$ sudo mount -o loop SW_DVD5_Win_Pro_7w_SP1_64BIT_Russian_-2_MLF_X17-59431.ISO /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.
ekzorchik@srv-bionic:~$ sudo cp -fr /mnt/* /windows/x64/
ekzorchik@srv-bionic:~$ sudo umount /mnt
ekzorchik@navy:~$ scp /media/ekzorchik/iso/SW_DVD5_Win_Pro_7w_SP1_32BIT_Russian_MLF_X17-28979.ISO ekzorchik@172.33.33.25:/home/ekzorchik
ekzorchik@srv-bionic:~$ sudo mount -o loop SW_DVD5_Win_Pro_7w_SP1_32BIT_Russian_MLF_X17-28979.ISO /mnt
ekzorchik@srv-bionic:~$ sudo cp -fr /mnt/* /windows/x32/
ekzorchik@srv-bionic:~$ sudo umount /mnt
ekzorchik@srv-bionic:~$ sudo chmod -R 755 /windows/
ekzorchik@srv-bionic:~$ sudo chown -R nobody:nogroup /windows/
ekzorchik@srv-bionic:~$ sudo /etc/init.d/smbd restart
ekzorchik@srv-bionic:~$ sudo /etc/init.d/nmbd restart
Устанавливаю PXE сервис:
Устанавливаю в систему пакет tftpd-hpa:
ekzorchik@srv-bionic:~$ sudo apt-get install tftpd-hpa -y
ekzorchik@srv-bionic:~$ sudo mkdir /media/pxeboot
ekzorchik@srv-bionic:~$ sudo chmod -R 777 /media/pxeboot/
ekzorchik@srv-bionic:~$ sudo chown -R nobody:nogroup /media/pxeboot/
ekzorchik@srv-bionic:~$ sudo cp /etc/default/tftpd-hpa /etc/default/tftpd-hpa.backup
ekzorchik@srv-bionic:~$ sudo nano /etc/default/tftpd-hpa
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/media/pxeboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure --create --verbose"
Перезапускаю сервис tftpd-hpa:
ekzorchik@srv-bionic:~$ sudo service tftpd-hpa restart && sudo service tftpd-hpa status | head -n 5
ekzorchik@srv-bionic:~$ sudo apt-get install pxelinux syslinux -y
ekzorchik@srv-bionic:~$ sudo cp /usr/lib/syslinux/modules/bios/vesamenu.c32 /media/pxeboot/
ekzorchik@srv-bionic:~$ sudo cp /usr/lib/syslinux/modules/bios/libcom32.c32 /media/pxeboot/
ekzorchik@srv-bionic:~$ sudo cp /usr/lib/syslinux/modules/bios/libutil.c32 /media/pxeboot/
ekzorchik@srv-bionic:~$ sudo cp /usr/lib/PXELINUX/pxelinux.0 /media/pxeboot/
ekzorchik@srv-bionic:~$ sudo cp /usr/lib/syslinux/memdisk /media/pxeboot/
ekzorchik@srv-bionic:~$ sudo cp /usr/lib/syslinux/modules/bios/ldlinux.c32 /media/pxeboot/
ekzorchik@srv-bionic:~$ sudo mkdir /media/pxeboot/pxelinux.cfg/
ekzorchik@srv-bionic:~$ sudo nano /media/pxeboot/pxelinux.cfg/default
#Секция по умолчанию, если пользователь не выбрал никакого варианта или нажал
клавишу Enter
DEFAULT vesamenu.c32
#Секция времени в секундах, в течении которого отображается загрузочное меню
TIMEOUT 600
#Секция отображения строки для выбора варианта загрузки (1 - view, 0 - hidden)
PROMPT 0
MENU TITLE PXE MENU
# загрузка системы с диска
LABEL Boot from first hard disk
localboot 0x80
label Install Windows 7 x32/x64
KERNEL memdisk
INITRD windows/winpe_amd64.iso
APPEND iso raw
ekzorchik@srv-bionic:~$ sudo chown -R nobody:nogroup /media/pxeboot/
ekzorchik@srv-bionic:~$ ss -l4 | grep tftp
udp UNCONN 3072 0 0.0.0.0:tftp 0.0.0.0:*
Далее на VM под управлением Windows 7 x64 устанавливаю пакет Windows AIK (KB3AIK_RU.iso
размером 1.2 Gb
) и через инструмент Deployment Tools Command Prompt
Win + Все программы — Microsoft Windows AIK – «Командная стройка средств развертывания» (запускаю через правый клик с правами администратора)
(для amd64 создаю winpe образ)
C:\Program Files\Windows AIK\Tools\PETools>copype amd64 c:\winPE_x64
c:\winPE_x64>copy "c:\Program Files\Windows AIK\Tools\PETools\amd64\winpe.wim" c:\winPE_x64\ISO\sources\Boot.wim
c:\winPE_x64>copy "c:\Program Files\Windows AIK\Tools\amd64\imagex.exe" c:\winPE_x64\ISO\
c:\winPE_x64>oscdimg -n -bC:\winPE_x64\etfsboot.com c:\winPE_x64\ISO c:\winPE_x64\winpe_amd64.iso
Computing directory information complete
Image file is 170760192 bytes
Writing 22 files in 9 directories to c:\winPE_x64\winpe_amd64.iso
100% complete
Final image file is 170760192 bytes
Done.
(для x86 создаю winpe образ)
C:\Program Files\Windows AIK\Tools\PETools>copype x86 c:\winPE_x86
c:\winPE_x86>copy "c:\Program Files\Windows AIK\Tools\PETools\x86\winpe.wim" c:\winPE_x86\ISO\sources\Boot.wim
c:\winPE_x86>copy "c:\Program Files\Windows AIK\Tools\x86\imagex.exe" c:\winPE_x86\ISO\
c:\winPE_x86>oscdimg -n -bC:\winPE_x86\etfsboot.com c:\winPE_x86\ISO c:\winPE_x86\winpe_x86.iso
Computing directory information complete
Image file is 145268736 bytes
Writing 18 files in 8 directories to c:\winPE_x86\winpe_x86.iso
100% complete
Final image file is 145268736 bytes
Done.
Копирую получившийся iso файл на SAMBA сервис в каталог \\172.33.33.25\install
ekzorchik@srv-bionic:~$ sudo mkdir /media/pxeboot/windows/
ekzorchik@srv-bionic:~$ sudo mv /windows/winpe_amd64.iso /media/pxeboot/windows/
ekzorchik@srv-bionic:~$ sudo mv /windows/winpe_x86.iso /media/pxeboot/windows/
Теперь беру VM и выставляю ей что она сперва должна произвести загрузку по сети
Вижу запрос на нажатие клавиши нажимаю клавишу Enter и производится загрузка с диска, а диск у меня это iso образ. Тем самым стартует загрузка Windows, но не привычная установка а приглашение командной строки:
В этом приглашении следует уже подмонтировать SAMBA ресурс и запустить установку ОС, т. е. Windows 7 Pro x64
X:\windows\system32> net use M: \\172.33.33.25\install\x64
где M:
– это произвольное буква на которую монтирую доступ к ресурсу.
Затем перехожу на букву M:
и запускаю файл инсталляции операционной системы:
X:\windows\system32\cd /d M:
M:\>setup.exe
Указываю метод ввода (я предпочитаю чтобы дефолтным был английский язык, а не русский)
Нажимаю «Далее» – «Установить» и начинается обыденный процесс инсталляции операционной системы Windows, как если бы я просто записал образ на болванку или USB Flash Drive, выставил в BIOS с чего загружаться и загрузился.
Вообще следует разделить установку Windows в default файле:
LABEL Boot from first hard disk
localboot 0x80
LABEL Install Windows 7 Pro SP1 x64
KERNEL memdisk
INITRD windows/winpe_amd64.iso
APPEND iso raw
LABEL Install Windows 7 Pro SP1 x86
KERNEL memdisk
INITRD windows/winpe_x86.iso
APPEND iso raw
Далее, для того, чтобы автоматизировать установку системы, можно с помощью “диспетчера образов системы Windows” подготовить файл ответов Autounattend.xml
(именно так должен именовать файл ответов), и запускать установку с файлом ответов:
M:\setup.exe /unattend: Autounattend.xml
Исходя из этого, становится возможным на большом количестве персональных компьютеров которые необходимо вот прям, завтра, или сейчас ввести в эксплуатацию установить ось задействовав текущий PXE сервис и общий ресурс в роли SAMBA сервиса на который взгромоздить подготовленный ранее файл ответом или ставить все в ручную.
О том, как подготовить файл ответов будет в следующей заметке.
А пока я прощаюсь, на этом всё, с уважением автор блога Олло Александр aka ekzorchik