前回(FreeBSDをワンライナーでインストールしてみた、の解説 - くんすとの備忘録)に引き続き、bsdinstallネタです。bsdinstallにはいくつかのターゲットがありますが、とりあえずぜんぶ試してみましょう。
※どんなターゲットがあるのかは、マニュアル(bsdinstall(8))を参照です。

### 前準備 一旦マルチユーザーモードでログインして、それからshellに移行します。
(/tmpや/varをマウントしてくれるので…)その後、DHCP設定をします。 ``` dhclient -l /tmp/dhclient.lease.em0 em0 ```必要に応じてキーボード配列を変更しておきます。 ``` kbdmap ```
### マニュアルに載っている順番に、各種ターゲットを試す
#### bsdtinstall auto

キーマップの選択が出てきました。
オプションなしで実行した時と同じです。

#### bsdinstall entropy ソースによると、 ``` dd if=/dev/random of=$BSDINSTALL_CHROOT/entropy bs=4096 count=1 ```するらしいです。bsdinstall mountしてから実行すると、/mnt/entropy が作成されました。
#### bsdinstall jail <destination> jail環境を作成します。
※構築済みのFreeBSD環境で実施しました。 ``` mkdir -p /usr/freebsd-dist mkdir aaa bsdinstll jail aaa ```(./aaa にjail環境を構築する)



./aaa にFreeBSD Jail環境が構築されました。
#### bsdinstall script 前回の記事(FreeBSDをワンライナーでインストールしてみた、の解説 - くんすとの備忘録)で使用したので割愛。

#### bsdinstall keymap キーボード選択のみを行います。
設定ファイルが/tmp/bsdinstall_etc/以下に出力されました。
#### bsdinstall hostname ホスト名の設定のみを行います。
設定ファイルが/tmp/bsdinstall_etc/以下に出力されました。
#### bsdinstall netconfig ネットワーク設定のみを行います。

設定ファイルが/tmp/bsdinstall_etc/以下に出力されました。
#### bsdinstall autopart パーティションの設定のみを行います。
※パーティションの切り方は自動です

パーティション情報が書き込まれ、設定ファイルが/tmp/bsdinstall_etc/以下に出力されました。
#### bsdinstall zfsboot zfsの設定のみを行います。
パーティション情報が書き込まれ、設定ファイルが/tmp/bsdinstall_etc/と/tmp/bsdinstall_boot/以下に出力されました。

#### bsdinstall partedit パーティションの設定のみを行います。
※autopartとは異なり、こちらはパーティションの切り方は手動設定です。

パーティション情報が書き込まれ、設定ファイルが/tmp/bsdinstall_etc/以下に出力されました。
#### bsdinstall scriptedpart <parameters> パーティションの設定をコマンドラインで指定して設定します。 ``` bsdinstall scriptedpart ada0 { 512M freebsd-ufs /, 512M freebsd-swap, 512M freebsd-ufs /var, auto freebsd-ufs /usr } ```

パーティション情報が書き込まれ、設定ファイルが/tmp/bsdinstall_etc/以下に出力されました。
#### bsdinstall mount /tmp/bsdinstall_etc/fstab にしたがって、/mnt以下にディスクをマウントします。

マウント後、/tmp/bsdinstall-tmp-fstab が作成されました。
#### bsdinstall distfetch ディストリビューションのアーカイブをダウンロードします。環境設定を行ってから実行 ``` export FTP_PASSIVE_MODE=YES export DISTRIBUTIONS="base.txz kernel.txz" export BSDINSTALL_DISTDIR=/mnt/usr/freebsd-dist export BSDINSTALL_DISTSITE=ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/10.0-RELEASE mkdir -p /mnt/usr/freebsd-dist bsdinstall distfetch ```
base.txzとkernel.txzが、/mnt/usr/freebsd-dist に落ちてきました。
#### bsdinstall checksum ダウンロードしたディストリビューションのアーカイブのチェックサムを検証するらしいですが、何も起こらず……
ちょっとよくわかりません。。。
#### bsdinstall distextract ダウンロードしたディストリビューションのアーカイブを解凍します。

bsdinstall distfetchで取ってきたアーカイブが/mnt以下に展開されました。
なお、/mnt/usr/freebsd-dist以下は残っている様子。
#### bsdinstall rootpass 新環境で、rootユーザのパスワードを設定します。
※/mnt 以下にシステムが存在しないとちゃんと動かない模様
/mnt/etc 以下のパスワード関連のファイルが更新されました
#### bsdinstall adduser 新環境で、ユーザの追加を行います。
※/mnt 以下にシステムが存在しないとちゃんと動かない模様

/mnt/home以下にホームディレクトリが作成されていました。
#### bsdinstall time 新環境の日付と時刻を合わせます。
※/mnt 以下にシステムが存在しないとちゃんと動かない模様

/mnt/etc 以下の時刻関連のファイルが更新されました
#### bsdinstall services サービスの選択のみを行います。
設定ファイルが/tmp/bsdinstall_etc/以下に出力されました。
#### bsdinstall config /tmp/bsdinstall_etcや/tmp/bsdinstall_boot内のファイルを新環境へコピーします。
※/mnt 以下にシステムが存在しないとちゃんと動かない模様

rc.conf~がrc.confに統合され、新環境に上書きされました。

### まとめ bsdinstallの日本語情報があまり見当たらなかったので、この記事が何かの参考にでもなれば幸いです。……酔狂ではある。。。