.ThinkPad X60に
FreeBSD 6.2-RC2/amd64をインストール


ThinkPad X60(Core 2 Duo搭載モデル)にFreeBSD 6.2-RC2のAMD64アーキテクチャ版をインストールしてみました。
かなり罠が満載でしたので、ここにまとめてみたいと思います。



1.前準備

 今回使用するThinkPad X60はWindows XPとのデュアルブートにします。そのため、FreeBSD用のパーティションをあらかじめ確保する必要があります。今回は、市販のパーティショニングツールを使用してFreeBSD用の領域を確保しました。ついでに、WindowsとFreeBSD間でファイルのやり取りが出来るように、2GBほどのFAT32の領域も作っておきました。

 

 

2.さて、インストーラをブート……失敗

 今回使用したマシンには、ウルトラベース(ドッキングステーション)が付いていません。つまり、ATA接続扱いの光学ドライブは一切無いことになります。
 ただ、内蔵ATA接続のドライブをUSB化するアタッチメントは手元にあったので、これを使ってブートを試みましたが……loaderからkernelがブートできませんでした。

 次に、USBのFDDを使用して、作成したインストールFDからのブートも試みましたが、こちらはloaderがハングアップしてしまい、続行不可能に。

 色々と調べてみると、どうやらThinkPad X60シリーズは、現状でFreeBSDのインストーラをUSBデバイスからブートできないようです。
 つまり、ウルトラベースX6とウルトラスリムベイ対応CD-ROMを持っていなければ、現状ではPXEブートでインストーラを上げなければならない事になります。

 

 

3.インストールの流れ

 色々とトライ&エラーを繰り返してみたところ、以下の手順で実施する必要があることが判りました。
 今回は、この手順に沿ってインストールを勧めていきます。

FreeBSD 6.1-RELEASE/i386のイメージでPXEブート

インストーラでスライス及びパーティションの作成まで実行する
(ラベル画面でwキーを押下して変更をcommitする)

インストールをキャンセルし、FreeBSD 6.2-RC2/amd64のイメージでPXEブート

先ほど確保したスライスとパーティションをいじらずにインストール

 最初に6.1-RELEASE/i386のイメージでブートし、パーティション作成まで行ってしまうのは、6.2-RC2/amd64のインストーラでは、上手く新規パーティションを作れなかったからです。
 そのため、このような二段階構成になっています。

 

 

4.PXEブートのための準備

 PXEブートを行うために必要なのは、以下の3つのサーバ機能です。

  ・DHCPサーバ
  ・TFTPサーバ
  ・NFSサーバ

 幸い、FreeBSDで稼働しているサーバが2台あるので、今回はサブサーバの“ねこっちゃ”にこれらの機能を実装することにします。

 

 

4.1.インストールに必要なファイルの準備

 今回、ブートに必要なファイルは以下の通りです。インストール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

 

 

4.2.DHCPサーバ

 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
subnet 192.168.0.0 netmask 255.255.255.0 {
        allow unknown-clients;
        ddns-updates off;
        filename "pxeboot";
        range dynamic-bootp 192.168.0.101 192.168.0.150;           # DHCPサーバで配布するアドレス範囲

        host rezearia-pxe.inverse.jp {                        # コンフィグ中の識別のためにユニークな物を設定
                option domain-name-servers DNSサーバのIPアドレス;
                option routers ゲートウェイのIPアドレス;
                next-server TFTPサーバ/NFSサーバのIPアドレス;
                ddns-updates off;                            # DNSレコードの動的更新は行わない
                filename "pxeboot";                          # コンピュータをブートするためのイメージファイル名
                option root-path "/pxeimage";                    # ブート後に読み込むNFS rootとなるディレクトリ名
                hardware ethernet 対象コンピュータのNICのMACアドレス;
                fixed-address 割り当てるIPアドレス;
                }
        }

 

 上記の黄色の部分は環境によって修正を要する箇所です。
 ここまで設定すると、ThinkPadをPXEブートしたときにDHCPサーバによりIPアドレスが割り当てられ、TFTPサーバに『pxeboot』というファイルを要求するようになります。

 

 

4.3.TFTPサーバ

 標準でインストールされますが、標準では無効になっています。『/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サーバの設定は完了です。

 

 

4.4.NFSサーバ

 細かい設定方法は他の場所に幾らでもありますので、そちらを参照してください。
 今回、必要な設定は、DHCPサーバの設定で『ブート後に読み込むNFS rootとなるディレクトリ名』と設定されたディレクトリのexportです。
 今回の場合は『/pxeimage』になります。このディレクトリを、DHCPで配布されたIPアドレスからマウント可能になるように設定します。

 

 

4.5.FreeBSD 6.1-RELEASE/i386のファイルの展開

 『/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"

 これでファイルの展開は完了です。

 

 

5.ThinkPadの起動

 ThinkPad X60をPXEブートさせます。
 ThinkPadロゴが表示されているときに、F12キーを押下すると、選択可能なブートメディアが表示されるので、5番を選択してPXEブートさせます。

 

 

5.1.FreeBSD 6.1-RELEASE/i386インストーラの起動

 しばらくすると、『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します。

 

 

5.2.FreeBSD 6.1-RELEASE/i386インストーラでパーティションの作成

 通常のインストーラが立ち上がるので、『Custom』でインストールを開始します。
 スライスを作成する際、ブートローダをインストールするか確認されるので、デュアルブートのために『NONE』を選択します。
 あとはパーティションを作成したら、wキーを押下して全ての変更をHDDに反映させます。

 ここまで完了したら、Ctrl + Alt + Deleteキーを押下してインストーラを『Abort』させます。

 

 

5.3.FreeBSD 6.2-RC2/amd64のファイルの展開

 “ねこっちゃ”の『/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"

 これでファイルの展開は完了です。

 

 

5.4.再度ThinkPad X60をPXEで起動

 先ほど同様に、F12キーを押下してPXEブートさせます。
 その後、5.1と同様にしてインストーラを起動します。

 

 

5.5.FreeBSD 6.2-RC2/amd64をインストール

 インストーラが起動したら、やはり『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


インバース亭トップページへ戻る