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

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

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

アバター
ルビー
記事: 1240
登録日時: 14/11/24(月) 12:12

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

投稿記事 by ルビー »

571JPをSDHCカードに、フルーガルインストールで使っています。
以前から、インストールディレクトリのpupsaveファイルとsfsファイルのタイムスタンプが変な付き方をするのですが、調べるのも手間が掛かりそうなので、ずっと放置していました。
今回、SDHCカードを新しい物に換えたりしたので、ちょっと詳しく調べてみました。

現在、使っている571JPのsfsファイルを中心に調べましたが、431JP2012、550JPも同様の事がありました。
vfatで起こる現象の様で、ntfsでは起こりません。

1. pupsaveファイル
precisesave.4fsのタイムスタンプが、起動時刻-14時間になる。

十数時間過去の時刻でタイムスタンプが付くので、不思議に思ってました。
終了時のpupsaveファイルを書き込んだ時に、時間がずれてるのだろうと、ずっと思ってましたが、そうではなくて起動時にずれていました。

saveアイコンで保存した時のタイムスタンプを見ると正常ですが、終了して再起動するとタイムスタンプが過去にずれます。
何度もテストを繰り返して、起動の時にタイムスタンプが-14時間ずれているのが分かりました。

とりあえずrsyncのバックアップでも更新されるし、実用上の問題はありませんが、時間を換算するのがややこしいです。
550JP、Tahrpup 6.0.5も同じです。
431JP2012は、初めに起動時の時間+9時間ずれたタイムスタンプで固定されて、後は書き込んでもタイムスタンプが変化しません。

2. sfsファイル
起動時にタイムスタンプが、元のタイムスタンプ+9時間で付けられる。

rsyncでバックアップを取っていると、goffice-precise_571.sfsなどのsfsファイルが更新上書きされます。
これらのsfsファイルは、参照されるだけで書き込まれないとの理解なので、なぜrsyncで更新が掛かるのか不思議でした。
rsyncのオプションの書き方に問題があるのかもと思いましたが、オプションを調整しても変わりません。

タイムスタンプを見ていると、9時間単位で増減してずれているのが分かりました。
再現性がいまいち不明で、ずれるタイミングが良く分からなかったのですが、これも起動時にずれている様です。

・goffice-precise_571.sfs
起動時に、元のタイムスタンプ+9時間ずれる。

・puppy_precise_5.7.1JP.sfs
起動時に、元のタイムスタンプ+9時間。終了で-9時間ずれる。
これなら+-0でタイムスタンプは変化しないはずなのですが、rsyncでコピーされる時があるので、何かのタイミングで+側にずれている様です。

550JPも同じみたいです。
431JP2012、Tahrpup 6.0.5は、初めに元のタイムスタンプ+9時間ずれて、以後変化無し。

Eee PC 901X
AtomN270 1.6GHz
RAM1GB
SDHC SanDisk Extreme III 8GB CLASS6
SDHC SanDisk 32GB CLASS4
thinkpadnerd
記事: 2035
登録日時: 15/10/25(日) 14:00

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

投稿記事 by thinkpadnerd »

「9時間のずれ」は JST (日本標準時) を思い起こさせます。この掲示板の右下にも、utc + 9 hours と書いてあります。

以下のサイトに、パソコンの時計の話が書かれています。

http://park12.wakwak.com/~eslab/pcmemo/clock/index.html

それによると、Windows はハードウエアクロックをローカルタイムと規定し、Linux は設定によって、utc (世界標準時)かローカルタイムか決めているということです。確かにタイムゾーンの設定の画面に「ハードウエアクロックは utc」のチェックボックスがあります。

通常は、このチェックボックスはオフなのだろうと思います。

時間の管理と何らかの関係がありそうですが、残念ながら、私にはこれ以上のことは分かりません。

追記
-14 時間は、日本とニューヨークの時差ですが... 英語版を日本語化したことと関係あるのかな。431JP2012 以外はいずれも ubuntu ベースですね。
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 ルビー »

thinkpadnerd さんが書きました:「9時間のずれ」は JST (日本標準時) を思い起こさせます。この掲示板の右下にも、utc + 9 hours と書いてあります。
あ、ほんとだ。隅っこに書いてありますね。
まったく気が付きませんでした。
私も9時間差で日本標準時を連想しましたが、それ以上の事は分かりませんでした。

pupsaveファイルのタイムスタンプが変だと気が付いた時も、もしかして9時間ずれてるのかと計算しても違うので、不規則に変化してるのかと思ってました。
ふと、ある時、/mnt/home/fsckme.flgのタイムスタンプと比べてみたら、-14時間でずれてるのが分かりました。
fsckme.flgはpupsaveファイルを記録するファイルの様で、パピーの起動時刻が分かります。
thinkpadnerd さんが書きました:通常は、このチェックボックスはオフなのだろうと思います。
一応、Countrywizardで確認しましたが、
Asia/Tolyo、
内蔵時計(RTC)をUTCに設定 → OFFになってます。

タイムスタンプがおかしくなるのは、sfsファイルだけで、initrd.gz、vmlinuzは変化しません。
sfsファイルは読み込み専用の圧縮ファイルとの事ですが、読み込みでタイムスタンプがコロコロ変わるのが不思議です。
vfatだけで現象が起こるのも良く分かりません。

ntfsは調べましたが、ext4では調べていません。
気力が尽きてしまって(^^;。
再現性も必ずあると言う訳でも無いみたいです。

USBメモリにインストールしてる人は結構居ると思うのだけど、それにしては書き込みも無いので、私の環境だけなのかもしれないけれど、せっかく調べたので書いておこうと思いました。
私もrsyncでpupsaveのバックアップ取ってなかったら、タイムスタンプの事には気が付かなかったかもしれません。
thinkpadnerd さんが書きました:-14 時間は、日本とニューヨークの時差ですが... 英語版を日本語化したことと関係あるのかな。431JP2012 以外はいずれも ubuntu ベースですね。
14時間差って何だろうと不思議でしたが、日本が関係する数字だったのですね。
何となくつじつまが合って面白い。
thinkpadnerd
記事: 2035
登録日時: 15/10/25(日) 14:00

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

投稿記事 by thinkpadnerd »

vfat の sd カードや usb メモリでタイムスタンプがずれる、という報告はインターネット上に散見されます。vfat は他のファイルシステムとは仕組みが違うようです。

tahrpup 英語版は初回起動時、タイムゾーンはロサンゼルスになっていました。ニューヨーク時間ではないので、どうも 14時間差の根拠にはならないように思いました。

一方、tahrpup シンプル版で /var/log/messages の中身を見てみると、14時間先の時刻が記録されていました。この + (-) 14時間は何だろう。
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 ルビー »

thinkpadnerd さんが書きました:vfat の sd カードや usb メモリでタイムスタンプがずれる、という報告はインターネット上に散見されます。vfat は他のファイルシステムとは仕組みが違うようです。
vfatの時刻精度が2秒の為に、他のファイルシステムとの間でファイルコピーなどをすると、秒単位でタイムスタンプがずれるとの報告でしょうか。
これは結構見ますが、時間単位でずれるのはあまり見かけないと思います。
私は日本語検索だけの為かもしれませんが。
英語サイトでは、情報があるのでしょうか。

初めはvfatの時刻精度の関係で、rsyncでsfsファイルが繰り返し更新されるのかと思い、オプションを調整したのですが改善せず、ファイルのタイムスタンプを良く見てみたら、タイムスタンプその物が書き換わっているのに気が付きました。

vfatだけで現象が起こるのは、vfatが古いファイルシステムで諸々の制約を引きずったまま、いまだに使われ続けている為なのかなと思います。
文字コード関係もそうですが、タイムゾーン絡みの事もややこしくて、あまり深入りしたくないですね(^^;。
thinkpadnerd さんが書きました:一方、tahrpup シンプル版で /var/log/messages の中身を見てみると、14時間先の時刻が記録されていました。この + (-) 14時間は何だろう。
571JPの/var/log/messagesを見てみましたが、行数が多すぎてどこを見れば良いのか分からない。
thinkpadnerd
記事: 2035
登録日時: 15/10/25(日) 14:00

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

投稿記事 by thinkpadnerd »

”ルビーさんが書きました
> 英語サイトでは、情報があるのでしょうか。

"linux vfat timestamp" で検索するといくつか出てきます。
英語の情報も含まれます。incorrect timestamps とか wrong timestamps と書いてあります。
英語の記事では 5時間ずれる、という報告もあるので、日本語環境だけの問題ではないと思います。例えば、ニューヨークは utc -5 です。

添付画像は、571JP の messages です。行の先頭に February 14 と書いてあります。既にバレンタインデーになっています。 :)
添付ファイルを見るにはパーミッションが必要です
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 ルビー »

thinkpadnerd さんが書きました:英語の記事では 5時間ずれる、という報告もあるので、日本語環境だけの問題ではないと思います。例えば、ニューヨークは utc -5 です。
そうでしたか。
ずいぶんと根が深そうな問題みたいですね。
thinkpadnerd さんが書きました:添付画像は、571JP の messages です。行の先頭に February 14 と書いてあります。既にバレンタインデーになっています。 :)
なるほど。行頭のタイムスタンプを見れば良かったのか。
UTCやJSTの文字列を探しちゃってました。

と言う事で、2017/02/14 00:04:16起動(fsckme.flgのタイムスタンプ)の571JPのmessagesを見ました。

1~126行   Feb 13 13:29:27
127行    Feb 12 23:29:27
128~137行 Feb 13 13:29:28

こんな感じで続いて、

172~951行 Feb 14 14:04:16
952行    Feb 14 00:04:16
953~959行 Feb 14 14:04:17

こんな感じで続いて、

969行    Feb 14 14:06:57

で終わってます。

一番過去なのが、168行 Feb 13 07:49:27
一番未来なのが、969行 Feb 14 14:06:57

う~ん。
ますます謎が増えた感じ。
やっぱり、vfatのせいなのかな。
thinkpadnerdさんのは、ntfsですよね。
thinkpadnerd
記事: 2035
登録日時: 15/10/25(日) 14:00

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

投稿記事 by thinkpadnerd »

”ルビーさんが書きました
> 一番未来なのが、969行 Feb 14 14:06:57

起動開始時刻の14時間未来ですね。

> thinkpadnerdさんのは、ntfsですよね。

ntfs です。Windows 10 と同居しています。

他の環境ではどうか、と思って、ThinkPad T42 Lupu528 (vfat, Windows XP と同居) の messages を見てみました。

ほとんどの行が14時間未来を表示していますが、thinkfan と acpid のところだけ、現在時刻を表示しています。
thinkfan は、fan の回転数をユーザー定義でコントロールするプログラムで、本来 puppy には含まれていません。thinkfan は acpi の機能と連携しています。

カーネルが認識している時刻は14時間未来、ということでしょうか。
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 ルビー »

thinkpadnerd さんが書きました:他の環境ではどうか、と思って、ThinkPad T42 Lupu528 (vfat, Windows XP と同居) の messages を見てみました。
私も、ntfsにインストールしてある571JPとTahrpupシンプル版のmessagesを見てみました。
全行で14時間後の時刻になってました。
パピーの中ではext4だと思うけど、パピーが乗っかっているディスクのファイルシステムで挙動が変わるのも、何だか不思議です。

vfatはローカル時刻、ntfsはUTCでディスクに記録するのが仕様らしいですが、その辺の何かが絡んでくるのかな。
結局、ググった範囲の事でしか分からないですけど。

14時間の数字がキーワードっぽいですね。
Zstep
記事: 207
登録日時: 16/12/06(火) 12:49

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

投稿記事 by Zstep »

messagesの時間のずれが気になり(ext4でも起こります)
本家フォーラムのこのトピックスながめてたら
http://www.murga-linux.com/puppy/viewto ... &start=180

5.5の場合はなんですが /etc/rc.d/rc.sysinit の#unset TZ の部分をunset TZ に
書き換えたら良いみたいに書いてあったから試しにtahr6.0.5でやってみたところ
messagesの時間のずれはなくなりましたがvfatのタイムスタンプは相変わらずずれたままなので

さらに追っかけて

initrd.gzのinitのexport TZ='XXX-23'の部分が関係ありそうだなって思って
initrd.gzを展開export TZ='XXX-23'の部分をexport TZ='XXX-9'に書き換え
initrd.gzを作り直し試したらvfatのタイムスタンプの時間のずれ、messagesの時間のずれともなくなりました
(/etc/rc.d/rc.sysinitは元にもどしてます)

571JP,Tahrpup 6.0.5で試してます
*BIOSの時間がずれていると同じだけずれます

追記
2. sfsファイル
の部分は直ってなかった
添付ファイルを見るにはパーミッションが必要です
アバター
ルビー
記事: 1240
登録日時: 14/11/24(月) 12:12

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

投稿記事 by ルビー »

Zstep さんが書きました:2. sfsファイル
の部分は直ってなかった
検証、ありがとうございます。
pupsaveファイルのタイムスタンプだけでも、改善すれば嬉しいです。
initrd.gzの中までは、いじった事ないですが、試してみます。

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

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

投稿記事 by thinkpadnerd »

本家フォーラムの記事を読んでみましたが、起動時に、いわばダミーのタイムゾーンを設定しているのには、理由があるらしいです。

Zstep さんの提案は貴重だと思うのですが、日本語(化)版とは言え、initrd.gz の部分をローカライズしてしまうのはちょっと抵抗があります。朝ドラのヒロインのせりふではないですが、なんか、なんかな...

手もとにメモリーカードの類がないので試してみることができないのですが、

# mount -o tz=UTC -t vfat /dev/sdb1 /mnt/sdb1

のように、オプションをつけてマウントしたらどうなるだろうか、と考えています。(時間の補正を行わないようにする) このオプションが効くのなら、USBメモリなどから Puppy が起動する時にも適用しないといけないことになりますが。

本家フォーラムに投稿があっても未だに改良されないということは、向こうの人たちは案外、細かいことは気にしないのかな、と思ったりします。(remasterpup2 における zdrv の扱いもそうでした。)

オリジナルのままで実害があるとすれば、例えば vfat のメディアを rsync で扱う場合ですが、checksum オプションを付けるというのはどうでしょうか。(これも自分はやったことがありません。コピーが遅くなるかもしれません。)
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を弄らず、touch コマンドでタイムスタンプ書き換えるのも
ありかなって思ってます

reference オプション使うと便利かな

/root/Startあたりに入れておけば自動でやってくれるでしょう
アバター
ルビー
記事: 1240
登録日時: 14/11/24(月) 12:12

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

投稿記事 by ルビー »

Zstep さんが書きました:initrd.gzのinitのexport TZ='XXX-23'の部分が関係ありそうだなって思って
initrd.gzを展開export TZ='XXX-23'の部分をexport TZ='XXX-9'に書き換え
initrd.gzを作り直し試したらvfatのタイムスタンプの時間のずれ、messagesの時間のずれともなくなりました
571JPで試してみました。
initの574行目の該当個所を修正。

export TZ='XXX-23' #100318 imaginary place right around the world east of Greenwich.

messagesの時刻ずれは無くなりました。
pupsaveファイルのタイムスタンプは、起動時の時刻で付きます。
-14時間のずれが無くなっただけましかもですが、保存時のタイムスタンプが付いていて欲しいですね。

vfat上のpupsaveファイルは、通常、終了時にだけ保存されますが、その時のタイムスタンプのままであるのが普通だと思います。
571JP終了後に、他のパピーで見ると、pupsaveファイルのタイムスタンプは、終了時の時刻になっています。

initrd.gzをいじるのは初めてだったので、テスト用のインストールフォルダを作って作業しました。
Tahrpupでフォルダ作成の作業をしたついでに、そのまま571JPのinitrd.gzを展開して編集しようと思ったら、initrdファイル一つだけが展開されて、Geanyで開けません。
調べると、initrd.gzの編集用ツールを用意しないといけないみたいなので、時間のある時にやろうとあきらめましたが、一応と思い571JPで試したら、編集用のツール無しで簡単に展開、編集できました。

571JP、便利ですね。
アバター
ルビー
記事: 1240
登録日時: 14/11/24(月) 12:12

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

投稿記事 by ルビー »

thinkpadnerd さんが書きました:# mount -o tz=UTC -t vfat /dev/sdb1 /mnt/sdb1

のように、オプションをつけてマウントしたらどうなるだろうか、と考えています。(時間の補正を行わないようにする) このオプションが効くのなら、USBメモリなどから Puppy が起動する時にも適用しないといけないことになりますが。
起動ドライブのマウントオプションって、簡単に変えられのでしょうか。
menu.lstをいじくる?

マウントのオプションをいじると、思わぬ副作用にはまったりしそうな気がします。
SDカードの移し替えをした時も、日本語ファイル名が化けたりして、マウントオプションを調整したりで、結構手間が掛かりました。

私はパピーのインストールディレクトリだけでなくて、SDカードを丸ごとrsyncでバックアップしてます。
vfatでrsyncを使うと時刻精度の問題などにぶち当たるので、オプションの調整が必要ですが、パピーのsfsファイル以外は問題無しです。
thinkpadnerd さんが書きました:本家フォーラムに投稿があっても未だに改良されないということは、向こうの人たちは案外、細かいことは気にしないのかな、と思ったりします。(remasterpup2 における zdrv の扱いもそうでした。)
何となく分かります。
以前、結構名前の通ったあちらのカメラバッグを買った時に、バッグのポケットの口が縫い込まれてあって絶句したのを覚えています(^^;。
いい物は本当にいいのですけどね。
thinkpadnerd さんが書きました:オリジナルのままで実害があるとすれば、例えば vfat のメディアを rsync で扱う場合ですが、checksum オプションを付けるというのはどうでしょうか。(これも自分はやったことがありません。コピーが遅くなるかもしれません。)
試してみました。
SDカードじゃなくて別環境ですが、通常は1~2分で終わるのが、15分ほど掛かりました。
激遅になりますね。

@スマホ
返信する