Продолжая серию статей по развёртыванию Windows, сегодня мы займёмся подготовкой сервера сетевой загрузки на базе ОС Linux и организацией загрузки Windows PE с такого сервера, а так же подготовим установочный дистрибутив Windows 7 или Windows Server 2008 R2 для установки с сетевого ресурса. В этой инструкции я приведу пример для Debian Linux 8.
Для работы нам понадобится образ Windows PE и установочный дистрибутив системы Windows.
Создаём файл маппинга:
Внимание! Важно, чтобы регистре букв в именах файлов был точно таким же, как вы указывайтей в файлах. Если вы в на этапе создания конфигурации указали /boot/bcd, а файл назвали /Boot/BCD, загрузчик не сможет загрузить систему, т.к. не найдёт нужного файла.
Создаём наш каталог загрузки:
Tftp сервер должен быть уже подготовлен, по инструкции выше.
Нам понадобится memdisk, копируем его из состава пакета syslinux:
Вы можете использовать любой уже имеющийся DHCP-сервер, ему необходимо передать следующие параметры:
Устанавливаем DHCP сервер:
Выставляем в виртуальной машине загрузку с сетевого адаптера, и пробуем загрузиться через сеть.
Если всё получилось, то основная и самая сложная часть работы сделана. Теперь подготовим дистрибутив для установки системы по сети.
Устанавливаем SAMBA
Правим конфигурацию samba:
Возьмём установочный дистрибутив Windows 7 SP1 x86 необходимой редакции, и скопируем все файлы на наш сервер в папку с дистрибутивами:
Теперь для того, чтобы у нас с нашего сервера устанавливалась наша система, то берём файл install.wim, который мы создавали при сборке собственного дистрибутива Windows, и заменяем им дистрибутивный файл.
Для работы нам понадобится образ Windows PE и установочный дистрибутив системы Windows.
- Создание образа Windows PE 3.1
- Создание собственного образа дистрибутива Windows 7 или Windows Server 2008 R2
- Настройка Linux PXE сервера сетевой установки Windows 7 или Windows Server 2008 R2
Подготовка загрузочных файлов Windows для PXE
Для загрузки системы Windows с PXE сервера нам понадобятся следующие файлы:- winpe/boot/fonts/wgl4_boot.ttf - из поставки Windows
- winpe/boot/bcd - хранилище конфигурации (необходимо сгенерировать)
- winpe/boot/boot.sdi - из поставки Windows
- winpe/boot/winpe.wim - образ Windows PE (инструкция по сборке)
- winpe/pxeboot.0 - pxeboot.n12 из поставки Windows
- winpe/bootmgr.exe - из поставки Windows
mkdir c:\tftpboot\winpe\bootСкопируем шрифт, который использует bootfix.bin и файл boot.sdi, который необходим для создания виртуального диска в памяти:
xcopy c:\WinPE\x86\ISO\boot\fonts\wgl4_boot.ttf c:\tftpboot\winpe\boot\fonts\wgl4_boot.ttfТеперь нам понадобится загрузчик, который загрузит менеджер загрузки и хранилище конфигурации. Они есть в загрузочном образе Windows PE. Для этого подключим образ Windows PE:
xcopy c:\WinPE\x86\ISO\boot\boot.sdi c:\tftpboot\winpe\boot\boot.sdi
dism /mount-wim /wimfile:C:\WinPE\x86\winpe.wim /index:1 /mountdir:C:\WinPE\x86\mountИ скопируем от туда файл pxeboot.n12, переименовав его в pxeboot.0 и bootmgr.exe:
xcopy c:\WinPE\x86\mount\Windows\Boot\PXE\pxeboot.n12 c:\tftpboot\winpe\pxeboot.0Необходимые файлы за исключением конфигурации загрузки и образа системы у нас есть, поэтому образ Windows PE можно отключить без сохранения изменений:
xcopy c:\WinPE\x86\mount\Windows\Boot\PXE\bootmgr.exe c:\tftpboot\winpe\bootmgr.exe
dism /unmount-wim /mountdir:C:\WinPE\x86\mount /discardКопируем образ системы Windows PE в папку загрузки:
xcopy C:\WinPE\x86\winpe.wim c:\tftpboot\winpe\boot\Теперь самое время сгенерировать конфигурацию загрузки, для этого создадим файл makebcd.cmd:
notepad c:\tftpboot\makebcd.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 "Windows PE 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%
move %1\BCD %1\bcd
c:\tftpboot\makebcd.cmd c:\tftpboot\winpe\bootНа этом подготовка необходимых файлов для загрузки с PXE в среде Windows окончена, и мы приступаем к настройке Linux-сервера.
Установка PXE-сервера
Установка TFTP
Установка необходимых пакетов:# aptitude install tftpd-hpa syslinux pxelinux -yНастраиваем TFTP-сервер:
# vim /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"Т.к. Windows будет искать свои файлы загрузки относительно корня tftp, делаем маппинг и ассоциируем эти файлы с каталогом winpe на сервере.
TFTP_DIRECTORY="/srv/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure -m /etc/default/tftp-remap.conf -v"
RUN_DAEMON="yes"
Создаём файл маппинга:
# vim /etc/default/tftp-remap.confСо слеюующим содержимым:
r pxeboot.0 /pxeboot.0Последняя строка "gr \\ /" говорит tftp, если в путях указывются обратные слэши, менять их на прямые.
r bootmgr.exe /winpe/bootmgr.exe
r \\Boot\\BCD /winpe/boot/bcd
r \\boot\\boot.sdi /winpe/boot/boot.sdi
r \\Boot\\winpe.wim /winpe/boot/winpe.wim
r \\Boot\\Fonts\\wgl4_boot.ttf /winpe/boot/fonts/wgl4_boot.ttf
gr \\ /
Внимание! Важно, чтобы регистре букв в именах файлов был точно таким же, как вы указывайтей в файлах. Если вы в на этапе создания конфигурации указали /boot/bcd, а файл назвали /Boot/BCD, загрузчик не сможет загрузить систему, т.к. не найдёт нужного файла.
Создаём наш каталог загрузки:
mkdir -p /srv/tftpboot/winpeТеперь необходим скопировать в него файлы, из каталога c:\tftpboot\:
c:\tftpboot\winpe\> pscp -r * root@pxeboot.home.local:/srv/tftpboot/winpe
Создаём меню загрузки
Для того, чтобы меню загрузки работало, нам понадобятся следующие файлы, копируем их в корневой каталог нашего tftp-сервера:# cp /usr/lib/PXELINUX/pxelinux.0 /srv/tftpbootИ создаём каталог, где будет хранится само меню загрузки:
# cp /usr/lib/syslinux/modules/bios/chain.c32 /srv/tftpboot
# cp /usr/lib/syslinux/modules/bios/ldlinux.c32 /srv/tftpboot
# cp /usr/lib/syslinux/modules/bios/libcom32.c32 /srv/tftpboot
# cp /usr/lib/syslinux/modules/bios/libutil.c32 /srv/tftpboot
# cp /usr/lib/syslinux/modules/bios/vesamenu.c32 /srv/tftpboot
# mkdir -p /srv/tftpboot/pxelinux.cfgЕщё нам понадобится красивая загрузочная картинка для нашего меню. Она должна быть в формате jpg и разрешением 640x480. Копируем её с нашей машины:
C:\Users\golovlevmv\> pscp Pictures\menu.jpg root@pxeboot.home.local:/srv/tftpboot/pxelinux.cfg/menu.jpgТеперь самое время создать меню загрузки:
# vim /srv/tftpboot/pxelinux.cfg/defaultСо следущим содержимым:
PROMPT 0Перезапускаем tftpd:
UI vesamenu.c32
MENU TITLE PXE Server Boot Menu
MENU BACKGROUND pxelinux.cfg/menu.jpg
TIMEOUT 600
LABEL ^0) Boot from hard disk
TEXT HELP
Boot from first (hdd 0)
ENDTEXT
COM32 chain.c32
APPEND hd0 1
MENU SEPARATOR
LABEL ^1) Load Windows PE 3.1 x86
TEXT HELP
Boot Windows PE x86 from pxeboot
ENDTEXT
kernel winpe/pxeboot.0
# /etc/init.d/tftpd-hpa restart
Альтернативный вариант загрузки с PXE
Так же можно организовать ещё один вариант загрузки системы с PXE, используя memdisk, но он потребует уже значительно большего объёма памяти и у вас могут возникнуть проблемы с компьютерами с объёмом памяти менее 1Гб.Tftp сервер должен быть уже подготовлен, по инструкции выше.
Нам понадобится memdisk, копируем его из состава пакета syslinux:
# cp /usr/lib/syslinux/memdisk /srv/tftpbootКопируем ISO-образ Windows PE:
C:\WinPE\x86\> pscp WinPE_x86.iso root@pxeboot.home.local:/srv/tftpboot/winpe/winpe_x86.isoДобавляем в наше загрузочное меню ещё один пункт:
# vim /srv/tftpboot/pxelinux.cfg/default
LABEL ^2) Load Windows PE 3.1 x86 (iso)
TEXT HELP
Boot Windows PE x86 from iso image
need more 512MB RAM to correct work
ENDTEXT
KERNEL memdisk
APPEND iso raw
INITRD winpe/winpe_x86.iso
Настройка DHCP
Для того, чтобы наши клиенты могли загружаться по сети, необходимо наличие DHCP-сервера, а он в свою очередь должен выдавать клиентам адрес свервеа сетевой загрузки и имя файла, которое необходимо загружать.Вы можете использовать любой уже имеющийся DHCP-сервер, ему необходимо передать следующие параметры:
- filename = "pxelinux.0";
- next-server <ip-адрес сервера>;
Устанавливаем DHCP сервер:
# aptitude install isc-dhcp-server -yВключаем DHCP на нужном нам сетевом интерфейсе:
# vim /etc/default/isc-dhcp-server
INTERFACES="eth1"Приводим dhcpd.conf к нужному нам виду:
# vim /etc/dhcp/dhcpd.conf
ddns-update-style none;Запускаем isc-dhcp-server:
option domain-name "home.local";
option domain-name-servers 192.168.140.10;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;
subnet 192.168.140.0 netmask 255.255.255.0 {
range 192.168.140.51 192.168.140.254;
option routers 192.168.140.10;
option domain-name "home.local";
filename = "pxelinux.0";
next-server 192.168.140.10;
}
# /etc/init.d/isc-dhcp-server startТеперь у нас должно загружаться окружение Windows PE. Через него мы можем скопировать данные из аварийной системы и установить чистую систему на машину.
Выставляем в виртуальной машине загрузку с сетевого адаптера, и пробуем загрузиться через сеть.
Если всё получилось, то основная и самая сложная часть работы сделана. Теперь подготовим дистрибутив для установки системы по сети.
Сетевая установка Windows
Далее для сетевой установки можно использовать уже существующий файловый сервер на базе Windows или SAMBA. Но, посколько я решил организовать хранение установочных дистрибутивов системы на этом же сервер, то кратко покажу, как организовать такой SAMBA-сервер на нашем серере PXE.Устанавливаем SAMBA
# aptitude install samba -yТут всё достаточно просто. Я приведу минимальный конфиг smb.conf, без подключения сервера к домену и задания пользовательских учётных записей. Это будет просто сервер с гостевым доступом на чтение.
Правим конфигурацию samba:
# vim /etc/samba/smb.conf
[global]Не забудьте указать "acl allow execute always = true". Этот параметр необходимо указать для того, чтобы можно было запускать на исполнение exe-файлы, иначе запустить setup.exe у вас не получится.
workgroup = WORKGROUP
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
server role = standalone server
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user
acl allow execute always = true
[win7x86]
comment = Windows 7
path = /srv/dist/win7x86
guest ok = yes
browseable = yes
create mask = 0644
directory mask = 0755
acl allow execute always = true
Возьмём установочный дистрибутив Windows 7 SP1 x86 необходимой редакции, и скопируем все файлы на наш сервер в папку с дистрибутивами:
C:\Users\golovlevmv\> pscp -r E:\ root@pxeboot.home.local:/srv/dist/win7x86/Перезапустим samba
# /etc/init.d/samba restartПопробуем обратиться к нашему сетевому ресурсу по имени или ip адресу "\\pxeboot\" или "\\192.168.140.10\".
Теперь для того, чтобы у нас с нашего сервера устанавливалась наша система, то берём файл install.wim, который мы создавали при сборке собственного дистрибутива Windows, и заменяем им дистрибутивный файл.
C:\Users\golovlevmv\> pscp C:\Win7\x86\dist\sources\install.wim root@pxeboot.home.local:/srv/dist/win7x86/sources/А вот файл /srv/dist/win7x86/sources/boot.wim можно удалить, т.к. загрузку мы уже к тому времени уже произвели с помощью Windows PE.
Запуск установки системы Windows 7 x86
Для того, чтобы запустить установку, необходимо подключить сетевой ресурс:net use * \\192.168.140.10\win7x86Подключится сетевой диск "Z:", и выполнить команду:
Z:\setup.exeДалее, для того, чтобы автоматизировать установку системы, можно с помощью "диспетчера образов системы Windows" подготовить файл ответов autounattend.xml, и запускать установку с файлом ответов:
Z:\setup.exe /unattend:autounattend.xmlВ такойм случае, для того, чтобы разворачивать системы Windows на большом количестве ПК, вам будет нужно лишь загрузиться с PXE, подключить сетевой ресурс, и запустить установку с указанием файла ответов.
c:\tftpboot\winpe\> pscp -r * root@pxeboot.home.local:/srv/tftpboot/winpe
ОтветитьУдалитьЭто может не работать из-за отсутствия прав. Можно через домашний каталог пользователя
ОС Linux - Это Debian.
ОтветитьУдалитьNight Блог: Установка Linux Pxe Сервера Для Загрузки Windows Pe >>>>> Download Now
ОтветитьУдалить>>>>> Download Full
Night Блог: Установка Linux Pxe Сервера Для Загрузки Windows Pe >>>>> Download LINK
>>>>> Download Now
Night Блог: Установка Linux Pxe Сервера Для Загрузки Windows Pe >>>>> Download Full
>>>>> Download LINK Ui