This service is available only in Japanese-language.

rootfsのファイルのタイムスタンプはどうやって決まるのか?

弊社で実施するYoctoProject® 公式実践講座の中で、受講生からあった質問です。

ターゲットのファイルのタイムスタンプが2018年3月9日になっているが、どうしてこの日付になっているのか?

ファイルシステムのタイムスタンプを同一の値に設定する機能は、Yocto 3.1 のpoky distoribution (poky/meta-poky/conf/distro/poky.conf ) でデフォルトで有効化されたクラスが提供しています。

https://docs.yoctoproject.org/singleindex.html#reproducible-builds-now-e...
https://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/meta-poky/conf/di...

値そのものの設定は、poky/meta/classes/reproducible_build_simple.bbclass の中で
export SOURCE_DATE_EPOCH ??= "1520598896"
と設定されており、
$ date -d @1520598896 を実行すると
2018年 3月 9日 金曜日 21:34:56 JST
と、ターゲットのファイルのタイムスタンプに設定されている日付が表示されます。

SOURCE_DATE_EPOCH を設定している reproducible_build_simple.bbclass は、 reproducible_build.bbclass から inherit されています。
reproducible_build.bbclass は、poky/meta-poky/conf/distro/poky.conf の中で
INHERIT += "reproducible_build"
と組み込む設定がdunfell より追加されています。

DISTRO="poky" の場合(又はpoky.conf をベースとしたDISTRO)は、SOURCE_DATE_EPOCH を明示的に指定しない場合は
2018年3月19日に、1970/1/1 GMTからの通算秒をSOURCE_DATE_EPOCH に設定した場合は、
指定した通算秒がファイルのタイムスタンプに使用されます。