
У нас есть кастомная плата Embedded Linux на базе BeagleBone Black. Она имеет Linux-3.12, 256 МБ ОЗУ и 4 ГБ eMMC с ext4
файловой системой на ней.
Иногда мы сталкиваемся с ошибками файловой системы (редко, но не невозможно). Поэтому мы хотим проверить ошибки файловой системы и исправить их при загрузке.
Очевидно, мы не хотим, чтобы fsck или любая другая утилита уничтожила какие-либо данные в файловой системе.
У нас есть busybox, SysVinit
поэтому /forcefsck
не работает :( Тогда я использовал /etc/fstab
(установив 5-е поле в 1), а затем запустил fsck -p
из rcS
скрипта.
Эта комбинация работает для разделов, отличных от rootfs
раздела. У меня есть пара вопросов по этому поводу.
- Есть ли возможность запустить что-то
fsck
на этомrootfs
разделе? - Можно ли
fsck -p
уничтожить данные на разделе? - Есть ли лучший способ справиться с этой ситуацией? Я имею в виду службу, которая проверит и исправит ошибки файловой системы?
решение1
Обычный способ для настольных дистрибутивов Linux на основе SysVinit — запрос пароля root во время загрузки при обнаружении ошибок в корневой файловой системе. Затем вы можете использовать это для запуска fsck
на корневой файловой системе. Я не знаю, делает ли это ваш встроенный дистрибутив, но его определенно можно настроить таким образом.
Если во время загрузки не обнаружено ошибок, другой вариант — войти в систему как root, остановить все, что не является необходимым, перемонтировать корневую файловую систему в режиме «только для чтения», а затем запустить для нее fsck.
Речь идет о корневой файловой системе вашего блочного хранилища, а не оrootfs. Rootfs — это минимальная файловая система на основе оперативной памяти, которая используется во время загрузки и не может быть повреждена (если только не поврежден образ загрузочного ядра или не повреждена оперативная память).
В принципе fsck -p
, предназначено для выполнения только "безопасных" ремонтов, но если вы действительно хотите быть уверены, что ничего плохого не произойдет, запустите его вручную, чтобы вам предлагалось выполнить каждое действие. Если по какой-то причине в корневой файловой системе есть ценные данные (так быть не должно, но, возможно, они есть), сделайте резервную копию с помощью dd
first.