HP ProLiant MicroServer N40LFreeBSDをインストールした際のメモ

機器構成

モデル名
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のインストールを行った.

  1. ブート
    • USBポートにUSBメモリを挿入し,電源ボタンを押してFreeBSDをブートする.
    • “FreeBSD Boot Loader Menu"が表示されたら"Single User"を選択する.
  2. パーティションの作成
    • 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
      
  3. ブートコードのインストール
    # gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
    
  4. 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
      
  5. 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
      
  6. 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
      
  7. 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
      
  8. ストレージプールの設定
    • ZFSルート・ファイル・システムになるブート可能なデータセットを指定する.
      # zpool set bootfs=rpool/root rpool
      
  9. ファイル・システムの設定
    • 管理し易くするために作成したレベル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
      
  10. スワップ・パーティションの指定
    • スワップはZFS外のパーティションを使うのでfstabに記述する.
      # echo "/dev/ada0p2 none swap sw 0 0" > /media/etc/fstab
      
  11. 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
      
  12. システムの停止と起動の確認
    • システムの停止
      # 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
    

  1. 公式にはECC対応なメモリが必要だが,non-ECCでも動作する. ↩︎

  2. または,ミラー・サイト. ↩︎

  3. 各パーティションのサイズとスワップ領域マウントのためのfstabの記述などは異なる. ↩︎

  4. IPアドレス,ドメイン名は例示用.各種デーモンの起動設定は省略. ↩︎