Raspberry Pi 3 и Raspbian Jessie - Как запустить fsck при загрузке?

13

Как запустить fsck при загрузке при использовании Pi 3 и Raspberry Jessie? Я прочитал некоторые уроки, но они отличаются.

Я бежал, sudo touch /forcefsckно что еще я должен сделать? Я знаю, что должен установить FSCKFIX = yes, но какой файл правильный? Некоторые говорят /lib/init/vars.shдругие /etc/default/rcS.

Как я могу проверить, что мои настройки работают? У меня нет видимости для экрана. Существует перебои в подаче электроэнергии, поэтому существует высокий риск повреждения файловой системы.

Редактировать:

Я попробовал два решения, упомянутых ниже.

1) Использование sudo shutdown -rF now/var/log/boot.log говорит: [^[[32m OK ^[[0m] Started Load/Save Random Seed. [^[[32m OK ^[[0m] Started Show Plymouth Boot Screen. [ 3.679250] systemd-fsck[219]: fsck.fat 3.0.27 (2014-11-12) [ 3.681320] systemd-fsck[219]: /dev/mmcblk0p1: 124 files, 2666/8057 clusters [^[[32m OK ^[[0m] Started File System Check on /dev/mmcblk0p1. Mounting /boot... [^[[32m OK ^[[0m] Reached target Paths. [^[[32m OK ^[[0m] Created slice system-systemd\x2drfkill.slice. Starting Load/Save RF Kill Switch Status of rfkill0... [^[[32m OK ^[[0m] Started Load/Save RF Kill Switch Status of rfkill0. [^[[32m OK ^[[0m] Created slice system-ifup.slice. [^[[32m OK ^[[0m] Mounted /boot. [^[[32m OK ^[[0m] Reached target Local File Systems. Starting Tell Plymouth To Write Out Runtime Data... Starting Create Volatile Files and Directories... Starting LSB: Raise network interfaces.... [^[[32m OK ^[[0m] Reached target Remote File Systems. Starting Trigger Flushing of Journal to Persistent Storage... Starting LSB: Prepare console... Starting LSB: Switch to ondemand cpu governor (unless shift key is pressed)... [^[[32m OK ^[[0m] Started Tell Plymouth To Write Out Runtime Data.

2) Используя fsck.mode=forceи fsck.repair=yesв /boot/cmdline.txtbootlog говорит: [^[[32m OK ^[[0m] Started Show Plymouth Boot Screen. [^[[32m OK ^[[0m] Reached target Paths. [^[[32m OK ^[[0m] Created slice system-systemd\x2drfkill.slice. [^[[32m OK ^[[0m] Created slice system-ifup.slice. [ 5.749367] systemd-fsck[112]: Pass 2: Checking directory structure [ 8.673500] systemd-fsck[112]: Pass 3: Checking directory connectivity [ 8.683831] systemd-fsck[112]: Pass 4: Checking reference counts [ 9.318835] systemd-fsck[112]: Pass 5: Checking group summary information [ 9.518754] systemd-fsck[112]: /dev/mmcblk0p2: 131321/956160 files (0.2% non-contiguous$ [^[[32m OK ^[[0m] Started File System Check on Root Device. Starting File System Check on /dev/mmcblk0p1... Starting Remount Root and Kernel File Systems... [^[[32m OK ^[[0m] Started Remount Root and Kernel File Systems. Starting Load/Save RF Kill Switch Status of rfkill0... Starting Load/Save Random Seed... [^[[32m OK ^[[0m] Reached target Local File Systems (Pre). [ 9.639259] systemd-fsck[239]: fsck.fat 3.0.27 (2014-11-12) [^[[32m OK ^[[0m] Started Load/Save RF Kill Switch Status of rfkill0. [ 9.644216] systemd-fsck[239]: /dev/mmcblk0p1: 124 files, 2666/8057 clusters [^[[32m OK ^[[0m] Started File System Check on /dev/mmcblk0p1. [^[[32m OK ^[[0m] Started Load/Save Random Seed. Mounting /boot... [^[[32m OK ^[[0m] Mounted /boot.

Почему файл журнала полностью отличается в этих двух случаях?

JPX
источник

Ответы:

23

Я запустил sudo touch / forcefsck, но что еще мне нужно сделать?

Это то, что больше относится к хрипам; Джесси может (или не может) быть обратно совместимым с ним, но вы могли бы также сделать это новым способом:

Добавьте следующее к /boot/cmdline.txt:

fsck.mode=force

Убедитесь, что файл остается одной строкой. Параметры должны быть разделены пробелами.

Вы, вероятно, заметите fsck.repair=yesуже там; это не одно и то же. From man systemd-fsck(на самом деле это параметры, которые ядро ​​передает init , т. Е. Systemd):

fsck.mode =

Один из «авто», «сила», «пропустить». Управляет режимом работы. По умолчанию используется значение «auto», и оно гарантирует, что проверки файловой системы выполняются, когда средство проверки файловой системы считает их необходимыми. «force» безусловно приводит к полной проверке файловой системы. «Пропустить» пропускает любые проверки файловой системы.

fsck.repair =

Один из "прихорашиваться", "да", "нет". Управляет режимом работы. По умолчанию используется «preen», и он автоматически исправляет проблемы, которые можно безопасно исправить. «да» ответит «да» на все вопросы по fsck, а «нет» ответит «нет» на все вопросы.

Златовласка
источник
Чем это отличается от sudo shutdown -rF now? Boot.log выглядит совершенно иначе.
JPX
3

Это то, что я использую в старом стабильном выпуске Jessie, в конце строки cmdline.txt: forcefsck

У меня также есть следующее в fstab: /dev/mmcblk0p1 /boot vfat defaults,noatime 0 2 /dev/mmcblk0p2 / ext4 defaults,noatime 0 1 Обратите внимание на 1и 2в конце строки

Он проверяет и восстанавливает корневой раздел (/ dev / mmcblk0p2) при каждой загрузке (@JulianKnight not / dev / sda2).

То, что описано в оригинальном OP, все еще работает для Wheezy на RPi: sudo touch /forcefsck

@WillianPaixao после Wheezy -Fопция shutdownбольше не поддерживается

Как заставить проверку файловой системы (в основном) связано с версией ядра, в какой-то момент после Debian 8.0 (в 8.2?) Она была изменена, как описано в ответе @goldilocks.

Пол Вратт
источник
2

Вы также должны быть в состоянии сделать следующее, которое должно работать для любого Linux, а не только для Pi (очевидно, устройство будет меняться для разных платформ, sda2 должно быть подходящим для карты SD SD по умолчанию):

sudo tune2fs -c 1 /dev/sda2

Это должно установить проверку при каждой перезагрузке. Вы можете изменить номер на что угодно. Используйте -i вместо -c, если вы хотите проверку на основе времени. Смотрите man-страницу для получения дополнительной информации.

Джулиан Найт
источник
1

Я использую shutdownс -Fпараметром. [1]

sudo shutdown -rF now
Виллиан Пайшао
источник
Я выполнил команду. После перезагрузки мой системный журнал не содержит никакой информации о запуске fsck (raspbian stretch).
Роберт
2
Я только что проверил man shutdownна Raspbian - там нет опции -F.
Виктор Сергиенко