我應該怎麼做才能在引導時強制根文件系統檢查(以及可選的修復)?
昨天,我們的一台電腦掉到了
grub
外殼上,老實說,我不確定我們打開機器時它是什麼外殼。它表明由於不一致,它無法掛載根文件系統或某種意義上的東西。
我跑了,我相信:
fsck -fy /dev/sda2
重新啟動,問題就消失了。
問題部分來了:
我已經在她的 root 的 crontab 中:
@reboot /home/ruzena/Development/bash/fs-check.sh
而腳本包含:
#!/bin/bash touch /forcefsck
想一想,我不知道,為什麼我要為這麼短的命令創建腳本文件,但無論如何……
此外,在文件中:
/etc/default/rcS
我已經定義:
FSCKFIX=yes
所以我不明白。怎麼會出現這種情況?
我應該怎麼做才能在引導時強制根文件系統檢查(以及可選的修復)?
或者這兩件事是我能做的最大的事情嗎?
作業系統: Linux Mint 18.x Cinnamon 64 位。
fstab
:cat /etc/fstab | grep ext4
顯示:
UUID=a121371e-eb12-43a0-a5ae-11af58ad09f4 / ext4 errors=remount-ro 0 1
grub
:fsck.mode=force
已添加到
grub
配置中。
ext4
引導期間的文件系統檢查在作業系統上測試:虛擬機中的 Linux Mint 18.x
基本資訊
/etc/fstab
具有fsck
作為最後(第 6)列的順序,例如:<file system> <mount point> <type> <options> <dump> <fsck> UUID=2fbcf5e7-1234-abcd-88e8-a72d15580c99 / ext4 errors=remount-ro 0 1
FSCKFIX=yes
變數在/etc/default/rcS
這會將 fsck 更改為自動修復,但不會強制進行 fsck 檢查。
來自
man rcS
:FSCKFIX When the root and all other file systems are checked, fsck is invoked with the -a option which means "autorepair". If there are major inconsistencies then the fsck process will bail out. The system will print a message asking the administrator to repair the file system manually and will present a root shell prompt (actually a sulogin prompt) on the console. Setting this option to yes causes the fsck commands to be run with the -y option instead of the -a option. This will tell fsck always to repair the file systems without asking for permission.
從
man tune2fs
If you are using journaling on your filesystem, your filesystem will never be marked dirty, so it will not normally be checked.
從…開始
設置以下
FSCKFIX=yes
在文件中
/etc/default/rcS
檢查並註意上次檢查 fs 的時間:
sudo tune2fs -l /dev/sda1 | grep "Last checked"
這兩個選項不起作用
- 將(重啟
-F
時強制)參數傳遞給:fsck``shutdown
shutdown -rF now
沒有; 見:
man shutdown
。 2. 添加/forcefsck
空文件:touch /forcefsck
這些腳本似乎使用了這個:
/etc/init.d/checkfs.sh /etc/init.d/checkroot.sh
重新啟動時不起作用,但文件已被刪除。
經核實:
sudo tune2fs -l /dev/sda1 | grep "Last checked" sudo less /var/log/fsck/checkfs sudo less /var/log/fsck/checkroot
這些似乎是
init
腳本的日誌。我再說一遍,這兩個選項都不起作用!
這兩種方法都有效
- systemd-fsck核心啟動開關
編輯主
grub
配置文件:sudoedit /etc/default/grub
GRUB_CMDLINE_LINUX="fsck.mode=force"
sudo update-grub sudo reboot
這確實進行了文件系統檢查,如下所示:
sudo tune2fs -l /dev/sda1 | grep "Last checked"
注意:這確實是一個檢查,但要強制修復,您需要指定
fsck.repair="preen"
, 或fsck.repair="yes"
. 2. 用於在執行atune2fs
之前設置文件系統掛載的數量fsck
,man tune2fs
tune2fs' info is kept in the file system superblock
-c
switch 設置在檢查 fs 之前掛載 fs 的次數。sudo tune2fs -c 1 /dev/sda1
驗證:
sudo tune2fs -l /dev/sda1
此DID已通過以下方式驗證:
sudo tune2fs -l /dev/sda1 | grep "Last checked"
概括
要
fsck
在 Linux Mint 18.x 上每次啟動時強制執行 a,請使用tune2fs
或fsck.mode=force
,以及可選的fsck.repair=preen
/fsck.repair=yes
,核心命令行開關。