Установка windows 7 по сети pxe tftp
Всем привет.
Суть такова. По этому мануалу http://www.3dnews.ru/workshop/626279
создал winpe.win
Казалось что все хорошо, все работает, пока не столкнулся с проблемой по поводу:
Также необходимо отредактировать простой текстовый файл [C:\WinPE\]mount\windows\system32\startnet.cmd. Этот скрипт выполнится при старте PE-окружения и будет монтировать сетевую папку в качестве логического диска, с которого запустится установщик Windows 7.
wpeinit
net use z: \192.168.0.51\Win7Install password /user:username
z:\setup.exe
192.168.0.51 — это IP-адрес сервера, с которого производится установка. На нём надо скопировать все файлы с инсталляционного образа Windows 7 в какую-либо папку (в нашем примере это Win7Install) и открыть к ней доступ по сети. Вместо password и username надо соответственно указать пароль и имя локального пользователя. Можно даже создать отдельную учётную запись под это дело.
Дело в том, что не на всех компах цепляется эта шара. Почему — не могу понять. Пишет разные ошибки, мол ресурс не доступен.
Тут же, не перезагружая сервак и вообще ничего с ним не делая, этот же сетевой кабель втыкаю в другой комп, на котором все идет на ура. Тутже цепляю обратно к первому и опять ошибки.,((((
Перезагрузка сервака, перерасшаривание ресурса и все такое тоже не помогает, именно только на «нелюбимых» компах такое проявляется.
Как быть, че делать? А может как то по другому до этого ресурса стучаться?
Мож на серваке поднять HTTP сервер и как то с помощью него можно будет автоматом цепляться?
Да, для справки: на этом ресурсе лежит 8 гигов установочного дистрибутива Windows 7. Столько гигов потому что в него встроены многие программки + есть выбор между версиями: от стартера до проф с разной битностью. А все это хозяйство работает на Starter с помощью Tftpd32 и Syslinux (чисто для вывода первоначального меню, в котором можно выбрать нужное действие: запуск тестовых утилит или установку этой вот винды).
Всем спасибо за незамедлительные советы..)))))))) Очень надо, а то начальство живьем съест, если до конца августа сервак не будет работать боле менее стабильно. ((((
Установка Windows через PXE
Очень часто возникает необходимость устанавливать операционную систему Windows, в рамках одного компьютера можно воспользоваться диском, флешкой, я предлагаю способ устанавливать эту операционную систему через локальную сеть, в этом нам поможет сервер сетевой загрузки, рассмотренный в статьях тут и тут
Все нижеописанные скрипты я поместил в репозиторий git
План работ
1. Устанавливаем среду сборки образов предустановки WinPE
2. Выполняем сборку wim образа
3. Создаем конфигурацию загрузки на сервере загрузки
WinPE через PXE
Для того чтобы поставить Windows нам потребуется система предустановки Windows, которая называется WinPE.
Ее можно сделать скачав пакет ADK с сайта Microsoft
После установки можно приступать к сборке образа
Сборка образа WinPE
Я создал несколько скриптов позволяющих автоматически собирать образы, заточенные под установку ОС Windows.
В Windows7 мне пришлось отключать проверку цифровой подписи драйверов, так как команда dism вываливалась с ошибками, это делается при старте системы, клавишей F8 вызываем меню загрузки и выбираем «отключение обязательной цифровой подписи драйверов».
Автоматизация процесса создания образа WinPE
Скрипты описанные ниже представлены в порядке их запуска и имеют достаточно подробное описание, запускаются они как в автоматическом режиме с помощью setup.bat, так и по отдельности, необходимые переменные помещаю в config.bat
config.bat
В этом скрипте устанавливаем рабочую дерикторию и архитектуру создаваемого образа
arch могут быть «x86″,»amd64»
generate.bat
Создание рабочей дериктории winpe, в процессе работы в каталоге который мы указали появится подкаталог с названием архитектуры.
dp0 config.bat
copype %arch% %workdirectory%\%arch%
unpack.bat
Скрипт распаковки созданного wim образа, распаковывает в каталог mount
dp0 \config.bat
dism /Mount-Image /Imagefile:»%workdirectory%\%arch%\media\sources\boot.wim» /index:1 /MountDir:»%workdirectory%\%arch%\mount»
import_start.bat
Помещаем скрипт автозагрузки в системный каталог, в качестве скрипта автозагрузки выступает startnet.cmd, который можно отыскать в примонтированном образе /mount/windows/system32
dp0 config.bat
xcopy /Y %
dp0 startnet. cmd %workdirectory%\%arch% \mount\windows\system32\
driver.bat
Импортируем рекурсивно драйвера на сетевые карты, драйвера должны быть сложены возле каталога со скриптом, команда dism выбирает inf файлы и по ним ищет остальные модули драйвера.
dp0 config.bat
dism /image:%workdirectory%\%arch%\mount /add-driver /driver:»%workdirectory%\drivers» /recurse /forceunsigned
extractBootPXE.bat
Копируем из wim образа файлы для загрузки через PXE, в самом wim образе находятся необходимые модули для загрузки через PXE. Кроме того у меня не получилось загрузиться по сети с pxeboot.n12, но достаточно было ео переименовать заменив n12 на 0 как загрузка прошла без ошибок.
dp0 config.bat
mkdir %workdirectory%\%arch% \PXE
echo f | xcopy /Y %workdirectory%\%arch% \mount\windows\boot\pxe\pxeboot.n12 %workdirectory%\%arch% \PXE\pxeboot.0
xcopy /Y %workdirectory%\%arch% \mount\windows\boot\pxe\bootmgr.exe %workdirectory%\%arch% \PXE
mkdir %workdirectory%\%arch% \PXE\Boot
xcopy /Y %workdirectory%\%arch% \media\Boot\boot.sdi %workdirectory%\%arch% \PXE\Boot
pack.bat
Упаковываем в образ рабочую деррикторию, следует отметить что необходимо из нее выйти (она находится в каталоге mount), иначе образ не отмонтируется.
dp0 \config.bat
dism /Unmount-Image /MountDir:»%workdirectory%\%arch%\mount» /commit
export.bat
Выгружаем из wim образа только наш слой, так как все наши изменения хранятся в образе в виде наслоений и образ начинает понемногу расти, тем самым увеличивая время загрузки.
dp0 \config.bat
Dism /Export-Image /SourceImageFile:%workdirectory%\%arch%\media\sources\boot.wim /SourceIndex:1 /DestinationImageFile:%workdirectory%\%arch%\PXE\winpe%arch%.wim
Если необходимо откатить изменения которые мы делали после распаковки, то запускаем скрипт pack_dscard.bat
pack_dscard.bat
dp0 \config.bat
call %
dp0 var.bat
dism /Unmount-Image /MountDir:»%workdirectory%\%arch%\mount» /discard
setup.bat
Автоматизируем процесс создания wim образа, запустив все созданные скрипты по очереди.
dp0 \config.bat
call %
dp0 \generate.bat
call %
dp0 \unpack.bat
call %
dp0 \import_start.bat
call %
dp0 \driver.bat
call %
dp0 \extractBootPXE.bat
call %
Еще понадобится файл с описанием загрузки BCD, он не заработал у меня из среды средств развертывания, поэтому запускаю средствами cmd с повышенными правами
createBCD.bat
dp0 config.bat
bcdedit -createstore %workdirectory%\%arch% \PXE\Boot\BCD
bcdedit -store %workdirectory%\%arch% \PXE\Boot\BCD -create < ramdiskoptions >/d «Ramdisk options»
bcdedit -store %workdirectory%\%arch% \PXE\Boot\BCD -set < ramdiskoptions >ramdisksdidevice boot
bcdedit -store %workdirectory%\%arch% \PXE\Boot\BCD -set < ramdiskoptions >ramdisksdipath \Boot\boot.sdi
for /F «tokens=2» %%i in ( ‘bcdedit -store %workdirectory%\%arch% \PXE\Boot\BCD -create /d «MyWinPE Boot Image» /application osloader’ ) do set guid= %%i
bcdedit -store %workdirectory%\%arch% \PXE\Boot\BCD -set %guid% systemroot \Windows
bcdedit -store %workdirectory%\%arch% \PXE\Boot\BCD -set %guid% detecthal Yes
bcdedit -store %workdirectory%\%arch% \PXE\Boot\BCD -set %guid% winpe Yes
bcdedit -store %workdirectory%\%arch% \PXE\Boot\BCD -set %guid% osdevice ramdisk= [ boot ] \winpe %arch% .wim, < ramdiskoptions >
bcdedit -store %workdirectory%\%arch% \PXE\Boot\BCD -set %guid% device ramdisk= [ boot ] \winpe %arch% .wim, < ramdiskoptions >
bcdedit -store %workdirectory%\%arch% \PXE\Boot\BCD -create < bootmgr >/d «Windows PE BootManager»
bcdedit -store %workdirectory%\%arch% \PXE\Boot\BCD -set < bootmgr >timeout 2
bcdedit -store %workdirectory%\%arch% \PXE\Boot\BCD -set < bootmgr >displayorder %guid%
В результате работы скриптов у получается следующая структура каталогов:
Настройка сервера загрузки
Копируем содержимое каталога PXE в корень tftp каталога сервера загрузки
Так как windows использует другой разделитель для своих путей, то нам необходимо сделать карту символов для tftp сервера, для этого в файле конфигурации /etc/default/tftp-hpa вносим изменения и указываем путь к файлу с картой:
Сервис tftpd-hpa
TFTP_USERNAME= «nobody»
TFTP_DIRECTORY= «/srv/template»
TFTP_ADDRESS= «0.0.0.0:69»
TFTP_OPTIONS= «—secure -v -c -m /srv/template/tftpd.remap»
Создаем файл tftpd.remap с таким содержимым:
Это правило будет заменять все обратные слешы на прямые, затем помещаем этот файл также в корень tftp сервера (чтобы нам легко было изменить в случае чего)
Перезапускаем tftp-hpa сервер
Настройка сервиса общих каталогов Samba
Для установки нам еще понадобится сервер samba,в debian и убунту он ставится командой
в конфигурационном файле /etc/samba/smb.conf добавляем секцию описывающую наш общий каталог:
Образ Window 7 и установовчный скрипт setup.bat
Теперь распаковываем образ с win7 и помещаем каталог sources в публичный каталог samba.
Создаем скрипт start.bat, в котором запускаем програму setup.exe из распакованного sources
Последнее что нам осталось — это прописать в меню загрузки пункт с winpe:
В итоге все получилось
Скрипты в GitHub
После этого у нас загрузившись через PXE начнется загрузка WinPE:
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.
Установка Windows 7 через PXE boot c *nix сервера
Хочу поделиться с вами своим опытом по установке Windows 7 с сети (PXE boot на Ubuntu server).
Так как я не нашел удачного решения в интернете, решил поделится опытом.
Если интересно прошу под кат.
Эта статья является дополнением к ранее опубликованной статье на хабре.
На днях наткнулся на интересную статью, Где очень хорошо рассказывается об установке Windows 7 с сети, но с платформы на базе Windows. А так как у меня есть сервер на Ubuntu, захотелось прикрутить его туда, но все оказалось не так просто.
Создание PXE образа
Итак, начнем с создания PXE образа. Для этого нам потребуется Набор автоматической установки Windows® (AIK) для Windows®7.
Работает на платформе Windows 7 и Windows Server 2008 (R2).
После установки открываем в пуске: Командная строка средств развертывания с правами Администратора, и начинаем собирать образ.
copype.cmd x86 d:\winpe
imagex /mountrw winpe.wim 1 mount
Теперь, для автоматической установки, в примонтированной папке d:\winpe редактируем файл Windows\system32\startnet.cmd:
wpeinit
net use y: \\192.168.0.1\seven /user:seven seven
if exists y:\sources\setup.exe (
y:\sources\setup.exe
)
В строке монтирования, можно задать свои параметры, смотря как будете настраивать Samba, у меня к примеру она расшарена без авторизации с правами read only и параметр /user:seven seven не обязательно.
imagex.exe /unmount /commit mount
Теперь извлечем ядро и необходимые файлы для загрузки образа:
imagex /mount d:\winpe\winpe.wim 1 d:\winpe\mount
xcopy /ey d:\winpe\mount\windows\boot\pxe d:\tftp
xcopy /iy d:\winpe\mount\windows\boot\fonts d:\tftp\Boot\fonts
copy /y d:\winpe\ISO\boot\boot.sdi d:\tftp\Boot
imagex.exe /unmount d:\winpe\mount
#B Копируем сам образ в папку Boot
copy /y d:\winpe\winpe.wim d:\tftp\Boot
Прошу обратить внимание на то что папка Boot с большой буквы(Важно).
Теперь создаем «Скрипт» d:\winpe\createbcd.cmd
bcdedit -createstore %1\BCD
bcdedit -store %1\BCD -create
bcdedit -store %1\BCD -set
bcdedit -store %1\BCD -set
for /F «tokens=2» %%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,
bcdedit -store %1\BCD -set %guid% device ramdisk=[boot]\Boot\winpe.wim,
bcdedit -store %1\BCD -create
bcdedit -store %1\BCD -set
bcdedit -store %1\BCD -set
И запускаем его:
createbcd.cmd d:\tftp\boot
Основная проблема это бэкслэши, Регистр и их Ремап, тут я не стал их переделывать, а просто создал ремап на сервере, можете сами поиграться, но об это позже.
Теперь у нас готов PXE набор для установки Windows 7 с сети.
Также вы можете скачать мой образ тут или тут
Настройка DHCP – Сервера:
Конфигурационный файл /etc/dhcp/dhcpd.conf
ddns-update-style none;
option domain-name «xxxxxxxx.xx»;
option domain-name-servers 8.8.8.8;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.0.0 netmask 255.255.255.0 <
range 192.168.0.5 192.168.0.100;
filename = «pxeboot.n12»;
>
С такой конфигурацией при ланбуте сразу пойдет установка windows. Если-же вы будете использовать эту статью как дополнение к этой статье, тогда в файле /etc/dhcp/dhcpd.conf ничего не меняем, только (Важно!) переименовываем файл pxeboot.n12 в pxeboot.0 (иначе не заработает) и добавляем в меню /var/lib/tftpboot/pxelinux.cfg/default
label Install Windows7
kernel /pxeboot.0
Установка и настройка TFTP Сервера:
sudo apt-get install tftpd-hpa
sudo nano /etc/default/tftpd-hpa
У меня конфиг такой:
TFTP_USERNAME=»tftp»
TFTP_DIRECTORY=»/var/lib/tftpboot»
TFTP_ADDRESS=»0.0.0.0:69″
TFTP_OPTIONS=»—secure -m /var/lib/tftpboot/tftp-remap -v»
Добавляем только параметры:
-m /var/lib/tftpboot/tftp-remap (файл ремапа) и параметр -v чтобы в /var/log/syslog можно было отслеживать запросы.
Копируем содержимое папки D:\tftp в /var/lib/tftpboot/seven/.
Теперь создаем файл ремапа:
touch /var/lib/tftpboot/tftp-remap
nano /var/lib/tftpboot/tftp-remap
У меня он выглядит так:
r bootmgr.exe /seven/bootmgr.exe
r abortpxe.com /seven/abortpxe.com
r hdlscom1.com /seven/hdlscom1.com
r hdlscom1.n12 /seven/hdlscom1.n12
r hdlscom2.com /seven/hdlscom2.com
r hdlscom2.n12 /seven/hdlscom2.n12
r pxeboot.com /seven/pxeboot.com
r pxeboot.n12 /seven/pxeboot.n12
r WdsConfig.inf /seven/WdsConfig.inf
r wdsnbp.com /seven/wdsnbp.com
r \\Boot\\BCD seven/Boot/BCD
r \\boot\\boot.sdi seven/Boot/boot.sdi
r \\Boot\\winpe.wim seven/Boot/winpe.wim
Настройка samba
Есть 2 варианта:
1)Скопировать папку sources с установочного диска в /var/seven (Необязательно в /var)
2)Примонтировать образ
mkdir /var/seven
sudo mount –o loop win7.iso /var/seven/
И зашариваем саму папку /var/seven в файле /etc/samba/smb.conf
path = /srv/tftp/seven
browseable = yes
read only = yes
guest ok = yes
Перезагружаем службы:
sudo /etc/init.d/dhcp3-server restart
sudo /etc/init.d/tftpd-hpa restart
sudo /etc/init.d/smbd restart
Готово, можем устанавливать Windows 7 с сети.
Если возникнут какието проблемы, можно их увидеть в:
sudo tail –f /var/log/syslog
Спасибо за внимание!
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.