編集2:ソースの確認

編集2:ソースの確認

ここに画像の説明を入力してください。起動中に実行されるすべての内容を読み取っていますが、/sbin/fsck.ext4rootfsがインストールされた後に実行され、systemdが実行された後に実行されることがわかります。fsckカーネルソースから検索しましたが、見つからずinitスクリプトの一部でもないので、これをどこで、どのように実行するのか疑問に思います。それでは何が実行されますかfsck?私が使用しているディストリビューションはMintです。

編集:この画像に表示されるのは、ルートファイルシステムをマウントした後にfsckを実行することです。

答え1

編集2:ソースの確認

Ubuntuを見つけました。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
}

歴史的な理由で維持された元の答え

2つのオプション:

  1. ルートは起動時に読み取り専用でマウントされます。内部に実装が実行中ですfsckシステム~である内部にmintで実装されており、すでに存在していることを確認したので、このオプションは適用されません。
  2. /sbin/fsck.ext4運転中「初期ユーザースペース」、によって設定されましたファイルシステムの初期化。これはシステムの場合である可能性が高いです。

システム

/sbin/fsck.ext4これが以前に実行されたことがあるとしても、systemdもう少し詳しく説明したいと思います。システムfsck読み取り専用でマウントされたファイルシステムで独自に実行できます。バラより[Eメール保護]文書。ほとんどの場合、サービスは関連性がないため、デフォルトではミントでは有効になりません。初期ユーザースペース一つ。

ファイルシステムの初期化

initramfs mintのどの実装が実行されているかはわかりませんが、次のようにします。dracut例えば。 (Debian、openSuseなどで使用されます)以下を宣言します。設置準備文書:

ルートファイルシステムがついに表示される場合:

  • すべてのメンテナンス作業マウントされたルートファイルシステムで実行失敗が完了しました。
  • ルートファイルシステムは読み取り専用でマウントされます。
  • 引き続き実行する必要があるすべてのプロセス(rd.splashスクリーンヘルパーとそのコマンドFIFOなど)は、新しくインストールされたルートファイルシステムに昇格されます。

メンテナンスタスクにはが含まれますfsck。追加の証拠はそれが可能であることを示唆していますdracutコマンドラインオプション閉鎖fsck:

rd.skipfsck

rootfsと/ usrの場合はfsckをスキップします。 / usrを読み取り専用でマウントし、initシステムが再マウントする前にfsckを実行している場合は、このオプションを使用して冗長性を回避できます。

initramfsの実装

動的(udevベース)と柔軟なinitramfsできる利用できるシステムインフラ。 Dracutはそのような実装の1つであり、独自の実装を作成したいいくつかのディストリビューションがあるかもしれません。

別のオプションはスクリプトベースの initramfs。この場合、busybox ashスクリプトシェルとして使用されるか、udevで置き換えmdevられるか、完全に静的である可能性があります。私確立されたint mintの一部のfsckエラーにより、一部の人々はbusyboxシェルに移動するため、この実装はmintで機能する可能性があります。

本当に確認したい場合は、initramfsファイルを解凍して/boot内容を確認してください。にインストールされているものを見ることもできます/initramfs

答え2

[Eメール保護]systemd-fsck-root.service はファイルシステムの検査を担当するサービスです。ファイルシステム検査用に構成された各デバイスに対してインスタンス化されます。 systemd-fsck-root.service は、ルートファイルシステムのファイルシステムチェックを担当しますが、ルートファイルシステムが initramfs でチェックされていない場合にのみ該当します。[Eメール保護]他のすべてのファイルシステムとinitramfsのルートファイルシステムに使用されます。

https://www.freedesktop.org/software/systemd/man/[Eメール保護]

あなたもこれに興味があるようです:

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

関連情報