HP ProLiant MicroServer N40LにFreeBSDをインストールした際のメモ
機器構成
- モデル名
- HP ProLiant MicroServer N40L (250GBモデル)
- CPU
- AMD Turion II Neo N40L (1.5[GHz])
- チップセット
- AMD RS785E/SB820M
- メモリ
- 8[GB] (CFD W3U1333Q-4G)1
- NIC
- HP NC107i (Broadcom BCM5784)
- HDD
- HP VB0250EAVER HPG7 (250[GB])
準備
USBメモリからFreeBSDを起動して9.1-RELEASEのインストールを行う.このため,配布サイト2からメモリ・スティック用のイメージ(FreeBSD-9.1-RELEASE-amd64-memstick.img)を入手する.入手したイメージはdd(1)を使ってUSBメモリに書き込む.
# dd if=FreeBSD-9.1-RELEASE-amd64-memstick.img of=/dev/da0 bs=64k
インストール作業
『RootFS on ZFS in FreeBSD 9.1 on KVM』(Keep It Simple, Stupid)と『FreeBSD 9.1-RELEASE で ZFS Root FileSystem 環境を構築する』(完熟トマト)を参考にして,ほぼこの手順3でFreeeBSDのインストールを行った.
- ブート
- USBポートにUSBメモリを挿入し,電源ボタンを押してFreeBSDをブートする.
- “FreeBSD Boot Loader Menu"が表示されたら"Single User"を選択する.
- パーティションの作成
- GPTパーティションを新規に作成する.
# gpart create -s gpt ada0 - 64[KB]のブート・パーティションを作成する.
# gpart add -s 64K -t freebsd-boot -l boot0 ada0 - スワップ・パーティションを作成する.サイズは伝統に則り物理メモリ・サイズの2倍の16[GB]とする.
# gpart add -s 16G -t freebsd-swap -l swap0 ada0 - 残りは,ZFSファイルシステム・パーティションとする.
# gpart add -t freebsd-zfs -l disk0 ada0
- GPTパーティションを新規に作成する.
- ブートコードのインストール
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0 - ZFSストレージプールとデータセットの作成
- “/“に書き込めないので,代替ルートディレクトリとして”/media"を指定して,ストレージプール,データセットを作成する.
# zpool create -o altroot=/media rpool /dev/gpt/disk0 # zfs create rpool/root # zfs create rpool/root/tmp # zfs create rpool/root/usr # zfs create rpool/root/usr/local # zfs create rpool/root/var
- “/“に書き込めないので,代替ルートディレクトリとして”/media"を指定して,ストレージプール,データセットを作成する.
- FreeBSDのインンストール
- base, kernel, srcの各配布ファイルを展開する.
# tar xzpf /usr/freebsd-dist/base.txz -C /media # tar xzpf /usr/freebsd-dist/kernel.txz -C /media # tar xzpf /usr/freebsd-dist/src.txz -C /media
- base, kernel, srcの各配布ファイルを展開する.
- rc.conf, loader.confの作成
- ZFSブートのための設定をrc.conf, loader.confに追加する.
# echo 'zfs_enable="YES"' >> /media/root/etc/rc.conf # echo 'zfs_load="YES"' >> /media/root/boot/loader.conf # echo 'vfs.root.mountfrom="zfs:rpool/root"' >> /media/root/boot/loader.conf
- ZFSブートのための設定をrc.conf, loader.confに追加する.
- zfs.cacheの作成
- zfs.cacheはストレージプール認識のためOS起動時に読み込まれる.本来は/boot/zfsディレクトリに作成されるが,現時点では当該ディレクトリには書き込めないので,暫定的に/tmpに作成した後でコピーする.
# zfs unmount -a # zpool export rpool # mount -t tmpfs tmpfs /tmp # zpool import -o cachefile=/tmp/zpool.cache -o altroot=/media rpool # cp /tmp/zpool.cache /media/root/boot/zfs/ # zfs umount -a # umount /tmp
- zfs.cacheはストレージプール認識のためOS起動時に読み込まれる.本来は/boot/zfsディレクトリに作成されるが,現時点では当該ディレクトリには書き込めないので,暫定的に/tmpに作成した後でコピーする.
- ストレージプールの設定
- ZFSルート・ファイル・システムになるブート可能なデータセットを指定する.
# zpool set bootfs=rpool/root rpool
- ZFSルート・ファイル・システムになるブート可能なデータセットを指定する.
- ファイル・システムの設定
- 管理し易くするために作成したレベル1の階層(rpool)は自動マウントしない.
# zfs set mountpoint=none rpool - レベル2以下のマウント・ポイントをそれぞれ指定する.
# zfs set mountpoint=/ rpool/root # zfs set mountpoint=/tmp rpool/root/tmp # zfs set mountpoint=/usr rpool/root/usr # zfs set mountpoint=/usr/local rpool/root/usr/local # zfs set mountpoint=/var rpool/root/var
- 管理し易くするために作成したレベル1の階層(rpool)は自動マウントしない.
- スワップ・パーティションの指定
- スワップはZFS外のパーティションを使うのでfstabに記述する.
# echo "/dev/ada0p2 none swap sw 0 0" > /media/etc/fstab
- スワップはZFS外のパーティションを使うのでfstabに記述する.
- ZFSで起動可能かの確認
- zfsboottestというツールで確認できるのでインストールする.
# cd /media/usr/src/tools/tools/zfsboottest # make # make DESTDIR=/media install - zfsbootestを実行する.
# env PATH=$PATH:/media/usr/bin sh ./zfsboottest.sh rpool - 警告にしたがって,rpool/rootをlegacyにマウントするように変更する.
# cd ~ # zfs umount -a # zfs set mountpoint=legacy rpool/root
- zfsboottestというツールで確認できるのでインストールする.
- システムの停止と起動の確認
- システムの停止
# sync;sync;sync # shutdown -p now - USBメモリを取り外した後,電源ボタンを押して正常に起動することを確認する.
- システムの停止
その他,OSの設定
rootのパスワードやネットワークなどの設定を行う.passwd(1)を使ったり,エディタで設定ファイルを書き換えても良いが,sysinstall(8)のメニューから"Configure"を選び,画面に従って設定しても良い.以下に,/etc/rc.conf, /boot/loader.conf, /etc/make.confの設定例を挙げる.
- /etc/rc.conf4
defaultrouter="192.0.2.1" hostname="foo.example.com" ifconfig_bge0="inet 192.0.2.2 netmask 255.255.255.0" netwait_enable="YES" netwait_ip="192.0.2.1" netwait_if="bge0" # zfs_enable="YES" # powerd_enable="YES" powerd_flags="-a adp -n adp" - /boot/loader.conf
zfs_load="YES" vfs.root.mountfrom="zfs:rpool/root" amdtemp_load="YES" - /etc/make.conf
CPUTYPE=opteron-sse3