Fstab

回送設備的啟動時 Fsck

  • January 3, 2018

我發現無法通過文件中的標誌fsck在啟動時在回送設備上執行,也無法通過在安裝回送設備時手動執行來完成此操作。fsck``fstab``fsck

是否有替代方法可以在啟動時檢查設備?

我找到了一個優雅可靠的解決方案。

我已經為“/etc/initramfs-tools/scripts/local-premount/”啟動階段編寫了一個腳本,以便在文件系統安裝之前處理我的循環磁碟。

詳情如下:

  1. *在/etc/initramfs-tools/scripts/local-premount/*中創建腳本。
  2. 通過命令update-initramfs -u更新initrd.img

這是腳本源:

#!/bin/sh

# Antonio Petricca <antonio.petricca@gmail.com> - 03/01/2018

PREREQ=""

# Output pre-requisites
prereqs()
{
       echo "$PREREQ"
}

case "$1" in
   prereqs)
       prereqs
       exit 0
       ;;
esac

. /scripts/functions

log_begin_msg "Running file system check on loop device(s)"

DEV=/dev/sdb5
MNT=/tmp/mnt
LOOP=$MNT/.linux-loops/242eef08-32d6-42c2-93eb-afdc2111a13e.ext4

mkdir $MNT && \
mount -t ntfs $DEV $MNT && \
fsck.ext4 -p -v $LOOP && \
umount $MNT

# Uncomment next line to hold messages for debugging
# sleep 10

log_end_msg "Done"

# Continue boot anyway

exit 0

問候!

關鍵片語是*“安裝循環設備時”*。您可以fsck在未安裝的環回設備上執行。

換句話說,您可以執行losetup創建環回塊設備並將其附加到相關文件,然後執行fsck它,然後執行mount它。

當然,這可以編寫腳本。如果環回掛載被標記,您甚至可以在/etc/rc.local或類似的情況下執行此操作 - 然後為每個環回 fs in 執行 losttup/fsck/mount 。noauto``/etc/fstab``/etc/fstab

請注意,這是對標誌的一種濫用,noauto因為環回文件系統最終將被自動掛載。註釋掉您不想自動掛載的任何環回文件系統。

或者,您可以修改mount -a系統上執行的任何程式碼(systemd、sysvinit shell 腳本或其他),以便它執行mount -a -tnoloop,這樣環回文件系統永遠不會像其他文件系統一樣自動掛載。然後可以編寫執行 losttup/fsck/mount 的腳本以尊重該noauto標誌(如果存在)。

引用自:https://unix.stackexchange.com/questions/413991