4.ThinkPad X60に
FreeBSD 6.2-RC2/amd64をインストール
ThinkPad X60(Core 2 Duo搭載モデル)にFreeBSD
6.2-RC2のAMD64アーキテクチャ版をインストールしてみました。
かなり罠が満載でしたので、ここにまとめてみたいと思います。
今回使用するThinkPad X60はWindows XPとのデュアルブートにします。そのため、FreeBSD用のパーティションをあらかじめ確保する必要があります。今回は、市販のパーティショニングツールを使用してFreeBSD用の領域を確保しました。ついでに、WindowsとFreeBSD間でファイルのやり取りが出来るように、2GBほどのFAT32の領域も作っておきました。
今回使用したマシンには、ウルトラベース(ドッキングステーション)が付いていません。つまり、ATA接続扱いの光学ドライブは一切無いことになります。
ただ、内蔵ATA接続のドライブをUSB化するアタッチメントは手元にあったので、これを使ってブートを試みましたが……loaderからkernelがブートできませんでした。
次に、USBのFDDを使用して、作成したインストールFDからのブートも試みましたが、こちらはloaderがハングアップしてしまい、続行不可能に。
色々と調べてみると、どうやらThinkPad
X60シリーズは、現状でFreeBSDのインストーラをUSBデバイスからブートできないようです。
つまり、ウルトラベースX6とウルトラスリムベイ対応CD-ROMを持っていなければ、現状ではPXEブートでインストーラを上げなければならない事になります。
色々とトライ&エラーを繰り返してみたところ、以下の手順で実施する必要があることが判りました。
今回は、この手順に沿ってインストールを勧めていきます。
FreeBSD 6.1-RELEASE/i386のイメージでPXEブート
↓
インストーラでスライス及びパーティションの作成まで実行する
(ラベル画面でwキーを押下して変更をcommitする)
↓
インストールをキャンセルし、FreeBSD
6.2-RC2/amd64のイメージでPXEブート
↓
先ほど確保したスライスとパーティションをいじらずにインストール
最初に6.1-RELEASE/i386のイメージでブートし、パーティション作成まで行ってしまうのは、6.2-RC2/amd64のインストーラでは、上手く新規パーティションを作れなかったからです。
そのため、このような二段階構成になっています。
PXEブートを行うために必要なのは、以下の3つのサーバ機能です。
・DHCPサーバ
・TFTPサーバ
・NFSサーバ
幸い、FreeBSDで稼働しているサーバが2台あるので、今回はサブサーバの“ねこっちゃ”にこれらの機能を実装することにします。
今回、ブートに必要なファイルは以下の通りです。インストールCDイメージから取り出しておきます。
(以下のファイルは全て6.2-RC2-amd64-disc1.isoや6.1-RELEASE-i386-disc1.isoの中にあります)
/boot/pxeboot
/floppies/*.flp (拡張子がflpのファイル全て)
取り出したファイルは“ねこっちゃ”の以下のディレクトリに保存することにします。
・6.1-RELEASE/i386のイメージ
/tftpboot/6.1-RELEASE-i386
・6.2-RC2/amd64のイメージ
/tftpboot/6.2-RC2-amd64
DHCPサーバはportsからインストールして使用します。パスは『/usr/ports/net/isc-dhcp3-server』です。
ここでmake;make installすれば、しばらく待つとDHCPサーバがインストールされます。
DHCPサーバの設定ファイルは『/usr/local/etc/dhcpd.conf』になります。
とりあえず、PXEブートするためには以下のようにざっと書いてしまいます。
/usr/local/etc/dhcpd.conf の中身(重要な部分のみ抜粋) # PXE Boot
|
上記の黄色の部分は環境によって修正を要する箇所です。
ここまで設定すると、ThinkPadをPXEブートしたときにDHCPサーバによりIPアドレスが割り当てられ、TFTPサーバに『pxeboot』というファイルを要求するようになります。
標準でインストールされますが、標準では無効になっています。『/etc/inetd.conf』の中で
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot
と記載された行がコメントアウトされているので、コメントアウトを解除します。
コメントアウト解除後
# killall -HUP inetd
と実行して、設定変更を反映させます。
次に、TFTPサーバのドキュメントルートにブートイメージ(今回は『pxeboot』)を配置します。
デフォルトでは『/tftpboot』ディレクトリがTFTPサーバのドキュメントルートになるので、
# cp /tftpboot/6.1-RELEASE-i386/pxeboot /tftpboot/.
と実行して、ファイルを配置します。
最後に
# tftp localhost
tftp> get pxeboot
と実行して、正常にファイルがダウンロードできるかを確認してください。
ダウンロードできれば、TFTPサーバの設定は完了です。
細かい設定方法は他の場所に幾らでもありますので、そちらを参照してください。
今回、必要な設定は、DHCPサーバの設定で『ブート後に読み込むNFS
rootとなるディレクトリ名』と設定されたディレクトリのexportです。
今回の場合は『/pxeimage』になります。このディレクトリを、DHCPで配布されたIPアドレスからマウント可能になるように設定します。
『/tftpboot/6.1-RELEASE-i386』ディレクトリに移動し、以下のようにして『/pxeimage』以下にファイルを展開します。
以下のコマンドは、全てのflpファイルを対象にして実行します。
# mdconfig -a -t vnode -u 0 -f "フロッピーイメージファイル名"
# mount /dev/md0 /mnt
# cp -pr /mnt/ "/pxeimage"
# umount /mnt
# mdconfig -d -u 0
引き続き、『/pxeimage』ディレクトリに移動して、以下のように実行します。
# find . -name '*.gz' | xargs gunzip
# cat kernel.gz.boot kernel.gz.a? | gzip -dc > kernel
# chmod +x kernel
# rm kernel.gz.*
これを実行しないと、loaderがgzipfsがらみでPANICしてしまい、上手く起動しません。
最後に、『/pxeimage/boot/loader.rc』に以下の行を追記します。
set vfs.root.mountfrom="ufs:/dev/md0c"
これでファイルの展開は完了です。
ThinkPad X60をPXEブートさせます。
ThinkPadロゴが表示されているときに、F12キーを押下すると、選択可能なブートメディアが表示されるので、5番を選択してPXEブートさせます。
しばらくすると、『Insert boot floppy and press Enter』と表示されるので、そのままエンターキーを押下します。
その後、またしばらくするとFreeBSDのブートメニュー画面が表示されます。ここで『6.Escape to loader prompt』を選択して、loaderプロンプトに落ちます。
ここで、以下のようにしてオプションの値を削除してからkernelを起動します。
OK set boot.nfsroot.path
OK set boot.nfsroot.server
OK boot
これを実行しないと、mfsrootをマウントした後にNFS rootがマウントされてしまい、kernelがPANICします。
通常のインストーラが立ち上がるので、『Custom』でインストールを開始します。
スライスを作成する際、ブートローダをインストールするか確認されるので、デュアルブートのために『NONE』を選択します。
あとはパーティションを作成したら、wキーを押下して全ての変更をHDDに反映させます。
ここまで完了したら、Ctrl + Alt + Deleteキーを押下してインストーラを『Abort』させます。
“ねこっちゃ”の『/tftpboot/6.2-RC2-amd64』ディレクトリに移動し、既存の『/pxeimage』ディレクトリを空にしてから、以下のようにして『/pxeimage』以下にファイルを展開します。
以下のコマンドは、全てのflpファイルを対象にして実行します。
# mdconfig -a -t vnode -u 0 -f "フロッピーイメージファイル名"
# mount /dev/md0 /mnt
# cp -pr /mnt/ "/pxeimage"
# umount /mnt
# mdconfig -d -u 0
次に、以下のようにして『pxeboot』ファイルを6.2-RC2/amd64の物に置き換えます。
# cp ./pxeboot ../.
引き続き、『/pxeimage』ディレクトリに移動して、以下のように実行します。
# find . -name '*.gz' | xargs gunzip
# cat kernel.gz.boot kernel.gz.a? | gzip -dc > kernel
# chmod +x kernel
# rm kernel.gz.*
# cat mfsroot.gz.boot mfsroot.gz.aa | gzip -dc > mfsroot
# rm mfsroot.gz.*
これを実行しないと、6.1-RELEASEのイメージ同様、loaderがgzipfsがらみでPANICしてしまい、上手く起動しません。
最後に、『/pxeimage/boot/loader.rc』に以下の行を追記します。
set vfs.root.mountfrom="ufs:/dev/md0c"
これでファイルの展開は完了です。
先ほど同様に、F12キーを押下してPXEブートさせます。
その後、5.1と同様にしてインストーラを起動します。
インストーラが起動したら、やはり『Custom』でインストールを開始します。
今回は、5.2で作成したパーティションにインストールするように選択して、インストールを進めます。
無事にインストールが完了すればThinkPad X60へのFreeBSD 6.2-RC2/amd64のインストールは成功です。
デュアルブートの方法などについては、インターネット上に色々と記事がありますので、そちらを参照してください。
FreeBSD 6.2-RC2/amd64の起動に成功したThinkPad X60
どさにっき 2006年12月16日(土):http://ya.maya.st/d/200612b.html