시스템 시작 중과 rootfs를 마운트하기 전에 fsck를 강제하는 방법은 무엇입니까?

시스템 시작 중과 rootfs를 마운트하기 전에 fsck를 강제하는 방법은 무엇입니까?

저는 임베디드 Linux 빌드에 Yocto를 사용하고 있습니다. 내 목표는 시스템이 시작될 때마다 파일을 강제로 검사하는 것입니다. 지금까지 다음 단계를 수행했습니다.

  1. 파일을 수정 /etc/default/rcS하고 ENABLE_ROOTFS_FSCK=yesFSCKFIX=yes.
  2. 저는 부팅할 때마다 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부팅 시 호출하는 두 가지 방법이 있습니다.앞으로루트 파일 시스템이 마운트됩니다:

  1. forcefsck파일 시스템 /IE의 루트 디렉터리에 이름이 지정된 파일을 만듭니다.

    $ sudo touch /forcefsck
    

    부팅할 때마다 이 작업을 수행해야 할 수도 있습니다. 내 OS는 부팅 중에 이 파일을 삭제합니다.

  2. 편집기를 사용하여 다음을 추가하세요 /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 파일 시스템이 필요합니다. 실제 루트로 전환하기 전에 실제 루트 파일 시스템을 확인하십시오.

파일 시스템이 마운트되면 수정할 수 없으며(해서는 안 되며) 루트 파일 시스템을 마운트 해제할 수 없습니다.

관련 정보