FC2ブログ
ネットワークのしろうとが、ネットワークをしごとにする。その過程を書き綴れたらいいなと思って。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

(2013/03/08改訂)

ubuntu12.04LTSをサーバとし、古いPCにubuntu12.04LTSサーバー版
ネットワークブートを用いてインストールする手順のまとめです。


参考先は
古いノートPCで Ubuntu 9.04 LiveCD のネットワークブート
VAIO type U に Ubuntu 10.10 Desktop 日本語版 を ネットワークインストール

感謝感謝です。
参照先ではubuntuのバージョンがそれぞれ9.04と10.10ですが、今回は12.04LTSですので微妙に違うところがあるようです。



使用するのは
dnsmasq
nfs-kernel-server
の2つです。

なお、dnsmasqが利用できないクライアントPCがあるようです。(古すぎる?)
その場合はdnsmasqではなくisc-dhcp-serverとtftpd-hpaを使う事によって解決するかもしれません。
方法はコチラを参照してください。

ここではdnsmasq版を取り扱います。
まず、

#aptitude install dnsmasq
#aptitude install nfs-kernel-server

でそれぞれインストールしてください。全てrootで行なってください。


ネットワークブートだけを考えると、今回必要な設定項目はわずかです。
名前解決とかできないのでdnsmasqで管理してるIPアドレスに割り当てられた端末は
インターネットの利用ができなくなります。


dnsmasqの設定を行います。

設定ファイルは
/etc/dnsmasq.conf

私の環境でのDHCP割り当て範囲は
192.168.0.33から192.168.0.36までです。
環境により適宜書き換えてください。

設定内容は以下の通りです。
*********************
dhcp-range=192.168.0.33,192.168.0.36,12h
dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/pxe
*********************
DNSの割り当て・オプション等はとりあえず一切なくて大丈夫です。


次にnfs-kernel-serverの設定を行います。

設定ファイルは
/etc/exports

設定内容は以下の通り
私のLANは 192.168.0.0/24(=192.168.0.0~192.168.0.255)ですので、適宜書き換えてください。
*********************
/pxe/images/ubuntu 192.168.0.0/24(ro,all_squash,no_subtree_check,crossmnt)
*********************


これで設定ファイルの設定は完了です。



次に、
ネットワークブートをするためのフォルダを用意します。
今回は
/pxe
/pxe/images
/pxe/pxelinux.cfg
の3つのフォルダを作成します。

#mkdir /pxe
#mkdir /pxe/images
#mkdir /pxe/images/ubuntu
#mkdir /pxe/pxelinux.cfg


そしてネットワークブートをするためのファイルを用意します。
具体的にはメニューに使う(?)「menu.c32」とブートに使う(?)「pxelinux.0」が必要です。
http://www.kernel.org/pub/linux/utils/boot/syslinux/」から、「syslinux-4.05.tar.gz」をダウンロードします。

※なぜ4.05?→ubuntu12.04のisoファイル内にsyslinux4.05のインストールファイルがあるため。
5.01だとエラーになりました。

ダウンロードしたファイルのあるフォルダで以下を実行して解凍。
#gunzip syslinux-4.05.tar.gz
#tar -xvf syslinux-4.05.tar

必要なファイルを2つ取り出します。
1、coreフォルダ内の「pxelinux.0」
2、com32フォルダ内のmenuフォルダ内の「menu.c32」
これら2つを/pxeにコピーします。

#・・・(略)
#・・・(略)


次に、
インストールするubuntu12.04LTS本体を用意します。
公式サイトからubuntu12.04LTSをダウンロードし、
/media/ubuntu12.04LTS(わかればどこでも可)にマウントしてください。
(私はクライアントPCのスペックが非常に低いものだったので32bit版を使用しています。)

#mkdir /media/ubuntu12.04LTS
#mount -o loop "ubuntu12.04LTSのisoファイルを選択" /media/ubuntu12.04LTS

それをcp -r でフォルダ丸ごと/pxe/images/ubuntu12.04LTSにコピーします。

#cp -r /media/ubuntu/* /pxe/images/ubuntu12.04LTS/




この状態では、ネットワークブートのシステムは必要なファイルがどこにあるかわかりません。

のでファイルの場所を明記してあげます。


/pxe/pxelinux.cfg
内に
default
というファイルを作成し以下の内容を入力します。

サーバのアドレスを192.168.0.30に設定しています。
環境によって適宜書き換えてください。
ubuntuのバージョンによってパスがころころ変わっているので要注意です。
**********
DEFAULT menu.c32
PROMPT 0
NOESCAPE 0
ALLOWOPTIONS 0
TIMEOUT 500
MENU TITLE PXE Boot Menu

LABEL Ubuntu 12.04LTS
kernel images/ubuntu12.04LTS/install/vmlinuz
append boot=install netboot=nfs nfsroot=192.168.0.30:/pxe/images/ubuntu12.04LTS initrd=images/ubuntu12.04LTS/install/netboot/ubuntu-installer/i386/initrd.gz
**********

1行が長いので改行に注意。後半部分の先頭はLABEL,kernel,appendです。


以上で設定完了ですが、念のため権限を開放しておきます。
#chmod -R 777 /pxe


そしてそれぞれのインストールしたものを再起動させます。
#service dnsmasq restart
#service nfs-kernel-server restart

以上で準備完了です。後はubuntuをインストールしたいPCでネットワークブートを実行すれば上手くいく・・・ハズ。





以下は遭遇したトラブルを書き留めておきます。
***********************

ケース1:

PXE-E51: No DHCP or proxyDHCP offers were received.
PXE-M8F: Exiting Intel PXE ROM.

訳:
LAN内にDHCPサーバがみつからない。

対策:
1、dnsmasqを確認する。

dnsmasqは
dhcp-range="DHCP割り当て最初のアドレス","DHCP割り当て最後のアドレス","割り当て時間"
例えば
dhcp-range=192.168.0.33,192.168.0.36,12h
という一行だけ書いてあれば作動に問題ない。
#service dnsmasq restart
で念のため再起動。

2、ファイアーウォールの確認をする。
ファイアーウォールで遮断されている可能性がある。
ufwなどのファイアーウォールで許可すべきポートは67,68だけではない。
じゃあ何番かというとわからなかったので、私はこの時だけ無効化しました。
#ufw disable


ケース2:

PXE-E53: No boot filename received
PXE-M0F: Exiting Intel PXE ROM.

訳:
DHCPサーバは見つかったけど、ブート用のファイルが見つからない。

対策:
dnsmasqは無事認識できたので、/etc/dnsmasq.confの内容を見直す。
dhcp-boot=pxelinux.0


ケース3:

PXE-T02: Access violation
PXE-E3C: TFTP Error - Access Violation
PXE-M0F: Exiting Intel PXE ROM.

対策:
enable-tftpを記述しそこねている可能性。
/etc/dnsmasq.confで該当部分を確認。


ケース4:

PXE-T04: unsupported request from "IPアドレス"
PXE-E36: Error received from TFTP server
PXE-M0F: Exiting Intel PXE ROM.

対策:
dhcp-boot=pxelinux.0 のスペルミス
tftp-root=/pxe が欠けている
または何かしらタイミングが悪くてこうなる事もある。再試行であっさり解決するかもしれない。


ケース5:

PXE-T01: file /pxe/"バグ文字" not found
PXE-E3B: TFTP Error - File Not found
PXE-M0F: Exiting Intel PXE ROM.

訳:
tftpでお望みのファイルを探したけどみつからない。

対策:
/etc/dnsmasq.conf
の「tftp-root」は読めているが「dhcp-boot」が読めていない。
これは私の古いノートPCので発現したのですが、解決策は見つかりませんでした。
BIOSであるとかそういったレベルでの問題かもしれません。古すぎるとだめなのかもしれないです。



以上、トラブルの報告でした。

スポンサーサイト


追記を閉じる▲
ケース1:

PXE-E51: No DHCP or proxyDHCP offers were received.
PXE-M8F: Exiting Intel PXE ROM.

訳:
LAN内にDHCPサーバがみつからない。

対策:
1、dnsmasqを確認する。

dnsmasqは
dhcp-range="DHCP割り当て最初のアドレス","DHCP割り当て最後のアドレス","割り当て時間"
例えば
dhcp-range=192.168.0.33,192.168.0.36,12h
という一行だけ書いてあれば作動に問題ない。
#service dnsmasq restart
で念のため再起動。

2、ファイアーウォールの確認をする。
ファイアーウォールで遮断されている可能性がある。
ufwなどのファイアーウォールで許可すべきポートは67,68だけではない。
じゃあ何番かというとわからなかったので、私はこの時だけ無効化しました。
#ufw disable


ケース2:

PXE-E53: No boot filename received
PXE-M0F: Exiting Intel PXE ROM.

訳:
DHCPサーバは見つかったけど、ブート用のファイルが見つからない。

対策:
dnsmasqは無事認識できたので、/etc/dnsmasq.confの内容を見直す。
dhcp-boot=pxelinux.0


ケース3:

PXE-T02: Access violation
PXE-E3C: TFTP Error - Access Violation
PXE-M0F: Exiting Intel PXE ROM.

対策:
enable-tftpを記述しそこねている可能性。
/etc/dnsmasq.confで該当部分を確認。


ケース4:

PXE-T04: unsupported request from "IPアドレス"
PXE-E36: Error received from TFTP server
PXE-M0F: Exiting Intel PXE ROM.

対策:
dhcp-boot=pxelinux.0 のスペルミス
tftp-root=/pxe が欠けている
または何かしらタイミングが悪くてこうなる事もある。再試行であっさり解決するかもしれない。


ケース5:

PXE-T01: file /pxe/"バグ文字" not found
PXE-E3B: TFTP Error - File Not found
PXE-M0F: Exiting Intel PXE ROM.

訳:
tftpでお望みのファイルを探したけどみつからない。

対策:
/etc/dnsmasq.conf
の「tftp-root」は読めているが「dhcp-boot」が読めていない。
これは私の古いノートPCので発現したのですが、解決策は見つかりませんでした。
BIOSであるとかそういったレベルでの問題かもしれません。古すぎるとだめなのかもしれないです。



以上、トラブルの報告でした。

スポンサーサイト

【2013/02/18 06:50】 | 技術的なメモ
トラックバック(0) |
コメント
この記事へのコメント
コメントを投稿
URL:

Pass:
秘密: 管理者にだけ表示を許可
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。