Hatena::Grouplinux2

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

2012年02月03日(金)

GParted Live を PXEブート

| 20:58 |  GParted Live を PXEブート - Going My Linux Way を含むブックマーク はてなブックマーク -  GParted Live を PXEブート - Going My Linux Way  GParted Live を PXEブート - Going My Linux Way のブックマークコメント

GParted は パーティションの追加/削除/リサイズなどができるツールです。

Ubuntu では以下のようにしてインストールできます。

$ sudo apt-get install gparted

起動は以下のようにします。

$ sudo gparted &

f:id:lnznt:20120203210347j:image

----

GParted Live CD/USB/HD/PXE Bootable Image という Live CD イメージがあります。

CD ブートすると Debian らしき Linux 上で GParted が起動します。

この GParted Live CD を VirtualBox 環境で PXE ブートさせようと思います。

VirtualBox 環境は前の日記( VirtualBox の内部ネットワークで PXE サーバ構築 - Going My Linux Way - りなっくすいろいろ)で作成した環境を使います。

Live CD イメージは GParted サイト(http://gparted.sourceforge.net/download.php)からダウンロードできます。

  • gparted-live-0.11.0-10.iso (stable release)

構築

現在 Virutal Box 環境はこうなってます。

f:id:lnznt:20120203212731j:image

192.168.11.0/24(仮想:bootnet)が PXE ブート用ネットワークです。

ゲストOS#1 は PXE サーバになってますので、ここに設定を追加します。

手順は、以下のページを参考にしました。

Webサーバインストール

Web サーバを使うので Apacheインストールします。

$ sudo apt-get install apache2

Live CD イメージのマウント

Live CD イメージを仮想CD/DVDディスクとして追加します。

VirtualBoxツールバーの「デバイス(D)」->「CD/DVDデバイス(C)」->「仮想ディスクファイルの選択」で Live CD イメージ(gparted-live-0.11.0-10.iso)を選択します。

次にマウントポイントを作成して Live CD イメージをマウントします。

$ sudo mkdir /var/lib/tftpboot/images/gparted-livecd/
$ sudo mount -o ro /dev/sr0 /var/lib/tftpboot/images/gparted-livecd

GParted ファイルシステムの公開

HTTP 用ドキュメントディレクトリを作成して GParted のファイルシステムをリンクします。

$ sudo mkdir -p /var/www/pxeboot/gparted-live/
$ cd !$
$ sudo ln -s /var/lib/tftpboot/images/gparted-livecd/filesystem.squashfs .

SYSLINUX メニューの追加

/var/lib/tftpboot/pxelinux.cfg/default を以下のように修正します。

(default unbuntu をコメントアウトしないと「boot:」プロンプトはでません)

#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

label gparted
  kernel images/gparted-livecd/live/vmlinuz
  append initrd=images/gparted-livecd/live/initrd.img boot=live config union=aufs noswap noprompt vga=788 fetch=http://192.168.11.11/pxeboot/gparted-live/filesystem.squashfs

PXE ブートした時の「boot:」プロンプトに対して「ubuntu」、「gparted」のいずれかを選択できます。

---

設定は以上です。

試すには、ゲストOS#3 の仮想マシン設定を変えて起動すると PXE ブートできます。

項目現在の値変更後の値
システム - 起動順序ハードディスク優先ネットワーク優先
ネットワークアダプタ1NAT無効
ネットワークアダプタ2内部ネットワーク(intnet)無効
ネットワークアダプタ3無効内部ネットワーク(bootnet)、アダプタタイプ(PCnet-FAST III)
ネットワークアダプタ4無効無効

Ubuntu でネットワークアダプタの設定が思うようにいかない

| 18:05 |  Ubuntu でネットワークアダプタの設定が思うようにいかない - Going My Linux Way を含むブックマーク はてなブックマーク -  Ubuntu でネットワークアダプタの設定が思うようにいかない - Going My Linux Way  Ubuntu でネットワークアダプタの設定が思うようにいかない - Going My Linux Way のブックマークコメント

VirtualBox では仮想ネットワークアダプタをいろいろ変えられていいのですが、Ubuntu が以前の設定を覚えているようで、/etc/network/interfaces を適切に設定しても、

など傍若無人な振る舞いをします。

元凶は udev で、こいつが構成済みの設定を覚えていて、気に入らない変更の仕方をするとおかしなことをします。

対処方法ですが、/etc/udev/rules.d/70-persistent-net.rules に書き込まれた古い情報を削除して、システムを再起動(新しい設定で覚えなおす)します。

# This file maintains persistent names for network interfaces.
# See udev(7) for syntax.
#
# Entries are automatically added by the 75-persistent-net-generator.rules
# file; however you are also free to add your own entries.

(これ以降の行をバッサリと削除)

----

もし、削除したくない情報がある場合は udev のマニュアル読んで適切に修正してください。(面倒なので調べてません)

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