vfatでのsfsのタイムスタンプ

5.X系のバグ、トラブル・質問

モデレータ: 暇人, YoN, nyu

thinkpadnerd
記事: 2035
登録日時: 15/10/25(日) 14:00

Re: vfatでのsfsのタイムスタンプ

投稿記事 by thinkpadnerd »

”ルビーさんが書きました
> 起動ドライブのマウントオプションって、簡単に変えられのでしょうか。

いや、これは理屈の上での話です。私には皆目見当もつきません。
initrd.gz の中に書かれていたりするのかもしれませんが。

追記
既にこの時点でメディアにアクセスしているので無理ですね。 :oops:

データを保存したメモリーカードの類なら、オプション指定して mount すれば、正しく表示されるかもしれません。

> 通常は1~2分で終わるのが、15分ほど掛かりました。

残念ながら、現実的な方法ではなさそうですね。
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
Zstep
記事: 207
登録日時: 16/12/06(火) 12:49

Re: vfatでのsfsのタイムスタンプ

投稿記事 by Zstep »

> initrd.gz の中に書かれていたりするのかもしれませんが。

パラメータにutf8とかnoatimeとか追記して試したら有効になったから

571JPだとinitrd.gzの中のinitの268-269行

vfat)
mount -t $MNT_T -o $VFAT_OUT_PARAM $MNT_DEV $MNT_DIR

パラメータの方は616行目
VFAT_OUT_PARAM='shortname=mixed,quiet'

辺りじゃあないかと
最後に編集したユーザー Zstep [ 17/02/17(金) 22:14 ], 累計 1 回
thinkpadnerd
記事: 2035
登録日時: 15/10/25(日) 14:00

Re: vfatでのsfsのタイムスタンプ

投稿記事 by thinkpadnerd »

Zstep さん、情報ありがとうございます。

vfat にはタイムゾーンの概念がないのだから、時間の補正なしでマウントすれば、よさそうなものですが、これも素人考えかもしれません。

私のような素人が考えることは、技術者の人ならとっくに思いついたでしょうし、可能ならば、システムの設計に反映されていると思います。何らかの理由で実現していないのでしょう。
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
アバター
ルビー
記事: 1240
登録日時: 14/11/24(月) 12:12

Re: vfatでのsfsのタイムスタンプ

投稿記事 by ルビー »

ルビー さんが書きました:vfat上のpupsaveファイルは、通常、終了時にだけ保存されますが、その時のタイムスタンプのままであるのが普通だと思います。
これはいろいろ間違ってますね(^^;。
フラッシュメモリの記述が抜けてるのと、pupsaveの保存は設定の時間ごとと終了時に保存される。
です。
Zstep さんが書きました:initrd.gzを弄らず、touch コマンドでタイムスタンプ書き換えるのも
ありかなって思ってます
発想の転換で、面白いアイディアですね。
パピーの前回終了時間を調べて、pupsaveファイルのタイムスタンプを書き換えるスクリプトを作れば良いかなと考えて、作業しながらふと思いました。

pupsaveファイルの中を見る為に、ファイルをクリックしてマウント後、再度クリックのアンマウントでタイムスタンプが変わります。
同様にパピーの起動時にpupsaveファイルを読み込んだ時に、タイムスタンプも書き換えられるのかなと思いました。
読み込むだけだから、タイムスタンプは変わらないはずと単純に思ってましたが、違うのかもしれません。

確認の方法も思い付かないので間違ってるかもですが、USBメモリに限らず、ハードディスクにフルーガルインストールした場合でも、起動時にpupsaveファイルのタイムスタンプが書き換えられる。
ハードディスクにインストールした場合は、起動直後からすぐにpupsaveの書き出しが始まるので、それに気が付かない。
フラッシュメモリの場合は、起動後にすぐにはpupsaveが書き出されないので、タイムスタンプの変化が分かる。

フラッシュメモリで起動後に見えるpupsaveファイルのタイムスタンプは、保存時の時刻と考えていたのが間違いで、それにUTCの時刻ずれが加わって、更にややこしさが増す。
こんな事かもしれないと思いました。

/etc/rc.d/PUPSTATEのタイムスタンプが、pupsaveファイルのタイムスタンプとほぼ同じ、起動時刻-14時間なのに気が付きました。
initrd.gzのexport TZ='XXX-9'に編集後も同じですが、こちらは起動時刻で付きます。
ntfsのハードディスクにフルーガルインストールした、571JP、Tahrpup 6.0.5のPUPSTATEも見てみましたが、起動時刻-14時間のタイムスタンプになってます。

sfsファイルだけでも、起動時にtouchでタイムスタンプを付け直すのも良いかもですが、どうも起動後にもずれてるっぽいのです。
続けてrsyncを掛けた時にsfsファイルが更新された事があるのですが、再現性が無いので、検証が困難です。

とりあえず、
1. 気にしない
2. rsyncでsfsファイルを除外する

実用上は困ってないので1.でも良いのですが、2.の方を考えてます。
アバター
ルビー
記事: 1240
登録日時: 14/11/24(月) 12:12

Re: vfatでのsfsのタイムスタンプ

投稿記事 by ルビー »

rsyncでSDHCカードのバックアップを取った後、終了前に再度rsyncを掛けると、sfsファイルがコピーされる事がありますが、この時のsfsファイルのタイムスタンプのずれを確認できました。

タイムスタンプがずれているのは、SDHCカードではなくて、バックアップ先のポータブルハードディスクのsfsファイルでした。
ポータブルハードディスクはvfatです。

ポータブルハードディスクのマウントを外して再度マウントすると、sfsファイルのタイムスタンプが、元の時刻+9時間になりました。
マウント方法は、デスクトップのアイコンクリック。
再現性は無いです。

SDHCカードの方ばかりに気を取られて、バックアップ先の方まで気が回りませんでしたが、rsyncを掛ける前にタイムスタンプを見比べていて、やっと分かりました。

タイムスタンプがずれたのは、puppy_precise_5.7.1JP.sfsだけです。
以前も、このsfsファイルが、再度のrsyncで更新されたのを覚えています。
rsyncのログファイルを取ってあるので、ログを調べてみると、ポータブルハードディスクでタイムスタンプがずれるのは、puppy_precise_5.7.1JP.sfsだけの様です。

結局、sfsファイルのタイムスタンプのずれは、vfatのSDHCカード、ポータブルハードディスク両方で起こっていました。
thinkpadnerd さんが書きました:手もとにメモリーカードの類がないので試してみることができないのですが、

# mount -o tz=UTC -t vfat /dev/sdb1 /mnt/sdb1
thinkpadnerd さんが書きました:データを保存したメモリーカードの類なら、オプション指定して mount すれば、正しく表示されるかもしれません。
vfatのUSBメモリで、試してみました。
全部のフォルダ、ファイルのタイムスタンプが元の時刻+9時間ずれます。
オプションが -t vfat だけでは、ずれないです。
thinkpadnerd
記事: 2035
登録日時: 15/10/25(日) 14:00

Re: vfatでのsfsのタイムスタンプ

投稿記事 by thinkpadnerd »

”ルビーさんが書きました
> vfatのUSBメモリで、試してみました。
> 全部のフォルダ、ファイルのタイムスタンプが元の時刻+9時間ずれます。
> オプションが -t vfat だけでは、ずれないです。

マシンがローカルタイムだと、tz=UTC オプションを付けると補正されてしまうのですね。
man page を参考にしたのですが、マシン側がUTCであることを前提にした話だったかもしれません。m(__)m

現行の hwclock コマンドが --utc をデフォルトにしているのは、そういう方向に動きつつあるということかな、と思います。Windows がハードウェアクロック=ローカルタイムなので、デュアルブートの環境ではローカルタイムにしておくほうが都合がいいのですが、Windows でもレジストリを操作すれば UTC に設定できるような情報もありました。ntfs の場合でしょうけど。
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
返信する