よくズレる玄箱の時計を補正する

http://linkstation.yi.org/index.php?Kernel%2F%A5%BF%A5%A4%A5%DE%A1%BC%A4%CE%C0%BA%C5%D9を参考に…
前準備として、ntpdは止め、関連cronは作動しないようにしておきます。

# dmesg | grep "decrementer frequency"
decrementer frequency = 24.360640 MHz
# ntpdate -b ntp2.jst.mfeed.ad.jp; sleep 3600; ntpdate -b ntp2.jst.mfeed.ad.jp
4 Jan 19:45:55 ntpdate[9489]: step time server 210.173.160.57 offset -0.310084
sec
―1時間後―
4 Jan 20:45:50 ntpdate[9708]: step time server 210.173.160.57 offset -2.720839
sec

-2.720839秒。
24360640[Hz] × 3600[sec] ÷ ( 3600[sec] + -2.720839[sec] ) = 24379065[Hz]
んじゃ2回目。

# ntpdate -b ntp2.jst.mfeed.ad.jp; sleep 3600; ntpdate -b ntp2.jst.mfeed.ad.jp
4 Jan 20:49:36 ntpdate[9714]: step time server 210.173.160.57 offset -0.172522
sec
―1時間後―
4 Jan 21:49:32 ntpdate[9962]: step time server 210.173.160.57 offset -2.726366
sec

-2.726366秒。
24360640[Hz] × 3600[sec] ÷ ( 3600[sec] + -2.726366[sec] ) = 24379102[Hz]


2回の平均値は 24379084[Hz] でした。
本当は、再起動して周波数測り直して、そこから動かすのが正式な方法なんだろうけど、絵チャに人がいたのでやめときました('`)
adjtimexをapt-getでinstallしたら、次にスクリプトを作成。ってか殆どコピペ。
# vi /etc/init.d/kuro-time-adj

#!/bin/bash
precision_freq=24379084
dec_freq=`/bin/dmesg | /bin/sed -n "s/^decrementer frequency = \([0-9][0-9.]*\).*/\1/p"`
/sbin/adjtimex `/usr/bin/awk < /dev/null 'END {x*=10000000000;y=int(x/p);printf("-t %d -f %d\n", y, (x/p - y)*6553600);}' p=$precision_freq x=$dec_freq`

書いてみたものの、initの使い方間違ってるような気がして登録できない…
引数つけて動くってことはエラーとか出すんじゃなかろうか…ううむ。