別マシンの /usr/share/zoneinfo/Asia/Tokyo を AX10 の /etc/localtime にコピー、 AX10 の /etc/default/rcS の UTC=yes を UTC-no に変更してみた。
という恐しい状況になった。こりゃそう簡単にはいかんな…
UserModeLinuxだと重すぎだよなあなどと考えていたら、 単にchroot環境さえ作ればntpd専用のTIMEZONE設定できるかもということに思い立つ。 ついでにDebianの最小インストール環境を突っ込んでしまえばユーザアカウント作って、 sshdだろうが何だろうがやりたい放題のはず。
ということで初Debian体験を開始した。 対話式インストーラの途中で[インもトール]という単語発見。これはどこにバグレポート出せばいいんだTODO
初Debian体験とはいっても fink で apt-get 生活してるわけで、dselectの使い方が相変らず分からんぐらいで軽くインストール終了。 以下の手順でシステム全体のtar玉を作成した。
cd / find . -path ./tmp -prune -o -path ./lost+found -prune -o -print > /tmp/allpath echo ./tmp >> /tmp/allpath (/tmp/allpath の中身を確認。やりたければ不要なファイルの行を消す) cpio -oaH ustar < /tmp/allpath | gzip > /tmp/minidebian.tar.gz
このtar玉をAX10のWindows共有フォルダに転送して、 /mnt/disk1/debian に展開。
mkdir -p /mnt/disk1/debian tar -xvpf /mnt/disk1/data/REC/minidebian.tar.gz -C /mnt/disk1/debian
ここまでやると /mnt/disk1/debian/usr/sbin/chroot /mnt/disk1/debian /bin/sh でDebian環境のシェルが起動する。
以下の最初の作業と自分のアカウント作成をしたら
/mnt/disk1/debian/usr/sbin/chroot /mnt/disk1/debian /bin/sh でDebian環境の sshd が起動する。
まずAX10とpasswd,groupで同一アカウント名でuidが異なるものが存在するため、/etc/passwd と /etc/group を編集。 編集後の自分のアカウント以外の passwd はこんな。
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh adm:x:4:4:adm:/var/adm: lp:x:5:7:lp:/var/spool/lpd: sync:x:6:8:sync:/bin:/bin/sync shutdown:x:7:9:shutdown:/sbin:/sbin/shutdown halt:x:8:10:halt:/sbin:/sbin/halt mail:x:9:11:mail:/var/spool/mail: news:x:10:12:news:/var/spool/news: uucp:x:11:13:uucp:/var/spool/uucp: operator:x:12:0:operator:/root: games:x:13:100:games:/usr/games: ftp:x:15:14:ftp:/var/ftp: man:x:16:100:man:/var/cache/man: proxy:x:1013:1013:proxy:/bin:/bin/sh postgres:x:31:32:postgres:/var/lib/postgres:/bin/sh www-data:x:33:33:www-data:/var/www:/bin/sh backup:x:34:34:backup:/var/backups:/bin/sh list:x:38:38:SmartList:/var/list:/bin/sh irc:x:39:39:ircd:/var:/bin/sh gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh nobody:x:65534:65534:nobody:/home:/bin/sh identd:x:100:65534::/var/run/identd:/bin/false sshd:x:101:65534::/var/run/sshd:/bin/false
group はこんな。
root:x:0:h daemon:x:1: bin:x:2: sys:x:3: adm:x:4: tty:x:5: disk:x:6: lp:x:7:lp sync:x:8:sync shutdown:x:9:shutdown halt:x:10:halt mail:x:11:mail news:x:12:news uucp:x:13:uucp ftp:x:14:ftp kmem:x:15: utmp:x:16: shadow:x:17: proxy:x:1013: dialout:x:20: fax:x:21: voice:x:22: cdrom:x:24: floppy:x:25: tape:x:26: sudo:x:27: audio:x:29: dip:x:30: postgres:x:32: www-data:x:33: backup:x:34: operator:x:37: list:x:38: irc:x:39: src:x:40: gnats:x:41: video:x:44: staff:x:50: games:x:60: users:x:100: nogroup:x:65534:
ついでに /etc/hosts に自分のホスト名を追加しておく。
Linuxだとlofsやらnullfsとは呼ばないらしいが、上位のディレクトリ構造をDebian環境にぶらさげる作業。AX10側シェルで行う。
AX10 # mkdir /mnt/disk1/debian/ax10 AX10 # mount --bind / /mnt/disk1/debian/ax10 AX10 # mount --bind /proc /mnt/disk1/debian/proc AX10 # mount --bind /mnt/disk1 /mnt/disk1/debian/ax10/mnt/disk1
もはやそのままapt-getが使えるので楽勝。ただのDebianである。
apt-get update apt-get install ntp apt-get install ntpdate apt-get install curl-ssl opt-get install sudo apt-get remove exim opt-get install bzip2 opt-get install smbfs
chroot環境でTIMEZONEを指定すると9時間前を指す。ntpdateで時刻を変更すると、AX10側は9時間未来になってしまう。
カーネル上はUTCで管理していてTIMEZONEは表示する時に効くだけかー。やっぱダメだー。
というわけで、NTPで拾った時間を無理矢理9時間後にして時刻を設定する謎プログラム [ダウンロード:ntpdate+9] を作成。ntp-4.2.0 に対するパッチはこんだけ。
x--- ntpdate/ntpdate.c.orig Thu Feb 12 15:45:23 2004
+++ ntpdate/ntpdate.c Thu Feb 12 14:37:27 2004
@@ -1271,6 +1271,12 @@
return(1);
}
+ { /* FORCE GMT+9 for AX10 */
+ l_fp gmt9;
+ DTOLFP(32400.0, &gmt9);
+ L_ADD(&(server->offset), &gmt9);
+ }
+
if (always_step) {
dostep = 1;
} else if (never_step) {
ntpdをいじる元気はないので、ntpdate+9とsleep 3600をぐるぐるするようなスクリプトで逃げることにした。
もしかしてダウンロードして使いたい人向けに一応MD5も書いておく。
MD5 (ntpdate+9) = 3df419d4f09e4755e7db5eb507be2abe