http://www.freebsd.org/doc/ja_JP.eucJP/articles/fbsd-from-scratch/ 暫定まとめ

暫定ですが、まとめとシェルスクリプトを置いておきます。
より汎用的にするために何かご意見等ありましたらコメントへお願いします。

スライス、ラベルの構成

HP ML115 G1 サーバでの構成例です。
以後はこの構成で話を進めていきます。

ブートに関して

FreeBSD の起動シーケンスは三段階に分かれています。

BootManager 有り

  1. BIOS
  2. MBR
  3. /boot/boot0
  4. /boot/boot1
  5. /boot/boot2
  6. /boot/loader
  7. /boot/kernel/kernel

BootManager 無し

  1. BIOS
  2. MBR
  3. /boot/mbr
  4. /boot/boot1
  5. /boot/boot2
  6. /boot/loader
  7. /boot/kernel/kernel

このうち、今回採用するのは BootManager 無しの方です。
BootManager は起動セクタを選択できるのですが、説明の便弁上、今回は BootManager 無しでいきます。
起動シーケンスを理解出来ている方は BootManager 有りでも良いかもしれません。

また、スライス 3 の /newroot ( installworld のターゲット先 ) は bsdlabel -e などで /dev/ad4s3a などにしておいてください。これをやらないとブートができません。

スライス 1
ラベル マウントポイント 容量 備考
ad4s1a / 2G
ad4s1b swap 2G メモリ 2 倍
ad4s1d /var 4G
ad4s1e /tmp 1G ln -s /var/tmp /tmp
ad4s1f /usr 4G
スライス 2
ラベル マウントポイント 容量 備考
ad4s2d /src 2G mount_nullfs /src/stable.7 /usr/src
ad4s2e /obj 2G mount_nullfs /obj/stable.7 /usr/obj
ad4s2f /ports 2G mount_nullfs /ports/current /usr/ports
ad4s2g /jails 8G
スライス 3
ラベル マウントポイント 容量 備考
ad4s3a /newroot 4G
スライス 4
ラベル マウントポイント 容量 備考
ad4s4d /export 残り全部 ユーザ情報や設定ファイルなどを格納

作業内容

基本は下記のような作業内容になります。

第一段階: スライス 1 で起動
  1. build{world,kernel}
  2. install{kernel,world} DESTDIR=/mnt/newroot
  3. /mnt/newroot/etc/fstab の編集
    • スライス 3 の / ( ルート ), スライス 2 の /src ( /usr/src ), /obj ( /usr/obj ) を記述
  4. 必要なら rc.conf 、make.conf 、 src.conf をコピー
第二段階: スライス 3 で起動
  1. スライス 1 ( /, /var, /tmp, /usr ) をフォーマット
  2. スライス 1 をマウント ( /mnt/root, /mnt/root/var, /mnt/root/tmp, /mnt/root/usr )
  3. install{kernel,world} DESTDIR=/mnt/root
  4. /mnt/root/etc/fstab の編集
    • スライス 1 の / ( ルート ), /var, /tmp, /usr スライス 2 の /src, /obj, /ports スライス 4 の /export を記述
  5. タイムゾーンの設定
  6. 管理ユーザの追加 ( 公開鍵の登録も )
第三段階: スライス 1 で起動
  1. システムの設定 ( rc.conf etc... )
  2. ports インストール
  3. ports 設定
  4. 後はその他の細かい設定や jail の設定などなど

シェルスクリプト

下記にシェルスクリプトが置いてあります。

http://svn.sourceforge.jp/svnroot/cocelo-style/platform/freebsd/freebsd-from-scratch/

ベースとなったシェルスクリプトhttp://www.freebsd.org/doc/ja_JP.eucJP/articles/fbsd-from-scratch/ なので、こちらの説明、及び注意事項に目を通しておいてください。
fetch や wgetsvn co でファイルを取得後、各自の設定を施してください。
また、これらのシェルスクリプトはあくまでもサンプルとしてのものなので、カスタマイズありきという事を念頭にお願いします。

stage1.sh と stage_1.conf

これは以下の順番で実行されています。

  • ${DESTDIR} のフォーマット、マウント
  • make distrib-dirs DESTDIR=${DESTDIR}
  • 設定ファイルのコピー ( passwd, group 含む )
  • make installworld DESTDIR=${DESTDIR}
  • make installkernel DESTDIR=${DESTDIR} KERNCONF=${KERNCONF}
  • ${DESTDIR}/etc/fstab の設定と Time zone の設定

確実に変更する必要があるのは stage_1.conf です。
ファイルシステムのフォーマットやマウント、 fstab の設定は必ず変更して下さい。

stage2.sh と stage_2.conf

これは ports/package のインストールです。
カテゴリ 名前 オプションのように指定します。

lang		perl5.8		WITH_THREADS=yes

また、 stage2.conf の下記の変数は各自の環境によって異なると思いますので、各自確認をお願いします。

DBDIR="/var/db/pkg"
PORTS="/ports/current"
PACKAGES="/ports/packages"
LOGDIR="/var/log/ports"; mkdir -p ${LOGDIR}
PKG_PATH="${PACKAGES}/All"
PKG=
stage3.mk

これはインストール後の ports に行う設定などです。
Makefile なので、自由に編集する事ができます。
詳細は make(1) をご覧ください。

今後の予定

stage1.sh の create_file_systems () と create_etc_fstab() の分離。
stage3.mk から stage3.mk.local のインクルード。