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 또는 기타 플래그를 전달할 방법은 없는 것 같습니다. (예, 이 세 가지 모두 제 환경에서는 의미가 있습니다. 노트북이고 atime이 필요하지 않으며 devfs를 사용하므로 루트의 nodev도 의미가 있습니다.)

파일 시스템 독립적인 옵션은 사용자 공간에서 mount(8)에 의해 구문 분석되고 "flags" 매개변수의 개별 비트로 커널에 전달됩니다.

관련 정보