[Armadillo:08878] Re: flatfsd のバグ?

Yanagihara, Kosaku email@hidden
2013年 5月 31日 (金) 13:07:23 JST


柳原です。

実験を繰り返しているうちにズレ量が変化してきましたが、相変わらず挙動不審
です。確認用に簡素化した/etc/init.d/rcを作成しました。

不審な点:
(a) 起動中のtimeコマンド報告値が異常。
(b) flatfsd -r実行前後での時間ズレ量がtimeコマンド報告値に一致する。
(c) configフラッシュを変更せずに再起動を繰り返すと時間ズレ量が増加していく。

ソースを読んでいない(読みこなすスキルが無い&時間が足りない)ので推測です
が、flatfsdの処理の中にシステム時刻を止めてしまうような処理が含まれてい
て、これを補正するために(timeコマンドで得られるような)プロファイル情報を
使って時刻更新を行っているのではないでしょうか。

そして、gettyに処理が移るまでの期間はプロファイル情報を取得する処理に
問題があって、それによって得られた変な値を使って時刻更新が行われるので
はないでしょうか。

なお、起動中だけでなく、rootログイン後にflatfsdを実行した場合に、time報
告値が体感より長い場合があり、その場合もtimeコマンド報告値と一致する時間
ズレが観測されました。

・・・なんかOSかH/W依存部の不具合のような気がしてきた・・・


====================[ /etc/init.d/rc ]====================
# awk '{printf("%2d: %s\n",NR,$0)}' /etc/init.d/rc
 1: #!/bin/sh
 2:
 3: if [ "$1" != "not-mount" ]; then
 4:     echo -n "$(date +%s): mount -n proc ... "
 5:     mount -n proc
 6:     echo "done ($(date +%s): $?)"
 7:
 8:     echo -n "$(date +%s): mount -n -o remount,rw,noatime / ... "
 9:     mount -n -o remount,rw,noatime /
10:     echo "done ($(date +%s): $?)"
11:
12:     echo -n "$(date +%s): mount sysfs ... "
13:     mount sysfs
14:     echo "done ($(date +%s): $?)"
15: fi
16:
17: rm -fr /etc/config
18: mkdir /etc/config
19: mktemp /etc/config/tmp$$.XXXXXX > /dev/null
20:
21: echo "$(date +%s): before flatfsd -r"
22: ls -la /etc|awk '{if($9~/config|default/)print}'
23: echo
24: ls -la /etc/config
25: echo
26:
27: echo -n "$(date +%s): flatfsd -r ... "
28: time flatfsd -r
29: echo "done ($(date +%s): $?)"
30:
31: echo "$(date +%s): after flatfsd -r"
32: ls -la /etc|awk '{if($9~/config|default/)print}'
33: echo
34: ls -la /etc/config
35: echo


====================[ 事前準備 ]====================
# rm -fr /etc/config
# mkdir /etc/config
# touch /etc/config/armadillo
# flatfsd -s
flatfsd: saving fs to partition 0, tstamp=1
flatfsd: Wrote 167 bytes to flash in 1 seconds
# rm -f /etc/config/armadillo
# ls -la /etc/config/
drwxr-xr-x    2 root     root         1024 Jan  1 00:28 ./
drwxr-xr-x   17 root     root         1024 Jan  1 00:28 ../
# flatfsd -r
flatfsd: restore fs+ from partition 0, tstamp=1
flatfsd: Created 1 configuration files (0 bytes)
# ls -la /etc/config/
drwxr-xr-x    2 root     root         1024 Jan  1 00:29 ./
drwxr-xr-x   17 root     root         1024 Jan  1 00:28 ../
-rw-r--r--    1 root     root            0 Jan  1 00:29 armadillo


==========[ 実験結果(最起動~rootログイン) ]==========
Hermit-At v2.1.4 (armadillo4x0) compiled at 20:49:45, Feb 23 2012
initializing net-device...OK
      :
    (中略)
      :
VFS: Mounted root (ext2 filesystem).
Freeing init memory: 116K
init started:  BusyBox v1.00 (2012.12.17-04:57+0000) multi-call binary
3: mount -n proc ... done (3: 0)
3: mount -n -o remount,rw,noatime / ... done (3: 0)
3: mount sysfs ... done (3: 0)
3: before flatfsd -r
drwxr-xr-x    2 root     root         1024 Jan  1 00:00 config
drwxr-xr-x    4 root     root         1024 May 31  2013 default

drwxr-xr-x    2 root     root         1024 Jan  1 00:00 .
drwxr-xr-x   17 root     root         1024 Jan  1 00:00 ..
-rw-------    1 root     root            0 Jan  1 00:00 tmp19.dd8ptA

3: flatfsd -r ... flatfsd: restore fs+ from partition 0, tstamp=1
flatfsd: Created 2 configuration files (0 bytes)
real    28m 29.35s
user    0m 0.00s
sys     0m 0.01s
done (1713: 0)
1713: after flatfsd -r
drwxr-xr-x    2 root     root         1024 Jan  1 00:28 config
drwxr-xr-x    4 root     root         1024 May 31  2013 default

drwxr-xr-x    2 root     root         1024 Jan  1 00:28 .
drwxr-xr-x   17 root     root         1024 Jan  1 00:00 ..
-rw-r--r--    1 root     root            0 Jan  1 00:28 armadillo
-rw-------    1 root     root            0 Jan  1 00:00 tmp19.dd8ptA


(none) login: root
Password:
login[60]: root login  on `ttymxc1'

# /etc/init.d/rc not-mount
1777: before flatfsd -r
drwxr-xr-x    2 root     root         1024 Jan  1 00:29 config
drwxr-xr-x    4 root     root         1024 May 31  2013 default

drwxr-xr-x    2 root     root         1024 Jan  1 00:29 .
drwxr-xr-x   17 root     root         1024 Jan  1 00:29 ..
-rw-------    1 root     root            0 Jan  1 00:29 tmp70.p4ftoA

1777: flatfsd -r ... flatfsd: restore fs+ from partition 0, tstamp=1
flatfsd: Created 2 configuration files (0 bytes)
real    0m 0.01s
user    0m 0.00s
sys     0m 0.01s
done (1777: 0)
1777: after flatfsd -r
drwxr-xr-x    2 root     root         1024 Jan  1 00:29 config
drwxr-xr-x    4 root     root         1024 May 31  2013 default

drwxr-xr-x    2 root     root         1024 Jan  1 00:29 .
drwxr-xr-x   17 root     root         1024 Jan  1 00:29 ..
-rw-r--r--    1 root     root            0 Jan  1 00:29 armadillo
-rw-------    1 root     root            0 Jan  1 00:29 tmp70.p4ftoA

#



armadillo メーリングリストの案内