[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 メーリングリストの案内