初出2005年5月6日 最終更新2005年5月9日
中田裕一朗氏が開発されている Berry Linux をベースに、 PXEブートでNFS-ROOTなディスクレスでしかも自動コンフィグレーション機能を 持ったLinuxを構築する方法を紹介します。
Berry Linux 0.57 | http://berry.sourceforge.jp/download.htmlからダウンロード |
母艦マシン | NFS、ISC dhcpd、TFTPDの機能を持つUNIX、Linuxマシン(Linuxを推奨) |
構築用クライアントマシン | HDDを持ち、PXEブートのできるPC |
Berry Linux 0.57用カーネルソース | http://sourceforge.jp/projects/berry/files/?release_id=14401#14401からkernel-2.6.11-b1.src.rpmをダウンロード |
pxelinux.0 | syslinuxパッケージに含まれるpxelinux.0ファイルを用意します。http://www.kernel.org/pub/linux/utils/boot/syslinux/からダウンロードできます。コンパイル済みのRPMパッケージからpxelinux.0ファイルだけ取り出せばいいでしょう。既に母艦にsyslinuxパッケージがインストールされている場合は/usr/lib/syslinux/pxelinux.0ファイルを用いることができます。 |
※これ以降の説明では母艦はLinuxOSで既にsyslinuxパッケージが導入されているとして話を進めます。
説明を簡単にするために構築例として値を定めます。
母艦のIPアドレス | 192.168.0.3 |
母艦からNFSエクスポートするパス | /home2/nfsroot_berrylinux |
tftpdのルート | /tftpd |
構築用クライアントマシンで作業をおこないます。
光学ドライブからBerry Linuxを立ち上げ、[メニュー]→[BERRY]→[BERRYのインストール]を選択してBerry Linuxをハードディスクにインストールします。
[BERRYのインストール]完了後、Berry Linuxをハードディスクから起動します。 これ以降はBerry LinuxのCDは必要ありません。
コンパイル作業は構築用クライアントマシン、母艦側マシンのどちらで作業してもかまいませんが、コンパイルするマシン上にLinuxカーネルコンパイル環境が必要です。私は母艦側でコンパイル作業をおこないました。Berry Linux内にカーネルを再構築するための開発環境が入っているのか私は確かめていません。クライアント側で作業をおこなう場合にはもしカーネル再構築するための開発環境が揃っていなければ自分で揃えて下さい。Fedora3用の開発パッケージ等が使えると思います。
以下の項目を全てカーネル組み込みにして下さい。
Networking support→Networking options→IP: kernel level autoconfiguration→IP: DHCP support |
File systems→Network File Systems→NFS file systems support→Provide NFSv3 client support |
File systems→Root file system on NFS |
以下の項目は自ら必要な項目を判断してカーネル組み込みにして下さい。
Networking support→Network device support→ |
例えば私は自分が使う可能性のあるマシンのNICに合わせて以下の項目をカーネル組み込みにしました。
Networking support→Network device support→ |
Ethernet (10 or 100Mbit)→ |
3c590/3c900 series (592/595/597) "Vortex/Boomerang" support |
Broadcom 4400 ethernet support (EXPERIMENTAL) |
EtherExpressPro/100 support (eepro100, original Becker driver) |
RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERIMENTAL) |
RealTek RTL-8139 PCI Fast Ethernet Adapter support |
Makefileを書き替えない場合はバージョンが2.6.11.7になります。
コンパイル後、カーネルを入れ替えます。
新しいカーネルでの動作を確認して下さい。
母艦側で作業します。
NFS-ROOT用ディレクトリを作成します。
# mkdir /home2/nfsroot_berrylinux
/etc/exportsとかに
/home2/nfsroot_berrylinux 192.168.0.0/255.255.255.0(rw,no_root_squash,async)
みたいな行を追加してnfsdを(再)起動します。
構築用クライアント側で作業します。
# mkdir /mountpoint # mount 192.168.0.3:/home2/nfsroot_berrylinux /mountpoint # cp -ax / /mountpoint # umount /mountpoint # rmdir /mountpoint
これ以降は構築用クライアントマシンにハードディスクは必要ありません。
NFS-ROOTで環境で動作し、しかも自動コンフィグレーションをおこなう為にはBerry Linuxのファイルを少々修正しなければなりません。
かなり簡単なのですが文面で説明するには複雑過ぎるのでスクリプトを用意しました。このページの最後尾に貼り付けてあるbase64エンコードされた部分をデコードして下さい。 tar.gz形式のファイルを解凍するとディレクトリが作成されます。 中にはいくつかのディレクトリとテキストファイルが入っています。 申し訳ありませんが基本的にこのスクリプトはLinux用です。他のOSを母艦として使用したい人はスクリプトの中身を少し修正して下さい。
オリジナルのファイル名はnfsroot-berrylinux-filechg.tar.gzです。ここではその名前でファイルを復元したとします。 このファイルを母艦上で解凍します。
# gzip -dc nfsroot-berrylinux-filechg.tar.gz| tar xvf -
nfsroot-berrylinux-filechgという名のディレクトリが作成されます。
# cd nfsroot-berrylinux-filechg # ls -F # diff/ filechg.conf filechg.sh* modified/ new/ original/ work/
filechg.confを自分の環境に合わせて編集し、シェルスクリプトfilechg.shを実行すれば、Berry Linuxの一部のファイルが自動的に修正されます。
PXEブートするためのtftp用ファイルの準備をおこないます。 母艦側で作業します。
/tftpboot直下にpxelinux.0ファイルとカーネルを配置します。
# cd /tftpboot # cp /usr/lib/syslinux/pxelinux.0 . # cp /home2/nfsroot_berrylinux/boot/vmlinuz-2.6.11.7 .
/tftpboot/boot.msgというファイルを作成します。 例えばこんな内容にします。(好きな内容にして下さい。)
Press <return> (or wait 5 seconds) to boot your Berry Linux system from the network. You may override the default linux kernel parameters by typ ing "linux <params>", followed by <return> if you like.
pxelinuxの仕様に合わせて/tftpboot/pxelinux.cfgディレクトリを作成します。
# mkdir pxelinux.cfg
/tftpboot/pxelinux.cfg/defaultというファイルを作成します。 こんな内容にします。
default linux prompt 1 display boot.msg timeout 50 label linux kernel vmlinuz-2.6.11.7 append vga=791 devfs=mount noswap=yes root=/dev/nfs ip=dhcp rw
※Solaris 9以前のSolaris/x86がインストールされているクライアントを使用する方はnoswap=yesを必ず既述して下さい。
PXEブートするためのISC dhcpdの設定をおこないます。 母艦側で作業します。
dhcpd.confのサブネットセクションの設定の内側か、ホスト毎の設定セクションの内側なんかに、このような2行を追加してdhcpdを(再)起動します。
filename "pxelinux.0"; option root-path "192.168.0.3:/home2/nfsroot_berrylinux";
※本ページで紹介しているLinuxには自動コンフィグレーション機能がありますので複数のマシンで共通の設定を使用することが本来の姿だと思います。
構築方法の説明は以上です。クライアントマシンをPXEブートして下さい。KDEデスクトップが現れるのを期待しましょう。(構築用クライアントマシン以外のマシンでもOKな筈)
ブラウザによってはコピーした際に各行頭に半角スペースが付くことがあります。その場合は取り除いて使用して下さい。
復元方法の例を示します。 ブラウザからコピーした文字列をmime.txtというファイル名で保存します。
$ uudecode -o nfsroot-berrylinux-filechg.tar.gz mime.txt
※uudecodeコマンドは一般的にsharutilsパッケージに含まれています。
begin-base64 644 nfsroot-berrylinux-filechg.tar.gz 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 JEjQP4L+BL0UgNEAUAAA ====
動作報告・問題点などありましたらコメントをお願いします。 コメントをぶら下げるには編集ボタンを押してください。