Hatena::Grouplinux2

Going My Linux Way このページをアンテナに追加 RSSフィード

2012年02月03日(金)

VirtualBox の内部ネットワークで PXE サーバ構築

| 18:05 |  VirtualBox の内部ネットワークで PXE サーバ構築 - Going My Linux Way を含むブックマーク はてなブックマーク -  VirtualBox の内部ネットワークで PXE サーバ構築 - Going My Linux Way  VirtualBox の内部ネットワークで PXE サーバ構築 - Going My Linux Way のブックマークコメント

VirtualBox の内部ネットワークを構築しました。(手順は「 VirtualBox で 2つのゲストOSを内部ネットワークで接続 - Going My Linux Way - りなっくすいろいろ」参照)

VirtualBox の仮想ネットワークアダプタには PXE 対応 ROM が仕込まれているので、内部ネットワークPXE サーバを構築してみたいと思います。

PXEネットワークブートの規格の一つでインテル社が提唱しているものです。

以下のような環境を構築します。ゲストOS#1 が PXE サーバ、新規仮想マシンPXE クライアントです。(ゲストOS#2 は出番なし)

f:id:lnznt:20120203142714j:image

おおまかな流れと構成要素は以下のようになります。

f:id:lnznt:20120203142713j:image

(注意: 以降の手順で DHCP サーバを立てますが、DHCP サーバ一つのネットワークセグメントに複数あってはいけません。くれぐれも注意してください)

PXEサーバの構成要素
要素使用するソフトウェア
DHCPサーバISC DHCP server
TFTPサーバHPA's TFTP server
NFSサーバNFS Kernel server
NBP(Network Bootstrap Program)SYSLINUX
OS(カーネルやその他)Ubuntu Linux 11.10 desktop (amd64) ISO イメージ

UbuntuISO イメージ(ubuntu-11.10-desktop-amd64.iso)はUbuntu本家サイトのダウンロードページからダウンロードできます。

PXEクライアントの構成要素
要素使用するソフトウェア
PXE対応ROM仮想マシンネットワークアダプタ(ただし、PCnet* タイプのみ)に内蔵

PXE サーバの構築

ゲストOS#1 を PXE サーバにします。

仮想マシンの設定

VirtualBox でゲストOS#1 の仮想マシンの設定を行います。(設定方法は以前の日記「 VirtualBox に Ubuntu 11.10 (amd64) をインストール(その1) - Going My Linux Way - りなっくすいろいろ」を参照)

ソフトウェアインストール

ゲストOS#1 を起動して、ソフトウェアのパッケージをインストールします。

$ sudo apt-get install isc-dhcp-server   # DHCP サーバ
$ sudo apt-get install tftpd-hpa         # TFTP サーバ
$ sudo apt-get install syslinux          # NBP(多分インストール済み)
$ sudo apt-get install nfs-kernel-server # NFSサーバ

# 以下はテストのため。インストールしなくともよい
$ sudo apt-get install isc-dhcp-client   # DHCPクライアント(多分インストール済み)
$ sudo apt-get install tftp-hpa          # TFTP クライアント
$ sudo apt-get install nfs-common        # NFSクライアント(インストール済みかも)
設定

編集/作成/コピーを行うファイル、ディレクトリは以下です。

/
 |--- etc/
 |     |--- network/
 |     |     |--- interfaces .......... (1)
 |     |--- dhcp/
 |     |     |--- dhcpd.conf .......... (2)
 |     |--- exports ................... (5)
 |--- var/
       |--- lib/
             |--- tftpboot/
                   |--- images/
                   |     |--- ubuntu-11.10-amd64/ ... (4)
                   |--- pxelinux.cfg/
                   |     |--- default ............... (6)
                   |--- pxelinux.0 .................. (3)

(1) bootnet 側の固定 IP の設定

/etc/network/interfaces に以下を追加

auto eth2
iface eth2 inet static
    address 192.168.11.11
    netmask 255.255.255.0

(2) DHCP の設定

/etc/dhcp/dhcpd.conf の以下の行をコメントアウト

(修正前)
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

(修正後)
#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;

同じく /etc/dhcp/dhcpd.conf に以下の行を追加

subnet 192.168.11.0 netmask 255.255.255.0 {
    range 192.168.11.91 192.168.11.99;

    filename "pxelinux.0";
}

option routers は不要です。(内部ネットワークゲートウェイがないので)

next-server も不要です。(TFTP サーバDHCPサーバ と同一 IP なので省略)

(3) NBP の tftp ディレクトリへのコピー

$ sudo cp -p /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/

(4) Ubuntu ISO イメージのマウントポイント作成 (マウントは再起動後)

$ sudo mkdir -p /var/lib/tftpboot/images/ubuntu-11.10-amd64/

(5) NFS エクスポートの設定

/etc/exports に以下の行を追加します。

/var/lib/tftpboot/images/ubuntu-11.10-amd64 *(ro,all_squash,no_subtree_check,crossmnt)

(6) SYSLINUX のメニュー設定

/var/lib/tftpboot/pxelinux.cfg/default を作成します。

$ sudo mkdir /var/lib/tftpboot/pxelinux.cfg/
$ sudo vi /var/lib/tftpboot/pxelinux.cfg/default
(以下の内容を記述して保存)
default ubuntu

label ubuntu
  kernel images/ubuntu-11.10-amd64/casper/vmlinuz
  append boot=casper netboot=nfs nfsroot=192.168.11.11:/var/lib/tftpboot/images/ubuntu-11.10-amd64 initrd=images/ubuntu-11.10-amd64/casper/initrd.lz

(1 行目の default をコメントアウト('#' がコメント開始文字)するとブート時に「boot:」というプロンプトが出ます。ラベル(上では 'ubuntu')の入力でスタンザ(上では 1つしかない)を選択できます)

以上が設定できたら、システムを再起動します。

ISOイメージマウント

再起動したら、UbuntuISO イメージをマウントします。

$ sudo mount -o ro /dev/sr0 /var/lib/tftpboot/images/ubuntu-11.10-amd64

(ISO イメージの仮想CD は「IDE プライマリマスター」(= /dev/sr0) に接続されていると仮定しています。df コマンドで確認してください)

PXE サーバはこのまま起動したままにします。

----

ちなみに、ネットワーク設定とサーバの起動を確認する場合は以下のようにします。

$ ifconfig eth2    # ネットワークインターフェイスの固定 IP の確認

$ netstat -tua | grep -w bootps   # DHCP サーバの起動の確認

$ netstat -tua | grep -w tftp     # TFTP サーバの起動の確認

$ netstat -tua | grep -w nfs      # NFS サーバの起動の確認

service コマンドや update-rc.d コマンドでサーバのサービスを指定する場合は以下の>名前になります。

種類インストールしたサーバサービス名
DHCPISC DHCP serverisc-dhcp-server
TFTPHPA's TFTP servertftpd-hpa
NFSNFS Kernel servernfs-kernel-server
(例: DHCPサーバの再起動)
$ sudo service isc-dhcp-server restart

PXE クライアントの構築

仮想マシンの新規作成

仮想マシンウィザードに従って適当に作成してください。

作成した新規仮想マシンに以下の設定を行ってください。

ネットワークアダプタは一つだけ有効にしてください。(Ubuntu Live CD の起動時に IP が取得できない NIC があると処理が止まってしまいます)

システムの起動順序を設定したところ

f:id:lnznt:20120203183609j:image

ネットワークアダプタを設定したところ (「アダプタタイプ(T)」は「高度(D)」をクリックすると表示されます)

f:id:lnznt:20120203183610j:image

PXE ブート

以上の設定ができたら、うまくいくことを念じて、新規仮想マシンを起動します。

PXE ブートが始まると以下のようなメッセージが表示されます。

f:id:lnznt:20120203183823j:image

Ununtu Live が起動されたら PXE ブート成功です。

f:id:lnznt:20120203183824j:image

Ubuntu インストール

折角なのでこのまま Ubuntuインストールします。

基本的な手順は以前やったことと同じなので参考にしてください。(以前の日記「VirtualBox に Ubuntu 11.10 (amd64) をインストール(その2) - Going My Linux Way - りなっくすいろいろ」)

「Install Ubuntu 11.10」のアイコンをダブルクリックしてインストーラを起動します。

ようこそ画面が起動したら、左側リストから「日本語」を選択して「続ける」ボタンを押下します。

f:id:lnznt:20120203184506j:image

次の画面で「インターネットに接続されていること」にバツがついてます(「インストール中にアップデートダウンロードする」はチェックできません)が、構わずインストールを続行してください。

f:id:lnznt:20120203184507j:image

インストールが終了して以下のダイアログが出ても再起動しないでください。(そのまま再起動すると、また PXE ブートしてしまいます)

「試用を続ける」ボタンを押下してダイアログを閉じ、それからシャットダウンしてください。

f:id:lnznt:20120203184505j:image

仮想マシンの設定を変更します。

仮想マシンを起動します。

デスクトップが英語環境ですが気にせずログインします。

以前の日記(VirtualBox に Ubuntu 11.10 (amd64) をインストール(その3) - Going My Linux Way - りなっくすいろいろ)を参考に、以下の処理を行ってください。

再起動後にデスクトップが日本語化されています。

----

以上です。

お疲れ様でした。

----

参考URL

トラックバック - http://linux2.g.hatena.ne.jp/lnznt/20120203