Я пытаюсь настроить сервер ubuntu с помощью pxelinux, чтобы загрузить Windows PE с помощью PXE. На клиентской машине я вижу, что сам pxelinux работает, но следующий экран выглядит так:
Вот что я сделал:
Шаг 1: установлено tftpd-hpa
и dhcp3
на сервере. Сервер представляет собой свежую виртуальную машину x86 server ubuntu. Статический IP-адрес 192.168.26.0
. Сервер Samba установлен.
dhcpd.conf
содержит
subnet 192.168.26.0 netmask 255.255.255.0 {
range 192.168.26.10 192.168.26.40;
filename "pxelinux.0";
next-server 192.168.26.0;
}
Я убедился, что TFTP и DHCP работают.
Шаг 2: скачано pxelinux.0
из репозиторий ubuntu. Поместите его в каталог tftpboot и создайте pxelinux.cfg/default
с этим содержанием:
DEFAULT winpe
PROMPT 0
TIMEOUT 300
MENU TITLE PXE
LABEL winpe
MENU LABEL Windows PE
KERNEL Boot/pxeboot.0
Я пробовал использовать Wdsnbp.0 (-> Wdsnbp.com) вместо pxeboot.0 (-> pxeboot.com) без разницы.
Позже я хочу сделать настоящее меню с опциями ubuntu.
Шаг 3. Загрузите и установите Пакет автоматической установки Windows для Windows 7 и установил его на свежую Windows 7 x64 vm.
Я выполнил эти инструкции в WAIK.chm
файл, который поставляется вместе с загрузкой. Укороченная версия:
Копирование файлов и прочего:
copype.cmd x86 c:\winpe_x86
Я хочу предоставить образ winpe x86.
imagex /mountrw C:\winre_x86\winpe.wim 1 C:\winpe_x86\mount
net use y: \\192.168.26.0\TFTPRoot
y:
md Boot
cd \temp\Windows\Boot\PXE
copy c:\winpe_x86\mount\Windows\Boot\PXE\*.* y:\Boot
copy c:\Program Files\WAIK\Tools\PETools\x86\boot\boot.sdi y:\Boot
Imagex /unmount C:\winpe_x86\mount
copy c:\winpe_x86\winpe.wim y:\Boot\boot.wim
Использование BCDEdit:
Bcdedit -createstore c:\BCD
Bcdedit -store c:\BCD -create {ramdiskoptions} /d “Ramdisk options”
Bcdedit -store c:\BCD -set {ramdiskoptions} ramdisksdidevice boot
Bcdedit -store c:\BCD -set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
Bcdedit -store c:\BCD -create /d “MyWinPE Boot Image” /application osloader
guid1 - это идентификатор, возвращенный предыдущей командой.
Bcdedit -store c:\BCD -set {guid1} systemroot \Windows
Bcdedit -store c:\BCD -set {guid1} detecthal Yes
Bcdedit -store c:\BCD -set {guid1} winpe Yes
Bcdedit -store c:\BCD -set {guid1} osdevice ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
Bcdedit -store c:\BCD -set {guid1} device ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
Bcdedit -store c:\BCD -create {bootmgr} /d “Windows BootManager” /inherit {dbgsettings}
Bcdedit -store c:\BCD -set {bootmgr} timeout 30
Bcdedit -store c:\BCD -displayorder {guid1}
copy c:\BCD \\server\TFTPRoot\Boot
BCDEdit сообщал о каждой операции как об успешной. В BCD
файл пишется с заглавной буквы.
Шаг 4: Я создал несколько символических ссылок (совет от этот немецкий источник):
ln -s Boot boot
ln -s Boot/bootmgr.exe bootmgr.exe
ln -s Boot/pxeboot.n12 Boot/pxeboot.0
К сожалению, этот источник относится к Windows Vista и Windows PE 2.0, тогда как я использую Windows 7 и Windows PE 3.0, но я полагаю, что эти ссылки не могут повредить. С помощью pxeboot.com
вместо того pxeboot.n12
не решает проблему. Единственная разница в том, что для загрузки вам нужно нажать F12. Признак того, что система работает хотя бы на базовом уровне (т.е. может хотя бы загружать pxeboot.n12
и bootmgr.exe
).
Я также добавил это правило переназначения в /etc/tftp_remap.conf
чтобы избежать проблем с разделителями путей:
rg \\ /
У меня нет идей. Я воссоздавал BCD несколько раз. Я также пробовал использовать BCD, который вы можете найти в папках WAIK, безуспешно. К сожалению, поиск в Google этой ошибки дал мне не относящуюся к делу информацию (то есть, как исправить эту проблему с помощью существующих установок Windows).
Это оказалось довольно досадной ошибкой.
Внутри /etc/default/tftp.conf
, Я использовал неправильный синтаксис, чтобы указать на /etc/tft_remap.conf
файл. В верный содержимое файла следующее:
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure -l -v -m /etc/tftpd-remap.conf"