Ошибка загрузки моего BCD при попытке загрузки PXE в Windows PE
Я пытаюсь настроить сервер Ubuntu с pxelinux, чтобы я мог загрузить Windows PE с помощью PXE. На клиентском компьютере я вижу, что сам pxelinux работает, но следующий экран выглядит так:
Вот что я сделал:
Шаг 1: Установлен tftpd-hpa
а также dhcp3
на сервере. Сервер представляет собой свежую виртуальную машину с сервером ubuntu x86. Статический 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 - это guid, возвращенный из предыдущей команды.
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, но безуспешно. Поиск этой ошибки, к сожалению, только дал мне не относящуюся к делу информацию (например, как исправить эту проблему в существующих установках Windows).
1 ответ
Это оказалось довольно смущающей ошибкой.
внутри /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/tftp-remap.conf"