저는 임베디드 Linux 빌드에 Yocto를 사용하고 있습니다. 내 목표는 시스템이 시작될 때마다 파일을 강제로 검사하는 것입니다. 지금까지 다음 단계를 수행했습니다.
- 파일을 수정
/etc/default/rcS
하고ENABLE_ROOTFS_FSCK=yes
및FSCKFIX=yes
. - 저는 부팅할 때마다
tune2fs -c 1 <my_fs>
파일 시스템을 확인하기 위해 이 명령을 사용합니다.
다음 로그가 보입니다.
`EXT4-fs (mmcblk0p2): warning: maximal mount count reached, running e2fsck is recommended`
루트 파티션을 마운트하기 전에 fsck는 마운트 후 즉시 파티션을 확인하려고 시도합니다. 따라서 프로세스가 중단됩니다. 통나무:
mount: / is busy
*** ERROR! Cannot fsck root fs because it is not mounted read-only!
파티션을 마운트하기 전에 fsck가 파일 시스템을 확인하도록 강제하는 방법은 무엇입니까? 도움을 주셔서 미리 감사드립니다.
답변1
귀하의 질문을 오해했을 수도 있지만,
tune2fs
달리기 위해 달릴 필요는 없습니다 fsck
. fs 매개변수를 "조정"하지 않기 때문에 tune2fs
이를 프록시로 사용하면 fsck
오버헤드가 추가되고 부팅 프로세스가 약간 느려질 수 있습니다.
어쩌면 당신은 의미합니까 e2fsck
? fsck
~로 행동하다"패키지"또는"프론트 엔드"공급유산지원하다. 일반적 fsck
으로 전화만 하면 e2fsck
실제 작업이 수행됩니다.
어쨌든 - 대답은 다음과 같습니다.
fsck
운영 체제에 따라 호출이 다를 수 있다고 생각합니다 . 내 "임베디드 Linux" 운영 체제 중 하나는 RPi이며 fsck
부팅 시 호출하는 두 가지 방법이 있습니다.앞으로루트 파일 시스템이 마운트됩니다:
forcefsck
파일 시스템/
IE의 루트 디렉터리에 이름이 지정된 파일을 만듭니다.$ sudo touch /forcefsck
부팅할 때마다 이 작업을 수행해야 할 수도 있습니다. 내 OS는 부팅 중에 이 파일을 삭제합니다.
편집기를 사용하여 다음을 추가하세요
/boot/cmdline.txt
.fsck.mode=강제
$ nano /boot/cmdline.txt
에서:
console=serial0,115200 console=tty1 root=PARTUUID=6c586e13-02 rootfstype=ext4 엘리베이터=기한 fsck.repair=예 rootwait도착하다:
console=serial0,115200 console=tty1 root=PARTUUID=6c586e13-02 rootfstype=ext4 리프트=기한 fsck.mode=force fsck.repair=yes rootwait
다시 말하지만 OS에 따라 다르다고 생각하므로 YMMV입니다.
답변2
이를 수행하려면 initram 파일 시스템이 필요합니다. 실제 루트로 전환하기 전에 실제 루트 파일 시스템을 확인하십시오.
파일 시스템이 마운트되면 수정할 수 없으며(해서는 안 되며) 루트 파일 시스템을 마운트 해제할 수 없습니다.