2004-02-12 9791歩

λ [AX10] ntpd 計画の続き

別マシンの /usr/share/zoneinfo/Asia/Tokyo を AX10 の /etc/localtime にコピー、 AX10 の /etc/default/rcS の UTC=yes を UTC-no に変更してみた。

  • ソフトウェア上の時刻表示は正しい
  • 本体のLED表示時計は9時間前を指す
  • 電源スイッチを押してTVモードからServerモードに移行した瞬間に、更に時刻が9時間前に変更される(=LED表示は18時間前)

という恐しい状況になった。こりゃそう簡単にはいかんな…

λ Debian生活

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 が起動する。

Debian環境での最初の作業

まず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

λ [AX10] ntpd 計画さらに (ntpdate+9)

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+9sleep 3600をぐるぐるするようなスクリプトで逃げることにした。 もしかしてダウンロードして使いたい人向けに一応MD5も書いておく。

MD5 (ntpdate+9) = 3df419d4f09e4755e7db5eb507be2abe

λ AX300の場合

ディレクトリ構成はほとんど変化なし。同じ手順でDebianが入った。

中のTimeZoneがちゃんとJSTになってるー。ずるい。ntpd がフツーに動いた。

[]