PXE(Preboot eXecution Environment)とは、サーバーにあるインストーラー等のOSイメージを、ネットワーク越しにクライアントPC上で起動する方法で、ネットに繋がっていれば内蔵HDDが無くてもPCを使うことができます。
このPXEサーバーをVMwareやVirutualBoxといった仮想マシン上に一つ構築しておけば、必要なときだけ起動して再インストールやリカバリをするツールとして使えるので便利ではないかと思います。
- NetBootイメージを使ってPXEサーバーを構築
- LiveCDを使ってPXEサーバーを構築
- ネットブートもできない場合
1はネットブート用のイメージを使う方法です。Macとubuntuのどちらでも構築できますが、サーバー版と同様のキャラクタベースのインストーラーです。
2は通常のインストールに使うLiveCDを使うので、GUIベースのインストーラーになります。インストールだけでなくLive起動もできるので、内蔵HDDが無いPCをチェックする場合に使えるかもしれません。
※仮想マシン上に構築する場合は、ネットワーク設定を「ブリッジ接続」にしてください。
※サーバーとして使うPCはIPアドレスを固定にしてあることが前提です。
3はネット越しのインストールもできない場合にインストールする方法です。内蔵HDDを外し、別PCのVirtualBoxを使って無理矢理入れます。
検証環境
iMac mid 2007:OSX 10.6.7
Mebius PC-CL1-5CD:ubuntu 10.04 Desktop
VirtualBox4.0.8
NetBootイメージを使ってPXEサーバーを構築する方法
Mac、ubuntu共に、下記サイトのNetBoot用のイメージと「tftp」「dhcp」を導入し構築します。
Ubuntu Netboot Images
NetBoot用のイメージを入手するには、バージョン → i386と進み、「netboot.tar.gz」をダウンロードします。
MacでPXEサーバーを構築する
Macはデフォルトでtftpが入っているので、dhcpのみインストールします。インストールにはMacPortsを使うので、XcodeとMacPortsをあらかじめ入れておいてください。$ sudo port install dhcp
# dhcpの設定ファイルを作成、編集
$ sudo nano /opt/local/etc/dhcp/dhcpd.conf
# 開いたファイルに以下を記入
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
ddns-update-style none;
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.1.1, 8.8.8.8;
range dynamic-bootp 192.168.1.30 192.168.1.40;
filename "/pxelinux.0";
}
################################################################
#subnet:192.168.1~で始まるネットワークにアドレスを割り当てる場合の設定。
#option routers:ルーターのアドレス。
#option domain-name-servers:DNSサーバー。ルーターとgoogleのDNSを設定してます。
#range dynamic-bootp:クライアントに割り当てるIPアドレス。上の場合、
# 192.168.1.30~40のどれかが割り当てられます。
################################################################
# tftpとdhcpを起動
$ sudo launchctl load -w /System/Library/LaunchDaemons/tftp.plist
$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.dhcpd.plist
# 止める場合は、下記を実行
$ sudo launchctl unload /System/Library/LaunchDaemons/tftp.plist
$ sudo launchctl unload /Library/LaunchDaemons/org.macports.dhcpd.plist
設定が終了したら、netboot.tar.gzを/private/tftpbootフォルダ内に展開します。
これで設定は終了です。
終わったら、クライアントPCの起動順序を変更して起動します。
UbuntuでPXEサーバーを構築する
Macの場合と違いtftpはデフォルトでは入っていないので、「tftpd-hpa」と「dhcp3-server」の2つを導入します。$ sudo aptitude install tftpd-hpa dhcp3-server
#dhcp3の設定
$ sudo nano /etc/dhcp3/dhcpd.conf
# 開いたファイルの一番下に下記を追加
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.1.1, 8.8.8.8;
range dynamic-bootp 192.168.1.30 192.168.1.40;
filename "/pxelinux.0";
}
################################################################
#subnet:192.168.1~で始まるネットワークにアドレスを割り当てる場合の設定。
#option routers:ルーターのアドレス。
#option domain-name-servers:DNSサーバー。ルーターとgoogleのDNSを設定してます。
#range dynamic-bootp:クライアントに割り当てるIPアドレス。上の場合、
# 192.168.1.30~40のどれかが割り当てられます。
################################################################
# 設定を反映させる
$ sudo service tftpd-hpa restart
$ sudo /etc/init.d/dhcp3-server restart
設定が終了したら、netboot.tar.gzを/var/lib/tftpboot/ubuntuの中に展開します。
これでサーバーの設定は終了です。
クライアントPCを起動
PXEサーバーの設定が終わったら、クライアントPCのBIOSで起動順序を変更し、ネットワーク起動を有効にしてから起動します。ネットワーク起動を有効すると下の様な画面で起動します。
ネットブートに成功するとインストーラーのメニューが表示されます。
▲旧バージョンの様な外観ですが10.04です。
NetBootイメージでインストールする場合は、サーバー版と同様のキャラクタベースのインストーラーになります。
途中でどのパッケージを導入するか選びます。この時に「印刷サーバー」と「Ubuntu desktop」にチェックを入れればデスクトップ版がインストールされます。
LiveCDを使ってPXEサーバーを構築
通常のインストールに使うLiveCDのイメージを使用してネット越しにインストールする方法です。The Linux Kernel Archivesのsyslinuxと「dnsmasq」「nfs-kernel-server」を導入して構築します。
Index of /pub/linux/utils/boot/syslinux
まず、以下の様にネットブート用のPXEディレクトリを作成します。
/pxe
/pxe/images
/pxe/images/ubuntu
/pxe/pxelinux.cfg
$ mkdir -p /pxe/images/ubuntu /pxe/pxelinux.cfg
次に、ダウンロードしたsyslinuxの中にある下記2つのファイルを、作成した「/pxe」ディレクトリにコピーします。
作成した/pxe/pxelinux.cfg/フォルダ内に「default」というファイルを作成します。
$ sudo nano /pxe/pxelinux.cfg/default
# 下記を記入
DEFAULT menu.c32
PROMPT 0
NOESCAPE 0
ALLOWOPTIONS 0
TIMEOUT 600
MENU TITLE PXE Boot Menu
LABEL Ubuntu Lucid Live Desktop
kernel images/ubuntu/casper/vmlinuz
append boot=casper netboot=nfs nfsroot=192.168.1.12:/pxe/images/ubuntu initrd=images/ubuntu/casper/initrd.lz -- splashd
LABEL Ubuntu Lucid Live Install
kernel images/ubuntu/casper/vmlinuz
append boot=casper netboot=nfs nfsroot=192.168.1.12:/pxe/images/ubuntu initrd=images/ubuntu/casper/initrd.lz -- splash only-ubiquity
192.168.1.12の部分はPXEサーバーのIPアドレスを入れます。
10.04~11.04ではinitrdファイルの拡張子はlzですが、9.04だとgzだったりと、バージョンによって拡張子が違うようなので確認が必要です。
続いて、Ubuntu Desktop 日本語 Remix CDのダウンロードよりubuntuのLiveCDをダウンロードし、一度マウントして中身を/pxe/images/ubuntuフォルダ内に全てコピーします。
※初めて試す場合は、ubuntu9.04等の旧バージョンをお勧めします。最近のバージョンだと起動時にブートスプラッシュしか表示されず、起動に失敗している場合にどこでつまずいているか分かりづらいからです。
コピーしたら、「dnsmasq」と「nfs-kernel-server」 をインストールし、設定ファイルを編集します。
$ sudo aptitude install dnsmasq nfs-kernel-server
# dnsmasq.confを編集
$ sudo nano /etc/dnsmasq.conf
# 開いたファイルの一番下に下記を記入
no-hosts
server=/localnet/192.168.1.1
dhcp-range=192.168.1.20,192.168.1.30,2h
dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/pxe
dhcp-option=3,192.168.1.1
################################
#1行目:hostsファイルを参照しない設定。
#2行目:DNSサーバーのIPアドレスを指定。
#3行目:クライアントに割り当てるIPアドレスを指定。
#上の場合は192.168.1.20~30のどれかが割り当てられる。
#7行目:ルーターのIPアドレスを指定。
################################
# /etc/exportsファイルを編集
$ sudo nano /etc/exports
# 開いたファイルの一番下に下記を追加
/pxe/images/ubuntu *(ro,all_squash,no_subtree_check,crossmnt)
# 「dnsmasq」と「nfs-kernel-server」を再起動して設定を反映させる
$ sudo /etc/init.d/dnsmasq restart
$ sudo /etc/init.d/nfs-kernel-server reload
これで設定は終了です。
設定終了後にクライアントPCをネットブートすると、下の様な画面が表示され、ubuntuをLive起動するかインストールするかを選びます。
下は9.04を起動しているところです。起動時にサーバー(IPアドレス:192.168.1.11)のファイルをマウントしています。
ネットブートもできない場合
CD、USBだけでなく、ネットブートすらも出来ないPCに入れる方法です。
これまでの様にソフトでどうにかするのではなく、内蔵HDDを外して以下の様な流れで強引に入れます。
USB接続のケースに入れる
↓
VirtualBoxが入っている別のPCに接続(私の場合はMac)
↓
VirtualBoxでインストール
インストール用の仮想マシン作成
1から手順を説明すると長くなるので、ポイントだけ紹介します。仮想マシン作成に関して詳しく知りたい方は過去記事を参考にしてください。新規仮想マシンを適当な名前で(ubuntu-installとか)作成し、仮想ハードディスクを作成する際に下の様に「起動ディスク」のチェックを外し、「続ける」をクリックします。
すると下の様な警告が表示されますが、構わず「続ける」をクリックして進み、仮想ハードディスク無しで仮想マシンを作成します。
仮想マシン作成が終了したら、「設定」 → 「ストレージ」と進み、IDEコントローラーにインストールに使うISOイメージを指定します。
次に、インストール先となるケースに入れたUSB接続のHDDをMacに接続し、「ポート」の「USB」で、接続したHDDを指定します。
これで設定は終了です。
インストール
設定終了後、仮想マシンを起動するとインストーラーが立ち上がるので、VirtualBoxにUSB接続のHDDを認識させるため下記のどちらかを実施します。- インストール先のHDDのフォーマットが「hfs」や「FAT」といったMacで認識できる形式の場合は、HDDをアンマウントします。
- HDDのフォーマットが「ext」等の、Macで認識できない形式の場合は、USB接続のHDDをMacから一度取り外し、再度接続します。
これでUSB接続のHDDがVirtualBoxにマウントされ、インストールできるようになります。
仮想マシン作成時に仮想ハードディスクを作成しなかったので、インストール先が1つ(USB接続のHDD)しか表示されません。
インストールが完了したらHDDを元に戻し、起動できるかチェックして終了です。
HDDを取外す事を除けば、3つの方法の中では一番簡単だと思います。
参考Link:
古いノートPCで Ubuntu 9.04 LiveCD のネットワークブート:Kawaji's Weblog
Ubuntu 10.10 Desktop 日本語版 を ネットワークインストール
ライブUbuntuをネットワークブートする ディスクレスサーバー構築 - adsaria mood
MacをPXEサーバーとしてUbuntuをネットワークインストールしてみる
スポンサード リンク