# cd /usr/ports/net/cvsup # make install
#mkdir /usr/local/etc/cvsup #cp /usr/share/examples/cvsup/*-supfile /usr/local/etc/cvsup
*default host=cvsup2.jp.FREEBSD.org *default base=/usr/local/etc/cvsup *default prefix=/usr *default delete use-rel-suffix #回線に十分に帯域がある場合、以下の行はコメントアウト #*default compress #portsを更新する場合 ports-all
*default host=cvsup4.jp.FreeBSD.org *default base=/usr/local/etc/cvsup *default prefix=/usr *default release=cvs tag=RELENG_5_1 *default delete use-rel-suffix *default compress
RELENG_4 4.X-Releaseを4.4-Stableにアップデートする RELENG_4_4 4.4-Releaseにたいして重大なバグ、セキュリティ対策のみを行う
インターネットサーバなど安定重視、セキュリティ対策のみでよい、という場合はRELENG_4_4を指定する.
# cvsup -g -L 2 /usr/local/etc/cvsup/stable-supfile > /var/log/stable.log # cvsup -g -L 2 /usr/local/etc/cvsup/ports-supfile > /var/log/ports.log
#cd /usr/src/sys/i386/conf/ #cp GENERIC NEWKERNEL #vi NEWKWERNEL #config NEWKERNEL #cd /usr/obj #chflags -R noschg * #rm -rf * #cd /usr/src #make -j4 buildworld #make buildkernel KERNCONF=BURTON #make installkernel KERNCONF=BURTON #make installworld
#reboot
# cd release/sysinstall # make all install (mergemaster -v) # fastboot
MASTER_SITE_BACKUP?= \ ftp://ftp.jp.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/ MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP} SUP_UPDATE= yes # SUP= /usr/local/bin/cvsup SUPFLAGS= -g -L 2 SUPHOST= cvsup.jp.FREEBSD.org SUPFILE= /usr/share/examples/cvsup/stable-supfile PORTSSUPFILE= /usr/share/examples/cvsup/ports-supfile
NOGAMES=true#gameは作成しない USA_RESIDENT=NO# 米国輸出規制暗号に抵触するものはコンパイルしない SUP_UPDATE= yes#cvsによるソースアップデートを使用する SUP=/usr/local/bin/cvsup SUPFLAGS= -g -L 2 SUPHOST=cvsup2.jp.FreeBSD.org SUPFILE=/usr/share/examples/cvsup/stable-supfile PORTSSUPFILE= /usr/share/examples/cvsup/ports-supfile DOCSUPFILE= /usr/share/examples/cvsup/doc-supfile FTP_PROXY=gw.mvs.co.jp:8080 HTTP_PROXY= gw.mvs.co.jp:8080 KERNCONF= MYNAME#カーネル名
# cd /usr/src # make update -------------------------------------------------------------- >>> Running /usr/local/bin/cvsup -------------------------------------------------------------- Parsing supfile "/usr/share/examples/cvsup/stable-supfile" Connecting to cvsup.f-bell.net
# make clean # make buildworld # make buildkernel
バイナリの生成か完了したら、以下のようにしてバイナリをインストールします。
# make installworld # make installkernel
/usr/srcでのmake作業では/etcディレクトリにある各種設定ファイル、rcスクリプトは自動的には更新されません。これは、これらファイルはサイトの運用状況に応じてシステム管理者が変更、修正している場合が多く、一括した更新が難しいためです。このため/etcディレクトリ以下の設定ファイルは以下の方法で更新します。
/usr/etc/と/etc/のファイルを見比べて管理者が手動で更新する /us/sbin/mergemasterスクリプトをつかう /usr/src/etc/でmake distributionと実行する
1.の方法がもっとも確実な方法です。rcスクリプトを大幅に修正しているなど、コマンド任せにできない場合はこの方法をとります。
2. のmergemasterスクリプトを使う方法は/usr/src/etc/と/etc/ディレクトリ内のファイルをdiffし、差分を/etc/に適用する方法です。設定ファイルなどの変更点が少ない場合はうまく更新されますが、管理者の変更内容によっては正しく更新されない場合もあります。注意して使用してください。
3. この方法では/etcの内容を新規インストール時と同じ状態にします。passwdファイルを含めて初期化されますので、注意が必要です。設定項目が少なく、sysinstallなどで新規に設定をし直しした方が早い場合はこの方法を使います。
config [カーネルの名前] cd ../../compile/ [カーネルの名前] make depend ; make make install
stableにする前に ソースの同期ができたら、いよいよstableにします。 stableなどにシステムを更新する一連の作業を「make world」する、とも呼びます。 ここでstableする前に注意すべき点がいくつかあります。
まず、ディスクの残り容量です。 stableのソースをコンパイルすると/usr/objに300MB程度コンパイル済みのシステムが保存されます。 残り容量は大丈夫だとは思いますが、万が一のこともあるので、ちゃんと確認してから行ってください。
ディスクの残り容量は
> df -k
で確認することができます。
次に、make worldは今回のような4.4-RELEASEから4-STABLEにするのは特に問題なくできると思いますが、3.xから4-STABLEにする場合には、きちんとした知識が要求されるので、メジャーバージョンを超えたmake worldはやらない方が無難です。 このような場合には4.x-RELEASEをインストールしてから、4-STABLEにするのが一般的なやり方です。
あと、sendmailの代わりにqmailを使っている方は、make worldすると/usr/sbin/sendmailが本物のsendmailで置き換えられてしまうので、/var/qmail/bin/sendmailを忘れずにバックアップするようにしましょう。
> su # cd /usr/src # make buildworld
としてやると、コンパイルが始まります。 Celeron 500MHzで大体2〜3時間ぐらいかかります。
また、
# make -j4 buildworld
のようにスレッドをいくつか作ってコンパイルしてやると、早く終わるようです。 kernelのコンパイル(make buildkernel) ソースがコンパイルできたら、次はkernelをコンパイルします。 kernelをコンパイルするには、make buildkernelというコマンドを使います。 make buildworldと同様に/usr/srcで
# make buildkernel
としてやると、コンパイルが始まります。
最後に以下のように出ていれば成功です。
chmod 444 freebsd.cf
この時に作られるkernelはGENERICと呼ばれる標準kernelですが、既に自分のkernel設定ファイルを作成している場合は、kernel設定ファイルが例えばCELIESという名前だったとすると、
# make KERNCONF=CELIES buildkernel
のようにしてやると、自分のkernel設定ファイルを元にkernelをコンパイルしてくれるので、後でkernelを再構築する必要が無くなります。 また、KERNCONF=CELIESを/etc/make.confに記述しておくと、make buildkernelとやれば自動的に自分の設定ファイルを参照してコンパイルしてくれます。
この他のオプションとしては、NO_SENDMAIL=YESなどがあります。(NO_BIND、NO_OPENSSH、NO_OPENSSLとか)
kernelのインストール(make installkernel) kernelがコンパイルできたら、早速kernelを新しいものにインストールします。 make buildkernelと同様に/usr/srcで
# make installkernel
としてやると、kernelのインストールが始まります。 エラーが無く、終われば成功です。
kernelのインストールが終わったら、新しいkernelでシステムを起動します。
# sync # sync # sync # shutdown -r now(rebootでも良い)
で、システムを再起動させます。
コンパイル済みのシステムのインストール(make installworld) 次にコンパイルしたシステムファイルをインストールします。 このとき、よけいなプロセスが走っているとシステムの更新に重大な支障をきたす可能性があるので、FreeBSDをシングルユーザーモードというモードで起動させます。
再起動後、 Booting [kernel] in 10 seconds...
のカウントが始まったところで space を押し、
> boot -s
と入力し、Enterを押すとシングルユーザーモードでOSが起動されます。
まず最初にshellのパスを要求されるのでパスを入力します。
Enter full pathname of shell or RETURN for [/bin/sh] :
と出るので、例えばtcshの場合「/bin/tcsh」と入力してEnterを押します
% /sbin/mount -a
まず上のようにして、各パーティションをマウントします。 その後、システムをインストールします。
% su # cd /usr/src # make installworld
とすると、buildworldでコンパイルしたシステムが、インストールされます。
etcの更新(mergemaster) システムが更新できたら、次は/etcを更新します。(別にしなくても、OS自体は動きますが、やるにこしたことは無いでしょう) /etcには自分が更新した設定ファイルが入っているはずなので、誤って上書きしないようにバックアップを取っておきます。
# cp -Rp /etc /backup/etc
例では/backup/etc/にバックアップしています。 /etcの更新にはmergemasterというコマンドを使います。 これは、更新されたファイルを自動で検知してくれる便利なツールです。 また、更新、更新しないの他に、マージと言って更新された部分のみ反映する(手動ですが)といったこともできます。
# mergemaster -s -v
と実行すると、mergemasterの画面に移ります。 もし、mergemasterを以前に実行していた場合は、以前のmergemasterで作った仮のルートを消すか?と聞かれますので"d"を入力して消してください。 あと、PAGERがmore以外の場合は、PAGERを指定する必要があるので、指定してください。
mergemasterの主な使い方は、よく読めば理解できるとは思うのですが、まずmergemasterは仮のルートを作って、そこへ新しい/etcを置きます。 そこから、/etcへコピーするか、/etcにあるものを保持するかを選択できるんですが、主な操作方法は3つです。
新しいファイルに更新する場合は"i" /etc にあるものをそのまま使う時は"d" マージする時は"m"
ということですね。
もし、間違えて設定を消してしまっても、バックアップから復元することができるので、安心して挑んでみてください。 最後に、mergemasterを終えて設定ファイルが全て大丈夫なことを確信した後に、バックアップを消すようにしてください。
/standの更新 最後に/standを更新します。
# cd /usr/src/release/sysinstall # make all install
で更新することができます。 これらの作業が終わったら、再起動すればシステムが4-STABLEの環境になっています。 お疲れさまでした。