Meu /etc/fstab
para minha partição principal do sistema operacional:
UUID=5ee65c50-5672-42a6-9dcf-8bdba30c38aa / ext4 defaults,noatime,nodiratime,data=writeback,errors=remount-ro 0 1
Uma das opções está definida para montar a partição como somente leitura se houver algum erro.
Eu quero que o sistema operacional execute automaticamente fsck
, corrija todos os problemas e, em seguida, reinicialize se algum erro for encontrado e a partição estiver definida como somente leitura. Eu também defini FSCKFIX=yes
em /etc/defaults/rcS
. Atualmente, nada funciona!
A única maneira de fazer isso funcionar é executar uma função bash em rc.local:
TIMEOUT=30
check_disk() {
DEV=/dev/mmcblk0p2
local TPREV=$(date +%s);
while :
do
ro='awk '$4~/(^|,)ro($|,)/' /proc/mounts | grep "/dev/root"'
if [ ! -z "${ro}" ]
then
echo -e "parition is readonly; running fsck now \n"
fsck -y ${DEV}
reboot
break
fi
# Timeout
local TNOW=$(date +%s)
if ((TNOW - TPREV>=TIMEOUT)); then
break
fi
sleep 1
done
}
check_disk &
Eu preciso fazer um loop para x seconds
porque fstab
remonta a partição depois que rc.local
é executado.
Estou executando o Debian. Ajuda é apreciada