bootargsでnoatimeを渡すとカーネルパニックが発生する

bootargsでnoatimeを渡すとカーネルパニックが発生する

jffs2を使用する組み込みシステムがあり、rootflags=noatimeカーネルbootargsパラメータを渡したいと思います。

これによりカーネルパニックが発生します。

jffs2: Error: unrecognized mount option 'noatime' or missing value
[...]
No filesystem could mount root, tried:  jffs2
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,3)

ただし、正常に起動してからnoatimeを使用してjffs2ファイルシステムを再マウントすると、正常に動作します。

$ mount -o remount,noatime /

私はこれについて混乱しています。なぜなら文書、rootflagsパラメータを使用すると、「マウンタと同様に、ルートファイルシステムのマウントに関連するオプションを提供できます」。

私にとって、これはカーネルのバグのように見えますが、一方では明らかに見え、多分私は何かを見落としているかもしれません。

カーネルバージョン3.7と3.14でこれをテストしました。

誰かがこれについて明らかにできますか?

ベストアンサー1

Google検索rootflags noatimeでAndrew Mortonが書いた2003年の記事が登場しました。

http://lkml.org/lkml/2003/8/12/236

何かをテスト中に「rootflags = noatime」で起動しようとしましたが、ext3、ext2、またはreiserfsがそのオプションを認識しないため、システムが起動しないことがわかりました。 fs/ext3/super.c:parse_options() および init/do_mounts.c:root_data_setup() のコードを見ると、rootflags を介してファイルシステムに関連付けられていないフラグを設定することはできません。これは「ro」および「ro」および「rw」フラグのコードです。しかし、nodev、noatime、nodiratime、または他のフラグを渡す方法はないようです。 (はい、これら3つすべて私の環境では意味があります。ノートブックであり、atimeは必要ありません。devfsを使用するため、ルートのnodevも意味があります。)

ファイルシステムに依存しないオプションは、ユーザー空間でmount(8)によって解析され、「flags」パラメータの個々のビットとしてカーネルに渡されます。

おすすめ記事