Як змусити fsck при кожному завантаженні - всі (відповідні) файлові системи?


14

Я працюю з без вентиляторним ПК (насправді їх сотні), де є 6 і 3 розділи debian (FAT і 2x ext2). У системі немає кнопки живлення як такої, тому більшість людей прагнуть витягнути вилку, щоб "вимкнути її", а не init 0 (або еквівалент). В результаті файлові системи (і) збирають помилки досить швидко.

Я намагався використовувати "shutdown -rF", щоб примусити fsck, але це, здається, не працює. Мені цікаво, чи є якийсь спосіб сказати системі перевірити кожну точку монтажу / FS перед їх монтажем.

Я спробував встановити параметр fsck в / etc / fstab. Зазвичай це дає мені "Знайдені помилки. Запустити повідомлення fsck вручну '.

Є інші варіанти спробувати?


1
А) Хто були вашими користувачами? Б) Чи могли б ви додати помітну кнопку "Завершення роботи", яка завжди була видно на екрані? C) Або ви могли б навчити своїх користувачів? Г) Чому у машин не було кнопок живлення спереду?
незабутнійідпідтримкаMonica

Це питання є майже дублікатом unix.stackexchange.com/questions/180488/… того ж користувача.
незабутніidSupportsMonica

Відповіді:


16

У /etc/init.d/checkfs.shцьому рядку if [ -f /forcefsck ] || grep -s -w -i "forcefsck" /proc/cmdline, тому надання forcefsckв командному рядку ядра або генерування /forcefsckфайлу при відключенні повинно викликати fsck при наступному перезавантаженні.

Щоб запобігти ручним запуску файлів fsck, попросіть fsckспробувати автоматично виправити помилки з -yпараметром, коментуючи та змінивши "ні" на yesнаступний запис / etc / default / rcS, після редагування він повинен виглядати так:

# automatically repair filesystems with inconsistencies during boot
FSCKFIX=yes

Один варіант (forcefsck або FSCKFIX) не передбачає іншого.


Чи впорається це з умовою "Запустити fsck вручну"?
ethrbunny

Дійсно, я прочитав занадто швидко, оновив свою відповідь.
кінцевий сірий зелений колір

Я встановив і FSCKFIX = так, і значення в checkfs.sh. У жодному випадку fsck не запускався, коли я перезавантажувався (через init 6). Я, мабуть, щось тут пропускаю.
ethrbunny

Нічого не змінюйте checkfs.sh, лише редагуйте / etc / default / rcS та запускайте touch /forcefsckперед перезавантаженням. Останню команду потрібно запустити перед кожним перезапуском або відразу після завантаження, але виконано сценарій fsck init.
кінцевий сірий зелений колір

Хм .. не пощастило. Я все ще бачу повідомлення "монтаж неперевіреної файлової системи" з подальшим безліччю помилок "видалити вказівку на посилання". Поки що зміна / etc / fstab - це єдине, що мало будь-який ефект. Не впевнений, що я роблю так, що ваші пропозиції не працюють.
ethrbunny

8

Додайте fsck.mode=forceпараметр Kernel у завантажувач. Додайте цю опцію до GRUB_CMDLINE_LINUX_DEFAULT=змінної всередині /etc/default/grub. Як root, генеруйте новий файл конфігурації grub:

[root@host]# grub-mkconfig -o /boot/grub/grub.cfg

Цей параметр має такий же ефект, як і при створенні forcefsck файлу всередині кореня точки монтування.

Рішення використання checkfs.shсценарію краще підходить Debian, але не повинно працювати в інших дистрибутивах


7

Я редагую свою відповідь:

Команда така:

sudo tune2fs -c 1 /dev/sdX

відповідно до manpages -c аргумент tune2fs підраховує кількість примірників кріплення для розділу. Отже, 1 сила перевірити Fs після кожного монтажного екземпляра.

( http://man7.org/linux/man-pages/man8/tune2fs.8.html )


2
Тільки команди в більшості випадків недостатньо, напишіть хоча б мінімальне пояснення.
петерх
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.