Есть и третья причина, которая оказалась моей проблемой:
Обычно в каждом пункте меню grub есть строка 'linux...' и строка 'initrd....'.
Поскольку у меня не хватило места в /boot, я удалил файл initrd...., запустил update -initramfs для другой версии ядра, но забыл запустить update -grub, который будет обновлять соответствующие записи.
Я исправил это, вручную добавив строку в меню загрузки во время последовательности загрузки, затем сделал ее постоянной после входа в систему и смог запустить обновление -grub.
Создайте файл/etc/systemd/system/MyFsckScript.service
(не стесняйтесь заменить "MyFsckScript" , не изменяйте остальные )следующим содержимым:
[Unit]
Description=Filesytem check
Documentation=man:fsck(8)
Before=local-fs.target
[Service]
ExecStart=/sbin/fsck REPLACETHISBYYOURDRIVE
[Install]
Alias=fsck.service
Теперь запустите:systemctl enable fsck
и теперь он будет запускаться при каждой загрузке.
Для некоторых дистрибутивов потребуется некоторая «подгонка» этого ответа, но это должно быть хорошим началом.
Вы можете настроить отдельные файловые системы ext *так, чтобы они требовали fsck
при каждом монтировании, используя
tune2fs -c 1 /dev/sda1 # replace with each device name
fsck.xfs
не является -op. Он просто возвращает истину. fsck.zfs
не существует. Я не проверял другие типы файловых систем. Служба systemd не требуется.
Systemd поставляется с systemd-fsck
, его можно включить для проверки ФС при загрузке:
sudo systemctl enable systemd-fsck-root.service
или
sudo systemctl enable systemd-fsck@.service