web-dev-qa-db-ja.com

Windows PEをPXEブートしようとしたときに、BCDの読み込み中にエラーが発生しました

Pxelinuxでubuntuサーバーをセットアップしようとしているので、PXEを使用してWindowsPEを起動できます。クライアントマシンでは、pxelinux自体が機能していることがわかりますが、次の画面は次のとおりです。

error


これが私がしたことです:

ステップ1:サーバーにtftpd-hpadhcp3をインストールしました。サーバーは新しい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.0buntuリポジトリ からダウンロードしました。それをtftpbootディレクトリに置き、次の内容でpxelinux.cfg/defaultを作成しました。

DEFAULT winpe

Prompt 0
TIMEOUT 300

MENU TITLE PXE

LABEL winpe
MENU LABEL Windows PE
    KERNEL Boot/pxeboot.0

Pxeboot.0(-> pxeboot.com)の代わりにWdsnbp.0(-> Wdsnbp.com)を使用してみましたが、違いはありませんでした。

後でubuntuオプションを使って本物のメニューを作りたいです。

ステップ3: Windows 7用のWindows自動インストールキット をダウンロードしてインストールし、新しいWindows 7 x64vmにインストールしました。

ダウンロードに付属のWAIK.chmファイルにあるこれらの手順に従いました。短縮版:

ファイルなどのコピー:

copype.cmd x86 c:\winpe_x86

X86winpeイメージを提供したいと思います。

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

残念ながら、そのソースはWindowsVistaとWindowsPE 2.0を扱っていますが、私はWindows7とWindowsPE 3.0を使用していますが、これらのリンクは害を及ぼすことはないと思います。 pxeboot.comの代わりにpxeboot.n12を使用しても、問題は解決しません。唯一の違いは、起動するにはF12を押す必要があることです。システムが少なくとも基本レベルで機能していることを示します(つまり、少なくともpxeboot.n12bootmgr.exeをロードできます)。

また、パスセパレータの問題を回避するために、このremap-ruleを/etc/tftp_remap.confに追加しました。

rg \\ /

私は考えが足りません。 BCDを数回再作成しました。また、WAIKフォルダーにあるBCDを使用してみましたが、成功しませんでした。残念ながら、このエラーをグーグルで検索しても、関係のない情報しか得られませんでした(つまり、既存のWindowsインストールでこの問題を修復する方法)。

3
dialer

それはかなり恥ずかしい間違いであることが判明しました。

/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"

2
dialer