現在ではFreeBSD-updateを使っていますのでmake worldしていません。 このため下記のコンテンツは現状に即していない可能性がありますが更新されません(2005/05/01)
わたしの環境では Libretto70 (Pentium MMX 120 Mhz,HDD 1.6GB) が サーバとなってがんばってくれています。 しかし Libretto 70 ではmake worldするディスクも時間もありません^^
しかし OpenSSL で Security Advisory がでるとmake worldが 必要となってしまい、そのたびに SNAPSHOT から OS を再インストール していました(しかも1年に数回あった年もありました、しくしく)
そのうち Libretto 以外にも FreeBSD が増殖してきましたがいずれも make world するだけのディスクはないというのはしくしくな状況になってしまいました。
Desktop の WindowsXP には HDD があまっていましたのでこち らで make world 用のマシンを立ち上げてみました。
書いてみたらハンドブックの「複数のマシンで追っかける」をほとんどそのままですね、違う点は実際のファイルも掲載しているということでしょうか。
以下のような構成で VM を作成しました
| VMwareバージョン | 4.5.1 build-7568 |
| memory | 256MB |
| HDD | 4.0GB |
| デバイス | Audioなし/USBなし |
いずれかの FTP サイトから起動イメージをダウンロードしてきます。 すぐ4-stableにアップグレードするのでフルパッケージはいりません、 4.9-i386-mini.isoをダウンロードしてきましょう。
例) ftp://ftp2.jp.FreeBSD.org/pub/FreeBSD/releases/i386/ISO-IMAGES/4.9/4.9-i386-mini.iso (206MB)
インストール方法は Custom を選択します
| Partition | 領域 | すべて & Set Bootable |
| BootManager | BootMgr | |
| Label | / | 3839M |
| swap | 256M | |
| Distributions | Minimal | |
| Media | FTPを選択 | FTPサイトは適切に |
| Network interface | lnc0 | |
| ネットワークの設定 | 適切に |
参考) blanktime="off" defaultrouter="xx.xx.xx.xx" hostname="xxxxxxx" ifconfig_lnc0="inet xx.xx.xx.xx netmask 0xffffff00" kern_securelevel_enable="NO" keymap="jp.106" nfs_server_enable="YES" # 後のために NFS Server も起動しておきます nfs_reserved_port_only="YES" rpc_lockd_enable="YES" portmap_enable="YES" sendmail_enable="NONE" # いらないので sendmail は停止させます sshd_enable="YES" # sshd を使用できるようにします
X を使うわけではないので VMware-tools のインストールは行っていません。
ここで上記を反映させるためにいったん再起動します
cvsupで4-stableのソースを取り寄せます。いまインストールした FreeBSD の /usr/share/examples/cvsup/stable-supfile にサンプルがありますからこれを参考にして自分の supfile を作成します。supfile についてはハンドブックの 「CVSupを使う」を参考にしてください。
例) *default host=cvsup4.jp.FreeBSD.org <- 適切に選んでください *default base=/usr *default prefix=/usr *default release=cvs *default tag=RELENG_4 *default delete use-rel-suffix cvsroot-all <-- サンプルに追加しました src-all doc-all <-- サンプルに追加しました
わたしは履歴を残すために以下のような簡単なスクリプトを実行して 4-stable のソースと同期をとっています。
# mkdir /var/log/cvsupdate <- ログ用のディレクトリを作成する # sh cvsupdate (どれくらいかかるかは忘れました...)
cvsupdate の内容 #!/bin/sh filename=/var/log/cvsupdate/`date +"%Y%m%d"`.log echo start script log to $filename echo --- start cvsup --- >> $filename echo `date` >> $filename cvsup -g -L 2 /etc/cvsupfile >> $filename 2>&1
make.conf と(Libetto 用の) Kernel config file を作成します。 以下の項目をカスタマイズしてるだけでほとんどデフォルトです。
例) make.conf
#
# name: /etc/make.conf
#
# Created: 2002/04/12 Yuji Tanaka
# Notes:
#
# To configure Kernel configuration file
KERNCONF=GENERIC <-- ちなみに build マシンは GENERIC です
#KERNCONF=IPFW <-- Libretto 用の config file です
<-- まずはコメントアウトしています
# To configure C Compiler options
#CFLAGS=-O -pipe
#COPTFLAGS=-O -pipe
# To avoid building various parts of the base system:
#NO_SHAREDOCS= true # do not build the 4.4BSD legacy docs
#NO_X= true # do not compile in XWindows support (e.g. doscmd)
NOGAMES= true # do not build games (games/ subdir)
NOINFO= true # do not make or install info files
NOPROFILE= true # Avoid compiling profiled libraries
COMPAT4X= yes
SUP_UPDATE= yes
SUPFLAGS= -g -L 2
SUPHOST= cvsup2.jp.FreeBSD.org
SUPFILE= /etc/cvsupfile
PORTSSUPFILE= /etc/cvsupfile
DOCSUPFILE= /etc/cvsupfile
ここでは build マシンに注目しているので Libretto 用の kernel config file については割愛します。
コンソールから make buildworld を実行します。make world についてはハンドブックの「make worldの利用」を参考にしてください。
# script /var/log/makeworld/yyyymmdd.log # cd /usr/obj # chflags -R noschg usr # rm -rf usr # cd ../src # time make buildworld (HostOS が Celeron 2.0GHz で 2時間くらいでしょうか) # make buildkernel (HostOS が Celeron 2.0GHz で 30 分くらいでしょうか)
ここで VMware の機能で「Save Snapshot」を行います。万が一起動しな かったときに簡単に戻せるようにです。
# time make installkernel # time make installworld (HostOS が Celeron 2.0GHz で 9 分くらいでしょうか) # mergemaster # cd /usr/src/release/sysinstall # make all install
再起動してちゃんと起動してくることを確認します。起動しなかった ら VMware の機能で「Revert Snapshot」してインストール前に戻して ください。
make.conf を書き換えて Libretto 用 kernel を作成します
例) make.conf # To configure Kernel configuration file #KERNCONF=GENERIC <-- コメントアウトします KERNCONF=IPFW <-- 有効にします
# make buildkernel
/etc/exports を記述します。かなり「ざる」な設定になっていますが build 用のマシンは常に起動しているわけでもないのでかまわないということに しています。
例) /etc/exports / -alldirs -maproot=0 <Librettoのホスト名> 例) /etc/hosts xx.xx.xx.xx <Librettoのホスト名>
すでに /etc/rc.conf には NFS Server を起動するように記述してありま すので再起動を行うと mountd, nfsd, portmap などが起動するはずです。 再起動して、NFS関連のプロセスが起動していることを確認してください (または rc.network を見て手動で起動してください)。
NFS関連のプロセス) # ps ax PID TT STAT TIME COMMAND 66 ?? Is 0:00.02 /usr/sbin/portmap 68 ?? Is 0:00.05 mountd -r 71 ?? Is 0:00.04 nfsd: master (nfsd) 73 ?? I 0:00.02 nfsd: server (nfsd) 74 ?? I 0:00.01 nfsd: server (nfsd) 75 ?? I 0:00.01 nfsd: server (nfsd) 76 ?? I 0:00.00 nfsd: server (nfsd) 77 ?? Is 0:00.01 rpc.lockd 79 ?? Is 0:00.01 rpc.statd
Libretto から NFS mount してみます。
# mkdir /usr/obj /usr/src (もし存在しなければ) # mount -t nfs <build 用 FreeBSD>:/usr/obj /usr/obj # mount -t nfs <build 用 FreeBSD>:/usr/src /usr/src
ls /usr/src などとやって mount できていることを確認してください。
installkernel するときは make.conf が build 用 FreeBSD と同じであり、 KERNCONF=IPFW (Libretto 用 kernel) が有効になっていることを確認して ください。
# time make installkernel (3分くらいでしょうか) # time make installworld (30分くらいでしょうか)
ハンドブックによるとシングルユーザモードで行わなければいけないこと になっていますが 4-stable でパッチをあてる目的程度でしたらマルチ ユーザモードでも問題ないようです。というかシングルユーザモードで やったことありません(いばることじゃありませんが)
# cd / # rm -rf etc.old (存在していれば) # cp -Rp etc etc.old # mergemaster # cd /usr/src/release/sysinstall # make install
build 用マシンと違ってこちらの mergemaster はちょっとした緊張感 が伴います。というのも実際に稼動しているマシンなのでそれなりに /etcを書き換えているからです。まちがって /etc/passwd や /etc/hosts を上書きしたりしないようにしましょう (かなり悲しいことになります)。
わたしは以下のようなポリシーでやっています
まず Libretto で umount してから再起動します。
Libretto より先に build 用 FreeBSD をシャットダウンしてはいけません。 これをやると Libretto のシャットダウンができなくなってしまうので気をつけて ください。そんなときはおちついて build 用 FreeBSD を起動します(;;)。 これはバージョンアップしたからではありませんww。