PXEブート&NFS-ROOTなBerry Linuxの構築

初出2005年5月6日 最終更新2005年5月9日

中田裕一朗氏が開発されている Berry Linux をベースに、 PXEブートでNFS-ROOTなディスクレスでしかも自動コンフィグレーション機能を 持ったLinuxを構築する方法を紹介します。

  • knoppix-terminalserverと異なり、伝統のNFS-ROOT方式を採用している為、ディスクレス運用を実現する仕組みが簡単です。Linuxの勉強にも向いているでしょう。また、ファイルシステムは全て展開済みの為、knoopix-terminalserverよりかなりパフォーマンスに優れています。
  • この方法は、2ちゃんねるUNIX板のなんとなくSolaris/x86 part5の644氏が考案しました。
  • ここで紹介しているPXEブート&NFS-ROOTな機能を中田氏がBerry Linux本体に組み込まれることを願っています。
  • 姉妹ページ tips/ディスクレス環境の構築
  • 姉妹ページBerry LinuxをUSBメモリにインストール

特徴

  • 母艦としてUnix系のOSを用意してnfsdとdhcpdを整備することで、Windowsしか入っていない、光学ドライブもついていないPCがPXEブートするだけでインストール作業なしに、いきなりフル機能なLinuxマシンに早変わりします※1。
  • OpenOfficeもxine(DVDプレーヤー)もMediaPlayerもxmms(mp3プレーヤー)もブラウザーも最初から入っています※2。
  • システムのストレージとして、光学ドライブよりも高速なNFSを用いるのでone CD Linuxよりもずっと快適な使用感が得られます。
  • 光学ドライブもHDDも取りはずしてスピンドルレス(ディスクレス)での運用ももちろん可能です。
  • dhcpdの設定を例えばサブネットで共通にしておくと、いつでもどのマシンも使いたい時だけインストール作業なしにLinuxマシンになります※3。
  • 例えば普段はWindowsを使用していて、何かトラブルが起きたときのトラブルシューティングの手段として、あるいはネットワーク経由のバックアップ、レストアの手段としても大変便利です※4。
  • ※1.自動コンフィグレーション機能は元々のBerry Linuxの機能に依存します。
  • ※2.当初の機能は元々のBerry Linuxの機能に依存しますが自分で自由にソフトウェアをインストールすることができます。
  • ※3.PXEブートできるマシンに限ります。
    • EthreBoot Project に関連したサイトである ROM-o-matic.net からPXEに対応していないマシンでもFDDや光学ドライブを使ってPXEブートができる様々便利な物がダウンロードできます。
    • PXEブートができないマシンでも、ブートフロッピーやブートCD-Rを用いることでブート後のディスクレス運用は可能です。
  • ※4.システム管理者も重宝するでしょう。
  • ※今のところ複数のクライアントを同時に立ち上げることには対応していません。

用意するもの

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

(1)Berry Linuxを一旦ハードディスクにインストール

構築用クライアントマシンで作業をおこないます。

光学ドライブからBerry Linuxを立ち上げ、[メニュー]→[BERRY]→[BERRYのインストール]を選択してBerry Linuxをハードディスクにインストールします。

  • 注意点
    • [Input your whole name (name surname)]で「Berry User」を入力します。
      • ※実際には何を入力してもいいんですが、次と整合性を取る為です。
  • [Input your user name (perhaps you like: buser]で「berry」を入力します。
    • ※必ずberryと入力して下さい。

[BERRYのインストール]完了後、Berry Linuxをハードディスクから起動します。 これ以降はBerry LinuxのCDは必要ありません。

(2)Berry Linuxカーネルの再構築

コンパイル作業は構築用クライアントマシン、母艦側マシンのどちらで作業してもかまいませんが、コンパイルするマシン上に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になります。

カーネルの入れ替え

コンパイル後、カーネルを入れ替えます。

  • lilo.confの当該セクションからはinitrdの既述を外して下さい。
  • 新しいカーネルは/boot/vmlinuz-2.6.11.7という名前にして下さい。(説明の都合上)
  • ※NFS-ROOT環境では原則的にinitrdは不要です。
  • ※元々存在する/boot/initrd.gzは後で中身の一部を使用しますので必ずそのまま残しておいて下さい。

新しいカーネルでの動作を確認して下さい。

(3)NFSの設定

母艦側で作業します。

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を(再)起動します。

(4)Berry Linuxルート以下の母艦側へのコピー

構築用クライアント側で作業します。

# mkdir /mountpoint
# mount 192.168.0.3:/home2/nfsroot_berrylinux /mountpoint
# cp -ax / /mountpoint
# umount /mountpoint
# rmdir /mountpoint

これ以降は構築用クライアントマシンにハードディスクは必要ありません。

(5)Berry Linuxファイルの一部修正

NFS-ROOTで環境で動作し、しかも自動コンフィグレーションをおこなう為にはBerry Linuxのファイルを少々修正しなければなりません。

かなり簡単なのですが文面で説明するには複雑過ぎるのでスクリプトを用意しました。このページの最後尾に貼り付けてあるbase64エンコードされた部分をデコードして下さい。 tar.gz形式のファイルを解凍するとディレクトリが作成されます。 中にはいくつかのディレクトリとテキストファイルが入っています。 申し訳ありませんが基本的にこのスクリプトはLinux用です。他のOSを母艦として使用したい人はスクリプトの中身を少し修正して下さい。

  • ※テキストファイルの中身をよく確認してdd if=/dev/zero of=/dev/hdaのようなコードがないか確認して下さい(笑)。
  • ※このスクリプトの中で前に触れたBerry Linuxの/boot/initrd.gzを使用します。

オリジナルのファイル名は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の一部のファイルが自動的に修正されます。

(6)tftp用ファイルの準備

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を必ず既述して下さい。

(7)dhcpdの設定

PXEブートするためのISC dhcpdの設定をおこないます。 母艦側で作業します。

dhcpd.confのサブネットセクションの設定の内側か、ホスト毎の設定セクションの内側なんかに、このような2行を追加してdhcpdを(再)起動します。

   filename "pxelinux.0";
   option root-path "192.168.0.3:/home2/nfsroot_berrylinux";

※本ページで紹介しているLinuxには自動コンフィグレーション機能がありますので複数のマシンで共通の設定を使用することが本来の姿だと思います。

構築方法の説明は以上です。クライアントマシンをPXEブートして下さい。KDEデスクトップが現れるのを期待しましょう。(構築用クライアントマシン以外のマシンでもOKな筈)


Berry Linuxファイル修正用スクリプト(base64)

ブラウザによってはコピーした際に各行頭に半角スペースが付くことがあります。その場合は取り除いて使用して下さい。

復元方法の例を示します。 ブラウザからコピーした文字列を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
====

コメント

動作報告・問題点などありましたらコメントをお願いします。 コメントをぶら下げるには編集ボタンを押してください。

コメント:

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2006年07月30日 17:55