bsdinstallを使ったFreeBSDの自動インストールについて[基本編] - くんすとの備忘録 の続き。今度は、bsdinstallを使ってZFSへインストールする方法を調べてみます。

ZFSの自動レイアウトでインストールする

マニュアルに記載されているように、前半(preamble)へ、環境変数「PARTITIONS」の代わりに「ZFSBOOT_DISKS」を記述すればZFSへインストールすることができます。ただし、以下の2点の注意が必要です。

  • 自動インストールする場合は、環境変数「nonInteractive」の設定も行う
  • 環境変数「ZFSBOOT_DISKS」と「nonInteractive」はexportする
特に2点目については注意が必要です。
(freebsd/script at master · freebsd/freebsd · GitHubを覗いてみた感じではおそらく、DISTRIBUTIONSはexportされていたのにZFSBOOT_DISKSなどはexportされていなかったので、それが原因かと……)

前半(preamble)

1
2
3
4
export ZFSBOOT_DISKS=ada0
export nonInteractive="YES"
DISTRIBUTIONS="base.txz kernel.txz"

上記の設定では、デフォルト設定でZFSパーティションが作成されました。

  • ディスク:ada0
  • デバイスタイプ:stripe
  • プール名:zroot
  • パーティションスキーム:GPT
  • スワップサイズ:2G
  • マウントポイント
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
zroot                 none
zroot/ROOT            none
zroot/ROOT/default    /
zroot/tmp             /tmp
zroot/usr             /usr
zroot/usr/home        /usr/home
zroot/usr/ports       /usr/home
zroot/usr/src         /usr/home
zroot/var             /var
zroot/var/crash       /var/crash
zroot/var/log         /var/log
zroot/var/mail        /var/mail
zroot/var/tmp         /var/tmp

ZFSのカスタムレイアウトでインストールする

環境変数「ZFSBOOT_DATASETS」を設定することで、自由にZFSレイアウトを作成できるようです。とりあえず、/・/tmp・/usr・/varで分割してみます。

前半(preamble)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
export ZFSBOOT_DISKS=ada0
export ZFSBOOT_DATASETS="
    /ROOT                mountpoint=none
    /ROOT/default        mountpoint=/

    /tmp        mountpoint=/tmp,exec=on,setuid=off
    /usr        mountpoint=/usr,canmount=off
    /var        mountpoint=/var,canmount=off
" 
export nonInteractive="YES"
DISTRIBUTIONS="base.txz kernel.txz"

上記の設定では、以下の設定でZFSパーティションが作成されました。

  • マウントポイント
1
2
3
4
5
6
zroot                 none
zroot/ROOT            none
zroot/ROOT/default    /
zroot/tmp             /tmp
zroot/usr             /usr
zroot/var             /var

※自動インストール時のZFS設定の詳細は、zfsbootのソースコード(freebsd/zfsboot at master · freebsd/freebsd · GitHub)を確認すると良いと思います。

参考URL