FreeBSD 3.X -> FreeBSD 4.X Upgrade手順
その昔、サンノゼの某社に置いてきたFreeBSD 2.1.5-RELEASEを全てリモートから3.4-STABLEに上げるなど技を磨いた結果、ついに4.8-RELEASEまでメジャーバージョンのアップグレードをリモートからする手順を確立しました。データセンタに足を運ぶのは面倒だという場合に参考にしてください。
なお、この手順があなたにもあてはまるとは限りません。
私は本番前に手元のマシンで練習してから行ってますが、
失敗しても知りませんのでそのつもりで。
つくり方
- 3.5.1-RELEASE 以前のバージョンなら先ずは3.5.1-RELEASEまたは最新の3.5-STABLEにする。
- /usr/src に 4.2-RELEASEのソースを展開する。
なぜか4.3以降のソースだとビルドに失敗するので4.2にする。別に4.1とかでも可。
ソースはすでにftpから手に入れることが困難になってきているので
cvsupでtagをRELENG_4_2_0_RELEASEを指定してgetする。/usr/portsが古い場合はtag=.で最新にしておく。
- /etc/make.confを次のように設定する。
NOPERL=true
NOPROFILE=true
MAKE_RSAINTL=YES
USA_RESIDENT=NO
CFLAGS=-O -pipe -m486
COPTFLAGS=-O -pipe -m486
COMPAT3X=yes
- ビルドする
cd /usr/obj/
chflags -R noschg *
rm -rf *
要らないものを消しておく
cd /usr/src
make buildworld
make buildkernel
- デバイスファイルのアップデート
cd /usr/src/sbin/mknod && make install
cp /usr/src/etc/MAKEDEV* /dev
cd /dev
sh MAKEDEV all
パーティションにあったディスクのデバイスファイルを作る.
sh MAKEDEV ad0s1a
sh MAKEDEV ad2s1a など
cd /sys/boot && make install
- /etc/fstab を編集. wd を ad に
- カーネルをインストール
cd /usr/src
make installkernel
- mountdが動くとリブート時にクラッシュするので無効化。
次のステップシングルユーザモードに落とすならどーでも良い。
ee /etc/rc.conf
nfs_server_enable="NO"
nfs_client_enable="NO"
- リブート
shutdown -r now
本当はシングルユーザモードにすべきだが、リモートテクニシャンとしてはマルチユーザモードで起動。
- 4.2のkernel上にて 3.Xユーザーランドで動く
- /varを4.Xにあわせるのと /etcのアップデート
touch /var/log/security
touch /var/log/cron
rm /var/cron/log*
cp -rp /etc /etc.old /etcを取っておく
mergemaster -v -s -a 本当は -a
をつけないでやるけど手抜き
cd /var/tmp/temproot
手抜きのetc更新
rm master.passwd
rm hosts
rm hosts.allow
rm group
rm inetd.conf
rm shells
他にも /etcで上書きされると不味いものとか新しいものとマージする必要があればそのファイルを編集。
cp -pr * /etc
上書き。
- compat3xをインストール
cd /usr/ports/misc/compat3x/
make install
これで installworld後のリブートも安心?
- インストールワールド
cd /usr/src/gnu/usr.bin/texinfo/install-info
make install
ldconfig -R /usr/obj/usr/src/lib/libc
cd /usr/src
make installworld
cd /usr/src/release/sysinstall && make all install
- perlのインストール
ee /etc/make.conf
#NOPERL=true
cd /usr/src/gnu/usr.bin/perl
(cd libperl && make all install)
(cd perl && make all install)
エラーが出たけど無視
make clean all install
- rc.confのアップデート
ee /etc/rc.conf
sshd_enable="YES"
fsck_y_enable="YES"
- リブート
shutdown -r now
- sshdのユーザ・グループを追加
mergemaster しても良いけど、取り合えず4.8-RELEASEに上げるための最低限。
vipw
sshd:*:22:22::0:0:sshd privilege separation:/var/empty:/nonexistent
smmsp:*:25:25::0:0:Sendmail Submission User:/var/spool/clientmqueue:/sbin/nologin
ee /etc/group
sshd:*:22:
smmsp:*:25:
sshdのユーザ・グループの追加を忘れると悲惨。リブート後sshd起動しません。
- cvsupで最新の4.X に
- 普通にメイクワールド
- リブート
- はい、出来上がり
参考にさせて頂きました。
http://home.jp.FreeBSD.ORG/cgi-bin/showmail/FreeBSD-users-jp/56361