web-dev-qa-db-ja.com

VirtualboxでのPXEブート

Linuxゲストがいて、それが私のサーバーです。また、ディスクを持たないクライアントとして別のゲストを作成しました。

知りたいのですが、どのネットワークタイプとアダプターが正しいですか? NATまたは内部ネットワーク?AMDまたはIntelチップ?

マニュアルによると、

PXE booting is now supported in NAT mode. The NAT DHCP server provides a boot 
file name of the form vmname.pxe if the directory TFTP exists in the directory 
where the user's VirtualBox.xml file is kept. It is the responsibility of the 
user to provide vmname.pxe

Vmname.pxeの内容は何ですか?空のファイルですか?

VirtualboxはWindows 7で実行されており、サーバーとして1つのLinux(redhatおよびcentos 6に類似した科学的Linux 6.3)をインストールし、クライアントとして別のディスクレスLinuxをインストールしました。

サーバーに、tftp関連のファイルをインストールしました。

# ls /var/lib/tftpboot/ -R
/var/lib/tftpboot/:
menu.c32  pxelinux.0  pxelinux.cfg  sl6

/var/lib/tftpboot/pxelinux.cfg:
default

/var/lib/tftpboot/sl6:
initrd.img  vmlinuz


# cat /var/lib/tftpboot/pxelinux.cfg/default 
timeout 100
default menu.c32
menu title ########## PXE Boot Menu ##########
label 1
   menu label ^1) Install Scientific Linux 6
   kernel sl6/vmlinuz
   append initrd=sl6/initrd.img method=http://10.0.2.51/sl6 devfs=nomount
label 2
  menu label ^2) Boot from local drive
  localboot 
3
mahmood

ああ、マニュアルの「NATを使用したPXEブート」の項では、それは明確にされていません。

"6.3.2。NATを使用したPXEブートは、NATモードでサポートされるようになりました。NAT DHCPサーバーはブートを提供しますvmname.pxe形式のファイル名ユーザーのVirtualBox.xmlファイルが保存されているディレクトリにディレクトリTFTPが存在する場合。vmname.pxeを提供するのはユーザーの責任です。

-ここでは、マニュアルでブートファイルの提供者を教えてください。NAT DHCPサーバー。
さて、質問があります:NAT DHCPサーバーはどこですか?

-ホストマシンでは、VirtualBoxソフトウェアに統合されています。
(6.3。ネットワークアドレス変換(NAT):仮想マシンは、VirtualBoxに統合されたDHCPサーバーからプライベートネットワーク上のネットワークアドレスと構成を受け取ります。)

では、VirtualBoxはどこで構成ファイルを検索しますか?もちろんホストマシン上で。
つまり、virtualboxはホストマシン上の「vmname.pxe」を検索しようとします。科学的なLinuxサーバー上ではありません。

また、マニュアルには、VirtualBox.xmlのほかに「tftp」ディレクトリを配置する必要があると記載されています。

Windows 7では、VirtualBox.xmlはC:\ Users\.VirtualBox \にあります。
(VirtualBoxバージョン5.1.14、マニュアルでは、デフォルトの構成場所が4.0以降に変更されるとは記載されていません)

このセクションを読んだとき、DebianシステムをPXEブートインストールしようとしていました。したがって、「vmname.pxe」はファイルpxelinux.0であり、名前が変更されていると思いました。

何度か試しましたが、「vmname.pxe」は「<vmname>.pxe"、 どこ <vmname>は仮想マシンの名前です。

ついに、NAT=での私の成功したPXEブートはこれです:
ホスト(私のホストもWindows 7です)では、ディレクトリ構造は次のとおりです。

%USERPROFILE% (mostly it is C:\Users\<username>\)
 |-.VirtualBox
    |-VirtualBox.xml
    |-TFTP
    |  |-pxelinux.cfg
    |  |  |-default-> ..\debian-installer\AMD64\boot-screens\syslinux.cfg
    |  |-DebianSid.pxe->pxelinux.0 (DebianSid is my virtual machine's name)
    |  |-pxelinux.0
    |  |-ldlinux.c32
    |  |-version.info
    |  |-debian-installer\ 
    |-other files

VirtualBoxゲストで、ネットワーク設定は「NAT」モード、ネットワークカードは「Intel PRO/1000MTデスクトップ(82640EM)」です

VirtualBoxのバージョンは5.1.14です。

Tftp-hpaをインストールする必要も、2番目のインターフェースも「Intelカードを使用しない」も不要で、組み込みのPXE機能を使用しています。

ディスクレスPXEブートも同様です。

したがって、問題は、マニュアルがまったく混乱していることです。NAT VirtualboxでのPXEブートは、実際には非常に簡単です。要点は、PXEサーバーがホスト仮想ボックスソフトウェアであることです。

Tftpディレクトリ構造に関する更新:(コメント内の@codeshotによる質問)tftpブートファイルは(debian sidなど)からダウンロードされます:https://<debian-mirror>/debian/dists/sid/main/installer-<Arch>/current/images/netboot/netboot.tar.gz

(sidを使用していない場合は、変更してください)。 Ubuntuも同様です。

xvf netboot.tar.gzをtarし、ディレクトリの名前を「tftp」に変更し、VirtualBox demondsとして適切な場所に移動します。

これが機能しない場合は、Cygwinを使用してソフトリンクをハードリンクに手動で変更するか、単にファイルをコピーして名前を変更します。

5
Cu635

更新:

明確にした後、VirtualBoxの組み込みPXE機能をまったく使用しないことは、進むべき道のようです。代わりに、セカンダリNICを「ホストのみ」または「内部」ネットワークでサーバーとクライアントに割り当て、DHCPサーバーをバインドして2番目のインターフェースでリッスンします。2番目のカードにIntelカードを使用しないでくださいインターフェース: 内部ネットワークモードでVirtualboxゲストをPXEブートしますか?

VirtualBoxへの回答NATおよびPXE:

vmname.pxeには、コードVMのダウンロード後に実行されます。いわゆるNBP(Network Bootstrap Program))が含まれています

PXEの詳細については Wikipedia を参照してください。

PXELinuxを使用した例を引用します。

  1. tftp-hpaをインストールします。 (デーモンは必要ありません。プログラムだけが必要です)

  2. pxeディレクトリのルートを設定します。

    mkdir $HOME/.VirtualBox/TFTP
    mkdir $HOME/.VirtualBox/TFTP/pxelinux.cfg
    
  3. pxelinux.0$HOME/.VirtualBox/TFTPにコピーし、pxelinux.0という名前の<guest-vmname>.pxeへのシンボリックリンクを作成します。

  4. カーネルとおそらくinitrdを$HOME/.VirtualBox/TFTPにコピーします

  5. 編集$HOME/.VirtualBox/TFTP/pxelinux.cfg/default、サンプル:

    LABEL linux
    KERNEL vmlinuz
    APPEND root=/dev/sdxY
    

ソース: http://thegnar.org/sync/?p=68

3
fuero