| « MySQL 4.1.19に更新 | apache20からapache22のportに移行した » |
FreeBSD 6.1-RELEASEにアップグレード
FreeBSD 6.1-RELEASEが出てきたようなので、この間の6.0-RELEASE-p7からアップグレードしてみました。
事前準備
カーネルのコンフィギュレーション ファイルは、カスタムなものを使っているけど、GENERICの方も参考にしたいので、まず、これを退避(ソースを同期すると、CVSタグの書かれたファイルは、上書きされる可能性があるので)。
# cp -p /sys/i386/conf/GENERIC* /var/tmp/
そして、
/usr/share/examples/cvsup/standard-supfile
の該当箇所を
*default release=cvs tag=RELENG_6_0*default release=cvs tag=RELENG_6_1
のように書き換え、
# cd /usr/src # make update
とcvsupを使って、ソースを更新。
先ほどバックアップした6.0でのGENERICとの差分は、
--- /var/tmp/GENERIC Sat Oct 29 04:22:41 2005 +++ /sys/i386/conf/GENERIC Mon May 1 09:15:12 2006 @@ -16,7 +16,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.429.2.3.2.1 2005/10/28 19:22:41 jhb Exp $ +# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.429.2.7.2.2 2006/05/01 00:15:12 scottl Exp $ machine i386 cpu I486_CPU @@ -119,6 +119,7 @@ device ciss # Compaq Smart RAID 5* device dpt # DPT Smartcache III, IV - See NOTES for options device hptmv # Highpoint RocketRAID 182x +device rr232x # Highpoint RocketRAID 232x device iir # Intel Integrated RAID device ips # IBM (Adaptec) ServeRAID device mly # Mylex AcceleRAID/eXtremeRAID @@ -128,6 +129,7 @@ device aac # Adaptec FSA RAID device aacp # SCSI passthrough for aac (requires CAM) device ida # Compaq Smart RAID +device mfi # LSI MegaRAID SAS device mlx # Mylex DAC960 family device pst # Promise Supertrak SX6000 device twe # 3ware ATA RAID @@ -137,6 +139,8 @@ device atkbd # AT keyboard device psm # PS/2 mouse +device kbdmux # keyboard multiplexer + device vga # VGA video card driver device splash # Splash screen and screen saver support @@ -188,6 +192,7 @@ # PCI Ethernet NICs that use the common MII bus controller code. # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs! device miibus # MII bus support +device bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet device bfe # Broadcom BCM440x 10/100 Ethernet device bge # Broadcom BCM570xx Gigabit Ethernet device dc # DEC/Intel 21143 and various workalikes @@ -221,9 +226,6 @@ device lnc # NE2100, NE32-VL Lance Ethernet cards device sn # SMC's 9000 series of Ethernet chips device xe # Xircom pccard Ethernet - -# ISA devices that use the old ISA shims -#device le # Wireless NIC cards device wlan # 802.11 support
のようになっていました。
続いて、念のために、/etc/のファイル群等、必要と思われるものをバックアップ。
# touch /var/tmp/backup-etc.tar.gz # chmod 600 /var/tmp/backup-etc.tar.gz # tar zcf /var/tmp/backup-etc.tar.gz /etc
最後に、
# mergemaster -p
を実行して、ビルドに必要な設定をチェック追記2。
/etc/groupに、
audit:*:77:
が新しく追加されるようになっていた。
ビルド&インストール
ログをとりながら、ビルドした。
# cd /usr/src # ( date && make buildworld ; date ) |& tee buildworld.log # ( date && make buildkernel ; date ) |& tee buildkernel.log
ビルド終了後、
# make installkernel
を実行して、カーネルをインストールし、
# shutdown -r now
新しいもので、起動するかどうかのテスト。
再起動後は、シングルユーザモードに入り、
# fsck -p # mount -u / # mount -a -t ufs # swapon -a # adjkerntz -i
と定型の呪文を唱えた後、
# make installworld
として、残りの部分をインストール。
最後に、
# mergemaster
を実行して、/etcの内容を更新。
結果、
# uname -r 6.1-RELEASE
に。
jail環境も更新
ついでに、この時、
# make installworld DESTDIR=${JAIL_ROOT}
# mergemaster -D ${JAIL_ROOT}
と構築していたjail環境の方も、更新した。
しかし、シングルユーザモードを抜けると、jailの起動のところで、ifconfigでaliasを割り当てられないとか警告が出ていた。/etc/rc.d/jailを見たところ、
jail_${JAIL_NAME}_interface
というものが加わったらしい。
そこで、/etc/rc.confを
ifconfig_fxp0="inet 192.168.11.2 netmask 255.255.255.0"ifconfig_fxp0_alias0="inet 192.168.11.20 netmask 255.255.255.255 broadcast 192.168.11.255"ifconfig_fxp0_alias1="inet 192.168.11.21 netmask 255.255.255.255 broadcast 192.168.11.255"
jail_enable="YES" jail_list="db1 www2" # jail_socket_unixiproute_only="NO" jail_sysvipc_allow="YES" jail_db1_hostname="db1.xdelta.net" jail_db1_interface="fxp0" jail_db1_ip="192.168.11.20" jail_db1_rootdir="/home/jail/db1" jail_db1_devfs_enable="YES" jail_www2_hostname="www2.xdelta.net" jail_www2_interface="fxp0" jail_www2_ip="192.168.11.21" jail_www2_rootdir="/home/jail/www2" jail_www2_devfs_enable="YES"
のように修正したところ、警告は出なくなった。エイリアスのIPアドレスは自動的に割り当ててくれるみたい。
その他
タイムゾーン
同様にして、別のマシンも更新したところ、KDEのデスクトップ画面の下の方にある時計が9時間ほど遅れている。
date(1)やoclock(1)等では、正常に時間が表示されるようではあるが、気になったので調べたところ、
/etc/localtime/usr/share/zoneinfo/Asia/Tokyo
のmd5チェックサムが違っていたので、
# cp -p /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
と上書きして、再起動したところ、問題はなくなったみたい。
日本語のロケール
また、以前、
として、このブログに書いていたロケールがja_JP.eucJPだと日本語の文字が正常に入力できないという問題は、6.1-RELEASEでは解消していました。
/etc/rc.d/ldconfig
以前、
のところに書いたmisc/ldconfig_conpatのportは、6.1では、ベースシステムに加わった。
6.1-RELEASEでは存在しなくなったファイル等
6.0でインストールされたもので、6.1-RELEASEではインストールされなかったものは、差分をとってみたところ、
/rescue/nextboot.sh /usr/lib/liblwres.so.3 /usr/sbin/setkey /usr/share/groff_font/devlj4/Makefile /usr/share/groff_font/devlj4/special.map /usr/share/groff_font/devlj4/text.map /usr/share/man/man4/i386/speaker.4.gz /usr/share/man/man4/i386/spkr.4.gz /usr/share/zoneinfo/Africa/Timbuktu /usr/share/zoneinfo/America/Argentina/ComodRivadavia /usr/share/zoneinfo/America/Indianapolis /usr/share/zoneinfo/America/Louisville /usr/share/zoneinfo/Europe/Belfast /usr/share/zoneinfo/Pacific/Yap /usr/share/zoneinfo/SystemV/AST4 /usr/share/zoneinfo/SystemV/AST4ADT /usr/share/zoneinfo/SystemV/CST6 /usr/share/zoneinfo/SystemV/CST6CDT /usr/share/zoneinfo/SystemV/EST5 /usr/share/zoneinfo/SystemV/EST5EDT /usr/share/zoneinfo/SystemV/HST10 /usr/share/zoneinfo/SystemV/MST7 /usr/share/zoneinfo/SystemV/MST7MDT /usr/share/zoneinfo/SystemV/PST8 /usr/share/zoneinfo/SystemV/PST8PDT /usr/share/zoneinfo/SystemV/YST9 /usr/share/zoneinfo/SystemV/YST9YDT
でした。PATHや名前が変わったり、ライブラリのバージョンが上がったり、そもそも存在しなくなったりと色々。
後は、新しくなった環境下での微調整と、古いものを削除して掃除追記3するぐらいなんだと思う。
今回は、5.4から6.0に上げた時のように、大規模な変更でもないようなので、portsの方は、再構築しなくて済む追記1かな?
- 追記1【2006/05/14】
/usr/ports/UPDATINGの20060514によると、FreeBSD 6.1では、ata(4)のABIに変更があったので、sysutils/smartmontools等、直接ataデバイスにアクセスするようなportsは、再構築しなければならないそうです。 - 追記2 【2006/05/18】 また、コメントの方に書いてたけど、5.xからアップグレードした場合、既に6.x系では、デフォルトの
CFLAGSが変更になっているので、もし、古いものが/etc/make.confに残っている場合、見直した方が良いかも知れません。 - 追記3【2006/05/28】 /usr/src/Makefileにも書いてあるけど、build(7)のcheck-old、delete-old、delete-old-libsの項目も参照。ただ、古いライブラリ等を削除すると、それに依存する古い環境でビルドしたports等が動かなくなる可能性があるので、注意して下さい。
Trackback address for this post
Trackback URL (right click and copy shortcut/link location)
5 comments, 2 trackbacks
databases/mysql41-{server,client}のportsを4.1.18から4.1.19に更新。
buildworld、buildkernel共に、6.0環境下では、ccacheを使っていましたが、
- http://www.xdelta.net/blog/FreeBSD/2006/03/22/p160#c97
- http://www.xdelta.net/blog/FreeBSD/2006/04/19/p180
今回は、以下のようになりました(最初に、ccache -zを実行して、以前の統計情報はクリアしてある)。
| buildworld前 | buildworld後 | buildkernel後 | |
|---|---|---|---|
| cache hit | 0 | 2571 | 2577 |
| cache miss | 0 | 9644 | 10903 |
| called for link | - | 578 | 579 |
| multiple source files | - | 1 | 1 |
| not a C/C++ file | - | 1209 | 1212 |
| no input file | - | 1 | 1 |
| unsupported compiler option | - | - | 1 |
| files in cache | 29448 | 48736 | 51254 |
| cache size | 139.9 Mbytes | 218.0 Mbytes | 233.9 Mbytes |
| buildword前 - buildworld後 | buildkernel後 - buildworld後 | |
|---|---|---|
| cache hit | 2571 | 6 |
| cache miss | 9644 | 1259 |
| called for link | 578 | 1 |
| multiple source files | 1 | 0 |
| not a C/C++ file | 1209 | 3 |
| no input file | 1 | 0 |
| unsupported compiler option | - | 1 |
| files in cache | 19288 | 2518 |
| cache size | 78.1 Mbytes | 15.9 Mbytes |
つまり、予想通り、Hitしませんでした。
ちなみに、所要時間は、私の環境下で、buildworldに、1時間20分31秒、buildkernelの方は、21分31秒でした。
これは、キャッシュがヒットしない状況なので、ccacheを使用しない場合よりも、若干、遅くなったと思われる。
FreeBSD 6.0の時にインストールしていたportsで、6.1の環境で、それらをアップグレードすると、USE_RC_SUBRを使ってetc/rc.d内にインストールされるスクリプトの名前が変わる場合があった(mysql-serverやmemcachedのportsでそうだった)。
pkgtools.confのBEFOREDEINSTALや、AFTERINSTALの箇所で、上記のようなスクリプトの名前を指定して、インストール前後に自動的にデーモンを停止・起動するよう設定している場合、要確認。
6.1-RELEASEでは存在しなくなったファイル等での差分は、まず最初に、6.0の環境下で、
# cd /usr/src # make installworld DESTDIR=/home/6_0
を実行し、その後、6.1環境下で同様に、
# make installworld DESTDIR=/home/6_1
を実行して、6.0の方だけに含まれているファイルを得るため、
#!/usr/local/bin/perl -w
use strict;
use File::Find;
my $old_root_dir = q(/home/6_0/);
my $new_root_dir = q(/home/6_1/);
my $ignore_dir = '(?:etc|home|usr/(?:home|local)|sys|var)/';
find(\&do_diff, $old_root_dir);
sub do_diff {
my $file_name = $File::Find::name;
if ($file_name =~ m#^${old_root_dir}(.+)$#) {
my $base_name = $1;
if ($base_name !~ m#^${ignore_dir}#
&& !(-e $new_root_dir . $base_name)) {
print "/" . $base_name . "\n";
}
}
}
といったスクリプトを書いて調べました。
なお、/etc/make.confには、両者(6.0と6.1の環境)とも、
NO_I4B= NO_PROFILE=
を指定してあったので、もし、それに関連するものがあった場合は、上記の差分には含まれていません。
今回は、5.4から6.0に上げた時のように、大規模な変更でもないようなので、portsの方は、再構築しなくて済むかな?
と思ってはいたけど、FreeBSD 5.4から6.0にアップグレードしたマシンの/etc/make.confに、なぜか
CFLAGS = -O -pipeCOPTFLAGS = -O -pipe
の記述がされていたままになっていたので、この機会にRELENG_6標準の
CFLAGS = -O2 -fno-strict-aliasing -pipe
の設定でコンパイルするため、上記のCFLAGSとCOPTFLAGSの記述を/etc/make.confから削除し、再構築しなおした(CFLAGS等は、make時に、適切なものを割り当ててくれるようになってるから、理由がない限り、/etc/make.confの記述で固定しない方が良いみたいですね)。
FreeBSD 6.2-RELEASEが出てきたようなので、今まで使っていたFreeBSD 6.1Rからアップグレードしてみた。
ソースの同期
6.2からは、csup(1)なるコマンドがベースシステムに組み込まれたけど、6.1で
This post has 3 feedbacks awaiting moderation...