Назад | Перейти на главную страницу

Ошибка загрузки моего BCD при попытке PXE-загрузки в Windows PE

Я пытаюсь настроить сервер 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"