Kernel-Panik beim Übergeben von Noatime in Bootargs

7

Ich habe ein eingebettetes System mit jffs2 und möchte rootflags=noatimeden Kernel- bootargsParameter übergeben.

Dies führt zu einer Kernel-Panik:

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)

Wenn ich jedoch normal boote und dann das jffs2-Dateisystem mit noatime erneut bereitstelle, funktioniert es einwandfrei:

$ mount -o remount,noatime /

Ich bin verwirrt darüber , dass das Argument rootflags laut Dokumentation "es Ihnen ermöglicht, Optionen für das Mounten des Root-Dateisystems genau wie für das Mount-Programm anzugeben".

Sieht für mich wie ein Kernel-Bug aus, aber andererseits scheint es so offensichtlich, dass ich vielleicht etwas übersehen habe.

Ich habe dies mit den Kernel-Versionen 3.7 und 3.14 getestet.

Kann jemand etwas Licht ins Dunkel bringen?

Grodriguez
quelle
warum hast du nicht die fstab zum einstellen von noatime in deinem /?
c4f4t0r
Ich kann das natürlich tun, aber das beantwortet meine Frage nicht (warum rootflags = noatime nicht funktioniert)
Grodriguez

Antworten:

7

Googeln rootflags noatimebringt diesen Beitrag von Andrew Morton aus dem Jahr 2003 auf den Punkt , vielleicht gilt er immer noch.

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

Beim Testen habe ich versucht, mit 'rootflags = noatime' zu booten, und festgestellt, dass das System nicht booten würde, da ext3, ext2 und reiserfs die Option nicht erkannten. Wenn man sich den Code in fs / ext3 / super.c: parse_options () und init / do_mounts.c: root_data_setup () ansieht, scheint es unmöglich zu sein, eines der dateisystemunabhängigen Flags über Rootflags zu setzen, was den Sonderfall erklärt Code für die Flags 'ro' und 'rw'. Es scheint jedoch keine Möglichkeit zu geben, Nodev, Noatime, Nodiratime oder eines der anderen Flags zu übergeben. (Und ja, alle drei sind in meiner Umgebung sinnvoll - es ist ein Laptop und ich brauche keine Zeit, und ich verwende devfs, also macht nodev im Stammverzeichnis auch Sinn).

Die fs-unabhängigen Optionen werden von mount (8) im Benutzerbereich analysiert und als einzelne Bits in einem "flags" -Argument an den Kernel übergeben.

sourcejedi
quelle
Wäre dies dann ein Dokumentationsfehler?
Grodriguez
Ich sehe, dass die von Ihnen verlinkte Dokumentation ebenfalls auf 2003 datiert ist. Sie könnten also dieses Argument vorbringen. Wenn dies ein häufiges Problem wäre, würde ich den Kernel dafür verantwortlich machen, dass er stattdessen inkonsistent ist. In der Praxis ... wenn Sie den Thread weiter lesen, deutet dies darauf hin, dass die Verwendung eines initrd / initramfs zum Mounten der rootfs dies umgehen könnte, und initramfs ist heutzutage der häufigste Fall (zumindest für nicht eingebettete). Meine Suche brachte auch spezifische Beschwerden hervor, dass dieses Problem beim Booten ohne initramfs auftrat. Was ich hätte erwähnen sollen, wenn ich nicht faul gewesen wäre. ZB bugzilla.kernel.org/show_bug.cgi?id=61601
sourcejedi