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

Yanagihara, Kosaku email@hidden
2013年 5月 31日 (金) 12:03:28 JST


柳原です。

>> ■その2: flash(config)と/etc/configの両方が空っぽの場合の-rオプション
>     :
>   (中略)
>     :
> 上の2番目の質問にも関係しますが、"-r"オプションは、
> configフラッシュが空か、壊れているときは"-w"と同じ動作を
> するようです。
> このことは、以前[Armadillo:07930]でも書いてます。
> http://lists.atmark-techno.com/pipermail/armadillo/2012-March/007933.html

「(-cオプションで検査できるとされる)configフラッシュが壊れているとき」に
ついては(どうやったら意図的にフラッシュを壊せるのか分からないので)取り敢
えずおいといて・・・

[Armadillo:07930]でも指摘されている「configフラッシュが空の場合」の分析
については異議があります。理由は・・・実験の方が分かりやすそうなので、以
下参照。

結論を言うと、configフラッシュは空でも/etc/configが空っぽじゃなければ
(8,9)何も実行されていません。言い換えると「空っぽで上書き」的な挙動です。

一方、configフラッシュと/etc/configが両方空っぽ(10,11)だと、-wと同じ結果
になります。

1. まず/etc/configにファイルを1つだけ入れる。
	# rm -fr /etc/config
	# mkdir /etc/config
	# touch /etc/config/armadillo
	# ls -la /etc/config
	drwxr-xr-x    2 root     root         1024 Jan  1 00:14 ./
	drwxr-xr-x   17 root     root         1024 Jan  1 00:14 ../
	-rw-r--r--    1 root     root            0 Jan  1 00:14 armadillo
	# date -r /etc/config/armadillo
	Thu Jan  1 00:14:52 UTC 1970

2. configフラッシュに保存する。
	# flatfsd -s
	flatfsd: saving fs to partition 0, tstamp=1
	flatfsd: Wrote 168 bytes to flash in 1 seconds

3. flatfsdの実行による/etc/configへの影響を確認する。
	# ls -la /etc/config
	drwxr-xr-x    2 root     root         1024 Jan  1 00:15 ./
	drwxr-xr-x   17 root     root         1024 Jan  1 00:14 ../
	-rw-r--r--    1 root     root            0 Jan  1 00:14 armadillo
	# date -r /etc/config/armadillo
	Thu Jan  1 00:14:52 UTC 1970

4. /etc/configを空っぽにする。
	# rm -f /etc/config/armadillo
	# ls -la /etc/config
	drwxr-xr-x    2 root     root         1024 Jan  1 00:15 ./
	drwxr-xr-x   17 root     root         1024 Jan  1 00:14 ../

5. configフラッシュから/etc/configへ書き戻す。
	# 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:16 ./
	drwxr-xr-x   17 root     root         1024 Jan  1 00:14 ../
	-rw-r--r--    1 root     root            0 Jan  1 00:16 armadillo
	# date -r /etc/config/armadillo
	Thu Jan  1 00:16:32 UTC 1970

6. /etc/configを再び空っぽに(/tmp/へ退避)する。
	# mv /etc/config/armadillo /tmp/
	# ls -la /etc/config
	drwxr-xr-x    2 root     root         1024 Jan  1 00:17 ./
	drwxr-xr-x   17 root     root         1024 Jan  1 00:14 ../

7. configフラッシュに保存する。
	# flatfsd -s
	flatfsd: saving fs to partition 0, tstamp=1
	flatfsd: Wrote 118 bytes to flash in 1 seconds

8. /etc/config/armadilloを復元する。
	# mv /tmp/armadillo /etc/config/
	# ls -la /etc/config
	drwxr-xr-x    2 root     root         1024 Jan  1 00:17 ./
	drwxr-xr-x   17 root     root         1024 Jan  1 00:14 ../
	-rw-r--r--    1 root     root            0 Jan  1 00:16 armadillo
	# date -r /etc/config/armadillo
	Thu Jan  1 00:16:32 UTC 1970

9. configフラッシュから/etc/configへ書き戻す(空っぽで上書きする)。
	# 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:17 ./
	drwxr-xr-x   17 root     root         1024 Jan  1 00:14 ../
	-rw-r--r--    1 root     root            0 Jan  1 00:16 armadillo
	# date -r /etc/config/armadillo
	Thu Jan  1 00:16:32 UTC 1970

10. /etc/configを再び空っぽにする。
	# rm -f /etc/config/armadillo
	# ls -la /etc/config
	drwxr-xr-x    2 root     root         1024 Jan  1 00:18 ./
	drwxr-xr-x   17 root     root         1024 Jan  1 00:14 ../

11. configフラッシュから/etc/configへ書き戻す(空っぽで上書きする)。
	# flatfsd -r
	flatfsd: restore fs+ from partition 0, tstamp=1
	flatfsd: Nonexistent or bad flatfs (0), creating new one...
	flatfsd: saving fs to partition 0, tstamp=1
	flatfsd: Wrote 14096 bytes to flash in 1 seconds
	flatfsd: Created 20 configuration files (11056 bytes)
	# ls -la /etc/config
	drwxr-xr-x    4 root     root         1024 Jan  1 00:18 ./
	drwxr-xr-x   17 root     root         1024 Jan  1 00:14 ../
	-rw-r--r--    1 root     root           37 Jan  1 00:18 .romfsid
	drwxr-xr-x    8 root     root         1024 Jan  1 00:18 cron/
	-rw-r--r--    1 root     root           38 Jan  1 00:18 hosts
	-rw-r--r--    1 root     root          603 Jan  1 00:18 hosts.allow
	-rw-r--r--    1 root     root          714 Jan  1 00:18 hosts.deny
	-rw-r--r--    1 root     root           20 Jan  1 00:18 htpasswd
	-rw-r--r--    1 root     root           19 Jan  1 00:18 httpd.conf
	-rw-r--r--    1 root     root         9117 Jan  1 00:18 local.conf
	-rw-r--r--    1 root     root           41 Jan  1 00:18 pointercal
	-rwxr-xr-x    1 root     root          142 Jan  1 00:18 rc.local*
	drwxr-x---    2 root     root         1024 Jan  1 00:18 ssl/
	# ls -la /etc/default
	drwxr-xr-x    4 root     root         1024 May 31  2013 ./
	drwxr-xr-x   17 root     root         1024 Jan  1 00:14 ../
	-rw-rw-r--    1 root     root           37 May 31  2013 .romfsid
	drwxr-xr-x    8 root     root         1024 May 23  2013 cron/
	-rw-r--r--    1 root     root           38 Nov 21  2012 hosts
	-rw-r--r--    1 root     root          603 Nov 19  2012 hosts.allow
	-rw-r--r--    1 root     root          714 Nov 19  2012 hosts.deny
	-rw-r--r--    1 root     root           20 May 31  2013 htpasswd
	-rw-r--r--    1 root     root           19 May 31  2013 httpd.conf
	-rw-r--r--    1 root     root         9117 Nov 22  2012 local.conf
	-rw-r--r--    1 root     root           41 Nov 19  2012 pointercal
	-rwxrwxr-x    1 root     root          142 Apr 22  2013 rc.local*
	drwxr-x---    2 root     root         1024 Nov 21  2012 ssl/

以上



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