Raspberry Pi 3 та Raspbian Jessie - як запустити fsck під час завантаження?


13

Як запустити fsck під час завантаження при використанні Pi 3 та Raspberry Jessie? Я прочитав деякий підручник, але вони відрізняються.

Я біг, sudo touch /forcefsckале що мені ще робити? Я знаю, що я повинен встановити FSCKFIX = так, але який правильний файл? Одні кажуть, /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.txtблоці говорить: [^[[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.

Чому у цих двох випадках файл журналу абсолютно відрізняється?

Відповіді:


23

Я запустив sudo touch / forcefsck, але що мені ще потрібно зробити?

Це речі, які більше стосуються хрипів; Джессі може (або не може) бути сумісною з нею назад, але ви також можете зробити це по-новому:

Додайте до /boot/cmdline.txt:

fsck.mode=force

Переконайтеся, що у файлі залишається весь один рядок. Параметри повинні бути розділені пробілами.

Ви, мабуть, помітите fsck.repair=yes, що вже є; це не одне і те ж. From man systemd-fsck(це фактично параметри, які ядро ​​передає init , тобто systemd):

fsck.mode =

Один із "авто", "сили", "пропустити". Керує режимом роботи. За замовчуванням є "auto" та забезпечує перевірку файлової системи, коли перевірка файлової системи вважає їх необхідними. "примусово" безумовно призводить до повних перевірок файлової системи. "пропустити" пропускає будь-які перевірки файлової системи.

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 повинен відповідати стандартній Pi SD-картці за замовчуванням):

sudo tune2fs -c 1 /dev/sda2

Це повинно встановити перевірку кожного перезавантаження. Ви можете змінити номер на що завгодно. Використовуйте -i замість -c, якщо ви хочете перевірити за часом. Додаткову інформацію див. На сторінці чоловіка.


1

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

sudo shutdown -rF now

Я виконав команду. Після перезавантаження мій syslog не містить жодної інформації про запуску fsck (розтягнутий розтягнення).
Роберт

2
Я щойно перевірив man shutdownRaspbian - там немає варіанту -F.
Віктор Сергієнко

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