ryzhov_al
29-03-2012, 13:19
Введение
Ниже приведён HOW-TO, описывающий сетевую установку Windows 7 x64 с помощью роутера.
Для повторения процедуры установки вам понадобятся следующие файлы:
установочный диск\ISO-образ Windows 7 (http://technet.microsoft.com/ru-ru/evalcenter/cc442495.aspx) (3,4Гб),
ISO-образ Windows AIK for Windows 7 (http://www.microsoft.com/download/en/details.aspx?id=5753) (1,3Гб),
ISO-образ Windows AIK for Windows 7 sp1 (http://www.microsoft.com/download/en/details.aspx?id=5188) (0,9Гб),
архив (http://files.ryzhov-al.ru/Routers/Win7%20Deployment/win7x64_pxe.tgz) с готовыми файлами Windows AIK (430Кб).
Работа на ПК. Подготовка файлов
смонтируйте ISO-образ Windows AIK for Windows 7 и выполните установку среды AIK (StartCD.exe)
смонтируйте ISO-образ Windows AIK for Windows 7 sp1 и обновите AIK, выполнив в командной строке от имени администратора:
xcopy E:\ "C:\Program Files\Windows AIK\Tools\PETools" /ERDY
где Е: - ваш диск со смонтированным ISO-образом.
выполните пункт меню "Пуск > Программы > Microsoft Windows AIK > Командная строка средств развертывания (Deployment Tools Command Prompt)",
определитесь с местом для хранения временных файлов (в примере d:\win7pe) и выполните в командной строке:
copype.cmd amd64 d:\win7pe
В этом архиве (http://files.ryzhov-al.ru/Routers/Win7%20Deployment/win7x64_pxe.tgz) пять файлов, всех их вы можете найти в папке d:\win7pe. Последний файл, необходимый для сетевой загрузки - winpe.win - вам необходимо допилить самостоятельно. WinPE после загрузки компьютера будет обращаться к сетевой шаре роутера и скачивать оттуда файлы установки. Выберем имя общего сетевого ресурса на роутере для хранения файлов установки - \\192.168.0.1\share\win7_install, где 192.168.0.1 - ip-адрес вашего роутера.
смонтируйте ISO-образ с установочными файлами Windows 7 и скопируйте с него на сетевой ресурс \\192.168.0.1\share\win7_install папку sources целиком. Подчёркиваю, на сетевой шаре \\192.168.0.1\share\win7_install у вас должна появиться папка sources, а не её содержание. Теперь подготовим образ winpe.win, указав в нём имя нашей шары.
откройте командную строку от имени администратора и выполните:
cd "C:\Program Files\Windows AIK\Tools\amd64\Servicing"
Dism /Mount-Wim /WimFile:"d:\win7pe\winpe.wim" /index:1 /MountDir:"d:\win7pe\mount"
Откройте в блокноте с администраторскими правами файл d:\win7pe\mount\windows\system32\startnet.cmd и приведите его содержание к следующему виду:
wpeinit
net use z: \\192.168.0.1\share\win7_install
if exist z:\sources\setup.exe (
z:
cd \sources
setup.exe
)
Закройте блокнот и окошки Проводника, "ведущие" в иерархию d:\win7pe\mount и размонтируйте образ winpe.win из командой строки с правами администратора:
cd "C:\Program Files\Windows AIK\Tools\amd64\Servicing"
Dism /unmount-Wim /MountDir:"d:\win7pe\mount" /Commit
скопируйте на сетевую шару \\192.168.0.1\share\win7_install готовый файл d:\win7pe\winpe.wim
Работа на роутере. Настройка необходимых сервисов
установите на роутер SAMBA 3.х, имеющаяся в прошивке SAMBA 2.0 не подходит для сетевой установки. Пример конфига в коде ниже:
$ opkg install samba36-server
$ cat /opt/etc/samba/smb.conf
[global]
log file = /opt/var/log/%m
netbios name = MYRouter
workgroup = MYHOME
server string = ASUS Router
force user = admin
interfaces = br0
bind interfaces only = yes
browseable = yes
deadtime = 30
encrypt passwords = true
enable core files = no
guest account = nobody
invalid users = admin
load printers = no
local master = yes
map to guest = Bad User
min receivefile size = 0
null passwords = yes
obey pam restrictions = no
os level = 20
passdb backend = smbpasswd
preferred master = auto
printable = no
reset on zero vc = yes
remote announce = 192.168.0.255
security = user
smb encrypt = disabled
smb passwd file = /opt/etc/samba/smbpasswd
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65535 SO_SNDBUF=65535
syslog = 2
writeable = yes
unix charset = UTF-8
use sendfile = yes
[share]
path = /tmp/harddisk
browseable = yes
guest ok = yes
writeable = yes
$ killall smbd
$ killall nmbd
$ /opt/sbin/smbd -D
$ /opt/sbin/nmbd -D
скачайте и распакуйте приложенные к посту файлы для PXE-загрузки. Папка /tmp/harddisk/win7_install/w7-pxe выбрана для хранения файлов для PXE:
$ mkdir /tmp/harddisk/win7_install/w7-pxe
$ cd /tmp/harddisk/win7_install
$ wget http://files.ryzhov-al.ru/Routers/Win7%20Deployment/win7x64_pxe.tgz
$ tar -xvzf ./win7x64_pxe.tgz
$ mv -f winpe.wim ./w7-pxe/boot
Установите на роутер tftp-сервер, пример файла ремаппинга символов в коде ниже:
$ opkg install tftpd-hpa
$ cat /opt/etc/tftpd/remap
r ^\\ # Remove first double backslashes
rg \\ / # Convert backslashes to slashes
#e pxeboot.n12 # Do not proces subsequent rules
$ tftpd-hpa -m /opt/etc/tftpd/remap -l -vvv -s /tmp/harddisk/win7_install/w7-pxe
отредактируйте /etc/dnsmasq.conf добавив в конец файла строчку dhcp-boot=pxeboot.n12, сохраните изменения во flash-памяти роутера и перезапустите dnsmasq для того, чтобы настройки вступили в силу:
$ cat /etc/dnsmasq.conf
user=nobody
resolv-file=/tmp/resolv.conf
no-poll
interface=br0
no-negcache
cache-size=512
dhcp-leasefile=/tmp/dnsmasq.log
dhcp-range=lan,192.168.0.1,192.168.0.254,86400
read-ethers
dhcp-authoritative
dhcp-boot=pxeboot.n12
$ flashfs save
$ flashfs commit
$ killall dnsmasq
$ dnsmasq
Всё готово.
Технические подробности для любознательных
Процесс сетевой установки можно поделить на следующие этапы:
ПК, загружаясь по сети, первым делом взаимодействует с DHCP-сервером dnsmasq, получая помимо сетевых настроек опцию, описывающую какой файл необходимо закачать по tftp и где, собственно, этот tftp-сервер находится.
ПК обращается к tftp-серверу tftpd-hpa, выкачивает крохотный загрузчик pxeboot.n12 и передаёт ему управление,
pxeboot.n12 выкачивает полноценный менеджер загрузки Windows bootmgr.exe,
bootmgr.exe, свою очередь, выкачивает данные конфигурации загрузки /boot/BCD и получает инструкцию о дальнейших действиях. Вы можете подготовить BCD самостоятельно (http://w7seven.ru/installation/98-ustanovka-windows-7-po-seti.html), я специально упростил мануал, приложив готовый. BCD представляет собой примитивный куст реестра Windows, вы даже можете подгрузить его в regedit и редактировать по своему усмотрению.
далее bootmgr.exe выкачивает по tftp файлы boot.sdi (System Deployment Image) и winpe.wim - готовый образ операционной системы Windows PЕ, разворачивает его непосредственно в оперативной памяти и передаёт ему управление. Требования к клиентскому ПК - не менее 512Мб RAM. Признаком успешного завершения этого этапа будет переход графический интерфейс Windows PE.
Обращаю ваше внимание на то, что вы можете подкладывать в папку w7-pxe/boot свой файл winpe.win для выполнения собственных нужд, как-то:
создание эталонного образа ПК, который будет потом развёрнут на других компьтерах,
заливка подготовленного образа Windows на ПК. Кстати, как раз с помощью этой штатной возможности сделаны образы Windows вместе с софтом, доступные на торрентах. В описаниях к ним любят хвалиться "Установка ОС за пять минут",
загрузка ERD-инструментария для восстановления работоспособности Windows. Все эти самодельные загрузочные флешки всех мастей на торрентах (пример (http://nnm-club.ru/forum/viewtopic.php?t=370753)), содержащие в себе как швейцарских нож все мыслимые и немыслимые инструменты построены на базе WindowsPE. Вам ничего не мешает взять с такой флешки wim-образ и подложить его в /tmp/harddisk/win7_install/w7-pxe/boot. Всё будет отлично работать.
после выкачивания образа winpe.wim tftp-сервер больше не используется. Развёрнутая в памяти Windows PE сама инициализирует сетевые контроллеры. Если сетевой контроллер ПК построен на каком-то экзотическом железе, то дальнейшая установка Windows будет невозможна. Установка дальше продолжается, используя исключительно SAMBA-шару роутера.
Windows PE выполняет скрипт \windows\system32\startnet.cmd, в котором сетевая шара роутера подключается как сетевой диск и запускает установку Windows так, будто была выполнена загрузка с компакт-диска: будет выведено меню разбивки дисков и прочие шаги.
Установка Windows 7 от момента старта "голого" ПК до окончания установки и появления рабочего стола занимает ~25 минут.
Ниже приведён HOW-TO, описывающий сетевую установку Windows 7 x64 с помощью роутера.
Для повторения процедуры установки вам понадобятся следующие файлы:
установочный диск\ISO-образ Windows 7 (http://technet.microsoft.com/ru-ru/evalcenter/cc442495.aspx) (3,4Гб),
ISO-образ Windows AIK for Windows 7 (http://www.microsoft.com/download/en/details.aspx?id=5753) (1,3Гб),
ISO-образ Windows AIK for Windows 7 sp1 (http://www.microsoft.com/download/en/details.aspx?id=5188) (0,9Гб),
архив (http://files.ryzhov-al.ru/Routers/Win7%20Deployment/win7x64_pxe.tgz) с готовыми файлами Windows AIK (430Кб).
Работа на ПК. Подготовка файлов
смонтируйте ISO-образ Windows AIK for Windows 7 и выполните установку среды AIK (StartCD.exe)
смонтируйте ISO-образ Windows AIK for Windows 7 sp1 и обновите AIK, выполнив в командной строке от имени администратора:
xcopy E:\ "C:\Program Files\Windows AIK\Tools\PETools" /ERDY
где Е: - ваш диск со смонтированным ISO-образом.
выполните пункт меню "Пуск > Программы > Microsoft Windows AIK > Командная строка средств развертывания (Deployment Tools Command Prompt)",
определитесь с местом для хранения временных файлов (в примере d:\win7pe) и выполните в командной строке:
copype.cmd amd64 d:\win7pe
В этом архиве (http://files.ryzhov-al.ru/Routers/Win7%20Deployment/win7x64_pxe.tgz) пять файлов, всех их вы можете найти в папке d:\win7pe. Последний файл, необходимый для сетевой загрузки - winpe.win - вам необходимо допилить самостоятельно. WinPE после загрузки компьютера будет обращаться к сетевой шаре роутера и скачивать оттуда файлы установки. Выберем имя общего сетевого ресурса на роутере для хранения файлов установки - \\192.168.0.1\share\win7_install, где 192.168.0.1 - ip-адрес вашего роутера.
смонтируйте ISO-образ с установочными файлами Windows 7 и скопируйте с него на сетевой ресурс \\192.168.0.1\share\win7_install папку sources целиком. Подчёркиваю, на сетевой шаре \\192.168.0.1\share\win7_install у вас должна появиться папка sources, а не её содержание. Теперь подготовим образ winpe.win, указав в нём имя нашей шары.
откройте командную строку от имени администратора и выполните:
cd "C:\Program Files\Windows AIK\Tools\amd64\Servicing"
Dism /Mount-Wim /WimFile:"d:\win7pe\winpe.wim" /index:1 /MountDir:"d:\win7pe\mount"
Откройте в блокноте с администраторскими правами файл d:\win7pe\mount\windows\system32\startnet.cmd и приведите его содержание к следующему виду:
wpeinit
net use z: \\192.168.0.1\share\win7_install
if exist z:\sources\setup.exe (
z:
cd \sources
setup.exe
)
Закройте блокнот и окошки Проводника, "ведущие" в иерархию d:\win7pe\mount и размонтируйте образ winpe.win из командой строки с правами администратора:
cd "C:\Program Files\Windows AIK\Tools\amd64\Servicing"
Dism /unmount-Wim /MountDir:"d:\win7pe\mount" /Commit
скопируйте на сетевую шару \\192.168.0.1\share\win7_install готовый файл d:\win7pe\winpe.wim
Работа на роутере. Настройка необходимых сервисов
установите на роутер SAMBA 3.х, имеющаяся в прошивке SAMBA 2.0 не подходит для сетевой установки. Пример конфига в коде ниже:
$ opkg install samba36-server
$ cat /opt/etc/samba/smb.conf
[global]
log file = /opt/var/log/%m
netbios name = MYRouter
workgroup = MYHOME
server string = ASUS Router
force user = admin
interfaces = br0
bind interfaces only = yes
browseable = yes
deadtime = 30
encrypt passwords = true
enable core files = no
guest account = nobody
invalid users = admin
load printers = no
local master = yes
map to guest = Bad User
min receivefile size = 0
null passwords = yes
obey pam restrictions = no
os level = 20
passdb backend = smbpasswd
preferred master = auto
printable = no
reset on zero vc = yes
remote announce = 192.168.0.255
security = user
smb encrypt = disabled
smb passwd file = /opt/etc/samba/smbpasswd
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65535 SO_SNDBUF=65535
syslog = 2
writeable = yes
unix charset = UTF-8
use sendfile = yes
[share]
path = /tmp/harddisk
browseable = yes
guest ok = yes
writeable = yes
$ killall smbd
$ killall nmbd
$ /opt/sbin/smbd -D
$ /opt/sbin/nmbd -D
скачайте и распакуйте приложенные к посту файлы для PXE-загрузки. Папка /tmp/harddisk/win7_install/w7-pxe выбрана для хранения файлов для PXE:
$ mkdir /tmp/harddisk/win7_install/w7-pxe
$ cd /tmp/harddisk/win7_install
$ wget http://files.ryzhov-al.ru/Routers/Win7%20Deployment/win7x64_pxe.tgz
$ tar -xvzf ./win7x64_pxe.tgz
$ mv -f winpe.wim ./w7-pxe/boot
Установите на роутер tftp-сервер, пример файла ремаппинга символов в коде ниже:
$ opkg install tftpd-hpa
$ cat /opt/etc/tftpd/remap
r ^\\ # Remove first double backslashes
rg \\ / # Convert backslashes to slashes
#e pxeboot.n12 # Do not proces subsequent rules
$ tftpd-hpa -m /opt/etc/tftpd/remap -l -vvv -s /tmp/harddisk/win7_install/w7-pxe
отредактируйте /etc/dnsmasq.conf добавив в конец файла строчку dhcp-boot=pxeboot.n12, сохраните изменения во flash-памяти роутера и перезапустите dnsmasq для того, чтобы настройки вступили в силу:
$ cat /etc/dnsmasq.conf
user=nobody
resolv-file=/tmp/resolv.conf
no-poll
interface=br0
no-negcache
cache-size=512
dhcp-leasefile=/tmp/dnsmasq.log
dhcp-range=lan,192.168.0.1,192.168.0.254,86400
read-ethers
dhcp-authoritative
dhcp-boot=pxeboot.n12
$ flashfs save
$ flashfs commit
$ killall dnsmasq
$ dnsmasq
Всё готово.
Технические подробности для любознательных
Процесс сетевой установки можно поделить на следующие этапы:
ПК, загружаясь по сети, первым делом взаимодействует с DHCP-сервером dnsmasq, получая помимо сетевых настроек опцию, описывающую какой файл необходимо закачать по tftp и где, собственно, этот tftp-сервер находится.
ПК обращается к tftp-серверу tftpd-hpa, выкачивает крохотный загрузчик pxeboot.n12 и передаёт ему управление,
pxeboot.n12 выкачивает полноценный менеджер загрузки Windows bootmgr.exe,
bootmgr.exe, свою очередь, выкачивает данные конфигурации загрузки /boot/BCD и получает инструкцию о дальнейших действиях. Вы можете подготовить BCD самостоятельно (http://w7seven.ru/installation/98-ustanovka-windows-7-po-seti.html), я специально упростил мануал, приложив готовый. BCD представляет собой примитивный куст реестра Windows, вы даже можете подгрузить его в regedit и редактировать по своему усмотрению.
далее bootmgr.exe выкачивает по tftp файлы boot.sdi (System Deployment Image) и winpe.wim - готовый образ операционной системы Windows PЕ, разворачивает его непосредственно в оперативной памяти и передаёт ему управление. Требования к клиентскому ПК - не менее 512Мб RAM. Признаком успешного завершения этого этапа будет переход графический интерфейс Windows PE.
Обращаю ваше внимание на то, что вы можете подкладывать в папку w7-pxe/boot свой файл winpe.win для выполнения собственных нужд, как-то:
создание эталонного образа ПК, который будет потом развёрнут на других компьтерах,
заливка подготовленного образа Windows на ПК. Кстати, как раз с помощью этой штатной возможности сделаны образы Windows вместе с софтом, доступные на торрентах. В описаниях к ним любят хвалиться "Установка ОС за пять минут",
загрузка ERD-инструментария для восстановления работоспособности Windows. Все эти самодельные загрузочные флешки всех мастей на торрентах (пример (http://nnm-club.ru/forum/viewtopic.php?t=370753)), содержащие в себе как швейцарских нож все мыслимые и немыслимые инструменты построены на базе WindowsPE. Вам ничего не мешает взять с такой флешки wim-образ и подложить его в /tmp/harddisk/win7_install/w7-pxe/boot. Всё будет отлично работать.
после выкачивания образа winpe.wim tftp-сервер больше не используется. Развёрнутая в памяти Windows PE сама инициализирует сетевые контроллеры. Если сетевой контроллер ПК построен на каком-то экзотическом железе, то дальнейшая установка Windows будет невозможна. Установка дальше продолжается, используя исключительно SAMBA-шару роутера.
Windows PE выполняет скрипт \windows\system32\startnet.cmd, в котором сетевая шара роутера подключается как сетевой диск и запускает установку Windows так, будто была выполнена загрузка с компакт-диска: будет выведено меню разбивки дисков и прочие шаги.
Установка Windows 7 от момента старта "голого" ПК до окончания установки и появления рабочего стола занимает ~25 минут.