FreeBSD 8.0RC2 amd64 pure ZFS install

通常のインストール方法を使わずに fixit 機能を使うことで、HDD1台で pure ZFS 環境を構築します。
結構面倒ですが、HDD2台使ったり、UFS の FreeBSD環境のパーティションを切ったりしないで、全ての領域を ZFS 環境に出来るので手間を掛ける価値はあるかと思います。



インストール用 USBメモリの作成

  • MS Windows パソコンで memstick 起動ファイルの作成
    適当なミラーサイトから 8.0-RC2-amd64-memstick.img をダウンロードします。
    別に dvd や cd のディスクイメージからでも以下の作業は行えるはずですが、 適当なドライブが無いので新しく用意されたメモリスティックイメージを使います。
    ダウンロード後に DDforWindows を使って 8.0-RC2-amd64-memstick.img を USBメモリに書き込みします。
    雰囲気で判ると思いますが、使い方は DDforWindows のページを参照してください。

インストール準備

  • インストールするサーバ機へ接続
    上で書き込んだ USBメモリと、USBキーボードをマザー背面 USBスロットへ接続します。
    これは固有の問題ですが、なぜかUSBキーボードは、マザーボードの背面 LAN 直下の USBスロット上側じゃないとダメ。
    たまにそのままでは使えず、USBキーボードの抜き差しすると使えるようになる。
    増設した intel LANカード側に LANケーブルを接続する。
    HDMIケーブルで液晶テレビに接続する。
    サーバ機の電源ONする。

memstick イメージから起動

BIOS設定をUSBから起動にしてある事を確認。問題無ければいつものインストール画面が出てくる。

  • Country Selection
    110 Japan を選択
  • System Console Keymap
    Japanese 106 を選択
  • sysinstall Main Menu
    fixit を選択
  • Please choose a fixit option
    USB を選択
    Message が出るので OK すると Fixit# のコマンドプロンプト画面に変わります。

パーティショニング

  • デバイスのマウント後、chroot する。
    mount -t devfs devfs /dist/dev
    chroot /dist tcsh
  • 接続ドライブの確認
    dmesg | grep "MB <"
    ad4: 152627MB <WDC WD1600BEVT-22ZCT0 11.01A11> at ata2-master SATA300 のように出ます
  • 接続した HDD が ad4 とわかるので、ここの領域確保をします。
    zfs を boot させるには今までの MBRのパーティション形式ではダメらしいので、 GPT(GUIDパーティションテーブル)を使って ad4 をパーティショニングします。
     
  • テーブル初期化
    dd if=/dev/zero of=/dev/ad4 bs=1m count=1
  • カーネル zfs.ko の読み込み
    kldload zfs.ko
  • カーネルの確認
    kldstat
    zfs.ko と opensolaris.ko があればOK
  • GPT スキームの作成
    gpart create -s GPT ad4
    ad4 created と出ればOK
  • ブートストラップコードを保護された MBR に埋め込み
    gpart bootcode -b /boot/pmbr ad4
    ad4 has bootcode と出ればOK
  • FreeBSD をブートできる専用の freebsd-boot パーティションを作成
    gpart add -b 34 -s 128 -t freebsd-boot ad4
    ad4p1 added と出ればOK
  • ブートストラップコードをインストール
    gpart bootcode -p /boot/gptzfsboot -i 1 ad4
  • パーティション情報の確認
    gpart show ad4
  • 上のコマンドで下記のような結果が表示されます。
    今回は 160GB の HDD を使っているので boot 用に 64K だけ使われ、残り 149G となっている。
    =>       34  312581741  ad4  GPT  (149G)
             34        128    1  freebsd-boot  (64K)
            162  312581613       - free -  (149G)
  • ZFS パーティションの作成
    個人的に全領域全て使うのは嫌いなので、148G を指定する。 全部使うなら「-s 312581613」を指定する。
    gpart add -b 162 -s 148g -t freebsd-zfs ad4
    ad4p2 added と出ればOK
  • パーティション情報の確認
    gpart show ad4
    =>       34  312581741  ad4  GPT  (149G)
             34        128    1  freebsd-boot  (64K)
            162  310378496    2  freebsd-zfs  (148G)
      310378658    2203117       - free -  (1.1G)
  • chroot 環境を出る
    /dist 内は readonly なので、この後の mountpoint 作成時に失敗する為。
    exit
  • ZFS ストレージプールの作成
    zpool create pzkw /dev/ad4p2
  • ZFS ファイルシステムの作成
    zfs create pzkw/system
    zfs create pzkw/system/home
    zfs create pzkw/system/usr
    zfs create pzkw/system/usr/src
    zfs create pzkw/system/var
  • スワップデバイスの設定
    zfs create -V 8gb pzkw/swap
    zfs set org.freebsd:swap=on pzkw/swap
  • 使用容量制限の設定
    zfs set quota=10g pzkw/system/home
    zfs set quota=8g pzkw/system/usr
    zfs set quota=1g pzkw/system/usr/src
  • 確認
    zfs list
  • 上のコマンドで下記のような結果が表示されます。
    NAME                  USED  AVAIL  REFER  MOUNTPOINT
    pzkw                 8.00G   137G    19K  /pzkw
    pzkw/swap               8G   145G    16K  -
    pzkw/system            95K   137G    22K  /pzkw/system
    pzkw/system/home       18K  10.0G    18K  /pzkw/system/home
    pzkw/system/usr        37K  8.00G    19K  /pzkw/system/usr
    pzkw/system/usr/src    18K  1024M    18K  /pzkw/system/usr/src
    pzkw/system/var        18K   137G    18K  /pzkw/system/var
  • 圧縮の設定
    zfs set compression=gzip-1 pzkw/system/usr/src
  • 確認
    zfs list -o name,used,available,compress,compressratio
    ---------- このような結果が出ます ----------------------------
    NAME                  USED  AVAIL  COMPRESS  RATIO
    pzkw                 8.00G   137G       off  1.00x
    pzkw/swap               8G   145G       off  1.00x
    pzkw/system            95K   137G       off  1.00x
    pzkw/system/home       18K  10.0G       off  1.00x
    pzkw/system/usr        37K  8.00G       off  1.00x
    pzkw/system/usr/src    18K  1024M    gzip-1  1.00x
    pzkw/system/var        18K   137G       off  1.00x

OSのインストール

たぶん通常のインストール方法だった場合の、最小環境 (minimal install) と全ソースを選んだ状態にしているつもりです。

  • 環境変数セット
    export DESTDIR='/pzkw/system'
    echo $DESTDIR
  • base のインストール
    cd /dist/8.0-RC2/base
    ./install.sh
    
    You are abount....into /pzkw/system - are you SURE.....installed system (y/n)?
    y 返答
  • kernel のインストール
    cd /dist/8.0-RC2/kernels
    ./install.sh generic
    cd $DESTDIR/boot
    rmdir kernel
    mv GENERIC kernel
  • src のインストール
    cd /dist/8.0-RC2/src
    ./install.sh all
  • 環境変数アンセット
    unset DESTDIR
    echo $DESTDIR

ブートローダの再構築

将来的には、この下の作業は無くなると思いたいですが、今のところ LOADER_ZFS_SUPPORT を付けて システム再構築 (/boot/loader再構築?) しないと pure zfs 起動出来ないらしい。

  • 設定前準備
    mount -t devfs devfs /pzkw/system/dev
    chroot /pzkw/system tcsh
  • make.conf の設定
    echo 'LOADER_ZFS_SUPPORT="yes"' > /etc/make.conf
  • 現在の loader 確認
    ls -al /boot/loader
    -r-xr-xr-x  1 root   wheel  233472 Oct 25 06:46 /boot/loader
  • ZFS 対応 loader の再構築
    cd /usr/src/sys/boot/
    make clean
    make obj
    make depend
    make
    cd i386/loader
    make install
    
    install: /usr/share/man/man5: No such file or directory
    *** Error code 71
    で終わってしまうが、必要な /boot/loader は置き換わっているのでOK
  • 置き換わった loader 確認
    ls -al /boot/loader
    -r-xr-xr-x  1 root   wheel  253952 Oct 28 19:44 /boot/loader
    ファイルサイズが変わっていればたぶん成功

各コンフィグ設定

  • sysinstall の起動
    sysinstall
  • sysinstall Main Menu
    Configure を選択
  • FreeBSD Configuration Menu
    Root Password を選択
  • Changing local password for root
    New Password: ******
    Retype New Password: ******
  • FreeBSD Configuration Menu
    User Management を選択
  • User and group management
    • Group を選択
      Group name:    hogege
      GID:           1001(初期値)
      Group members: 無し
  • User を選択
    Login ID:       hogege
    UID:            1001(初期値)
    Group:          1001
    Password:       ******
    Confirm Password:  ******
    Full name:      User &(初期値)
    Member groups:  wheel
    Home directory: /home/hogege (自動的に記述される)
    Login shell:    /bin/tcsh
    ok 後 exit で終了
  • FreeBSD Configuration Menu
    Time Zone を選択
  • Is this machine's COMS..... please choose NO here!
    No  を選択
  • Time Zone Selector
    5 Asia  を選択
    18 Japan  を選択
  • Does the abbreviation `JST' look reasonable?
    Yes を選択
  • FreeBSD Configuration Menu
    Networking を選択
  • Network Services Menu
    Interfaces を選択
  • Network interface information required
    em0 選択
  • User Confirmation Requested
    • Do you want... IPv6 ...of the interface?
      No  を選択
  • Do you want... DHCP ...of the interface?
    No  を選択
  • Network Configuration
    Host:          fbsd80rc2.internal.wirednoize.net
    Domain:        internal.wirednoize.net (自動的に記述される)
    IPv4 Gateway:  10.100.90.1
    Name server:   10.100.90.1
    IPv4 Address:  10.100.90.1
    Netmask:       255.255.255.0 (自動的に記述される)
    Extra options: なし
  • World you like to bring the em0 interface up right now
    No  を選択
  • Network Services Menu
    Exit  を選択
  • FreeBSD Configuration Menu
    Exit  を選択
  • sysinstall Main Menu
    tab キーを押して Exit Install
    fixit のコマンドプロンプトに戻ります。
  • セキュアログインを可能にします。
    echo 'sshd_enable="YES"' >> /etc/rc.conf
  • カーネルのクラッシュダンプを取らない
    echo 'dumpdev="NO"' >> /etc/rc.conf
  • Cool'n'Quiet の有効化
    echo 'cpufreq_load="YES"' >> /boot/loader.conf
    echo 'powerd_enable="YES"' >> /etc/rc.conf
  • chroot 環境から出ます
    exit
  • デバイスのアンマウント
    umount /pzkw/system/dev

pure zfs boot の設定

  • ブートファイルシステムの設定
    ZFS プール pzkw にブートする ROOT データセット(ファイルシステム)を設定します。
    zpool set bootfs=pzkw/system pzkw
  • zpool.cache の更新して、ZFS BOOT 環境にコピーします。
    mkdir /boot/zfs
    zpool export pzkw && zpool import pzkw
    cp /boot/zfs/zpool.cache /pzkw/system/boot/zfs/
  • rc.conf の設定
    echo 'zfs_enable="YES"' >> /pzkw/system/etc/rc.conf
  • loader.conf の設定
    echo 'zfs_load="YES"' >> /pzkw/system/boot/loader.conf
    echo 'vfs.root.mountfrom="zfs:pzkw/system"' >> /pzkw/system/boot/loader.conf
  • 任意の loader.conf の設定
    メモリ量と相談しながら、良い感じに設定する。 しなくてもOK
    echo 'vm.kmem_size="1536M"' >> /pzkw/system/boot/loader.conf
    echo 'vm.kmem_size_max="1536M"' >> /pzkw/system/boot/loader.conf
    echo 'vfs.zfs.arc_max="512M"' >> /pzkw/system/boot/loader.conf
  • fstab の編集
    echo 'pzkw/system / zfs rw 0 0' > /pzkw/system/etc/fstab
  • 自動マウントされないようにする
    zfs set mountpoint=none pzkw
  • マルチユーザ・シングルユーザモードに切り替え時に文句を言われないようレガシーモードにする
    zfs set mountpoint=legacy pzkw/system
  • マウントポイントの変更
    zfs set mountpoint=/home    pzkw/system/home
    zfs set mountpoint=/usr     pzkw/system/usr
    zfs set mountpoint=/usr/src pzkw/system/usr/src
    zfs set mountpoint=/var     pzkw/system/var
  • fixit の終了
    exit
  • sysinstall Main Menu
    tab キーを押して Exit Install
  • Are you sure you wish to exit?
    Yes  を選択
    reboot かかったら USBメモリ と USBキーボード と HDMI のケーブルを抜く

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-10-29 (木) 16:15:58 (309d)