편집 2: 소스 확인

편집 2: 소스 확인

여기에 이미지 설명을 입력하세요.부팅하는 동안 실행되는 모든 내용을 읽고 있는데 /sbin/fsck.ext4rootfs가 설치된 후에 실행되고 systemd가 실행된 후에 실행된다는 것을 알 수 있습니다. fsck커널 소스에서 검색했지만 찾을 수 없고 init 스크립트의 일부도 아니기 때문에 이를 어디서, 어떻게 실행해야 하는지 궁금합니다 . 그럼 무엇이 실행되나요 fsck? 제가 사용하는 배포판은 Mint 입니다.

편집: 이 이미지에 표시된 것은 루트 파일 시스템을 마운트한 후 fsck를 실행하는 것입니다.

답변1

편집 2: 소스 확인

우분투를 찾았어initramfs - 도구 소스. 여기서는 메시지가 먼저 인쇄되지만 Begin: "Mounting root file system"실제 설치 전에 mount_root기능이 실행되는 것을 명확하게 볼 수 있습니다 . fsck순서를 표시하기 위해 관련 없는 코드를 생략했습니다. (링크된 소스를 확인하면 스크린샷에서 다른 보고서에 대한 스크립트도 찾을 수 있습니다.)

/init256호선

log_begin_msg "Mounting root file system"
# Always load local and nfs (since these might be needed for /etc or
# /usr, irrespective of the boot script used to mount the rootfs).
. /scripts/local
. /scripts/nfs
. /scripts/${BOOT}
parse_numeric ${ROOT}
maybe_break mountroot
mount_top
mount_premount
mountroot
log_end_msg

/scripts/local@라인 244

mountroot()
{
    local_mount_root
}

/scripts/local@라인 131

local_mount_root()
{
# Some code ommited
    # FIXME This has no error checking
    [ -n "${FSTYPE}" ] && modprobe ${FSTYPE}

    checkfs ${ROOT} root "${FSTYPE}"

    # FIXME This has no error checking
    # Mount root
    mount ${roflag} ${FSTYPE:+-t ${FSTYPE} }${ROOTFLAGS} ${ROOT} ${rootmnt}
    mountroot_status="$?"
    if [ "$LOOP" ]; then
        if [ "$mountroot_status" != 0 ]; then
            if [ ${FSTYPE} = ntfs ] || [ ${FSTYPE} = vfat ]; then
                panic "<Error message ommited>"
            fi
        fi

        mkdir -p /host
        mount -o move ${rootmnt} /host
# Some code ommitted
}

역사적 이유로 유지된 원래 답변

두 가지 옵션:

  1. 루트는 부팅 중에 읽기 전용으로 마운트됩니다.내부에구현이 실행 중입니다 fsck.체계~이다내부에mint에서 구현되었으며 이미 존재하는지 확인했으므로 이 옵션은 적용되지 않습니다.
  2. /sbin/fsck.ext4운영 중"초기 사용자 공간", 에 의해 설정됨파일 시스템 초기화. 이는 시스템의 경우일 가능성이 높습니다.

체계

/sbin/fsck.ext4이것이 이전에 실행된 적이 있다고 하더라도 systemd조금 더 자세히 설명하고 싶습니다.체계fsck읽기 전용으로 마운트된 파일 시스템에서 자체적으로 실행할 수 있습니다 . 바라보다[이메일 보호됨]문서. 대부분의 경우 서비스는 관련이 없기 때문에 기본적으로 민트에서 활성화되지 않습니다.초기 사용자 공간하나.

파일 시스템 초기화

initramfs mint의 어떤 구현이 실행되고 있는지는 모르지만 다음을 사용하겠습니다.dracut예를 들어. (Debian, openSuse 등에서 사용됨) 다음을 선언합니다.설치 준비문서:

루트 파일 시스템이 마침내 표시되면:

  • 모든 유지 관리 작업마운트된 루트 파일 시스템에서 실행 실패가 완료되었습니다.
  • 루트 파일 시스템은 읽기 전용으로 마운트됩니다.
  • 계속 실행해야 하는 모든 프로세스(예: rd.splash 화면 도우미 및 해당 명령 FIFO)는 새로 설치된 루트 파일 시스템으로 승격됩니다.

유지 관리 작업에는 가 포함됩니다 fsck. 추가 증거는 그것이 가능하다는 것을 암시합니다dracut 명령줄 옵션폐쇄 fsck:

rd.skipfsck

rootfs 및 /usr에 대해서는 fsck를 건너뜁니다. /usr을 읽기 전용으로 마운트하고 init 시스템이 다시 마운트하기 전에 fsck를 수행하는 경우 중복을 피하기 위해 이 옵션을 사용할 수 있습니다.

initramfs 구현

동적(udev 기반) 및 유연한 initramfs할 수 있는사용할 수 있다시스템 인프라. Dracut은 그러한 구현 중 하나이며 자체 구현을 작성하려는 일부 배포판이 있을 수 있습니다.

또 다른 옵션은스크립트 기반 initramfs. 이 경우 busybox ash스크립트 셸로 사용되거나 udev로 대체 mdev되거나 완전히 정적일 수도 있습니다. 나확립된int mint의 일부 fsck 오류로 인해 일부 사람들 busybox이 셸로 이동하므로 이 구현은 mint에서 작동할 수 있습니다.

정말로 확인하고 싶다면 initramfs 파일의 압축을 풀고 /boot내용을 살펴보세요. 에 설치된 것을 볼 수도 있습니다 /initramfs.

답변2

[이메일 보호됨]systemd-fsck-root.service는 파일 시스템 검사를 담당하는 서비스입니다. 파일 시스템 검사를 위해 구성된 각 장치에 대해 인스턴스화됩니다. systemd-fsck-root.service는 루트 파일 시스템의 파일 시스템 검사를 담당하지만 루트 파일 시스템이 initramfs에서 검사되지 않은 경우에만 해당됩니다.[이메일 보호됨]다른 모든 파일 시스템과 initramfs의 루트 파일 시스템에 사용됩니다.

https://www.freedesktop.org/software/systemd/man/[이메일 보호됨]

당신도 이것에 관심이 있을 것 같습니다:

https://www.freedesktop.org/software/systemd/man/bootup.html

관련 정보