Fstab
回送設備的啟動時 Fsck
我發現無法通過文件中的標誌
fsck
在啟動時在回送設備上執行,也無法通過在安裝回送設備時手動執行來完成此操作。fsck``fstab``fsck
是否有替代方法可以在啟動時檢查設備?
我找到了一個優雅可靠的解決方案。
我已經為“/etc/initramfs-tools/scripts/local-premount/”啟動階段編寫了一個腳本,以便在文件系統安裝之前處理我的循環磁碟。
詳情如下:
- *在/etc/initramfs-tools/scripts/local-premount/*中創建腳本。
- 通過命令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
標誌(如果存在)。