Вопрос или проблема
Я новый на этом сайте, так что надеюсь, что не выгляжу очень глупо (к тому же мой английский не лучший)
У меня есть Raspberry Pi 4B с картой памяти 64GB от Sandisk Ultra. Установлена на ней версия Ubuntu Server 20.04 для ARM. Обычно она работает 24/7 в моей локальной сети для исследований и немного обучения.
Что случилось:
После установки обновления с помощью “Sudo apt update”, “sudo apt upgrade” и завершения его командой “reboot”, я застрял в initramfs.
Единственное сообщение, которое отображается:
ext4
Чт Янв 1 00:00:06 UTC 1970
writable: восстанавливаю журнал
writable: флаг необходимости восстановления суперблока чист, но в журнале есть данные.
writable: Запустить журнал в любом случае
writable: НЕОЖИДАННАЯ НЕКОРРЕКТНОСТЬ; ЗАПУСТИТЕ fsck ВРУЧНУЮ.
(т.е. без параметров -a или -p)
fsck вышел с кодом статуса 4
Корневая файловая система на /dev/mmcblk0p2 требует ручного fsck
BusyBox v1.30.1 (Ubuntu 1:1.30.1-6ubuntu2) встроенный шелл (ahs)
Введите 'help' для списка встроенных команд.
(initramfs)_
Я сделал то, что сказано, и попытался запустить это вручную командой:
(initramfs) fsck /dev/mmcblk0p2
fsck из util-linux 2.36.1
e2fsck 1.45.7 (28-Jan-2021)
writable: восстанавливаю журнал
Суперблок требует восстановление, флаг чист, но в журнале есть данные.
Запустить журнал в любом случае<y>? да
fsck.ext4: невозможно установить флаги суперблока на записи
writable: ********** ПРЕДУПРЕЖДЕНИЕ: Файловая система все еще имеет ошибки **********
(initramfs) _
После некоторого исследования я выяснил, что, возможно, это карта sd, так что я попытался снова переустановить сервер ubuntu на ней.
Но карта sd не очищается. Не очищается ни в Windows, ни в Linux. Файлы внутри имеют только для чтения, но попытка очистить ее с помощью sudo на другом устройстве не влияет на нее. Попытка удалить что-либо или сделать ее записываемой в initramfs дает мне “Доступ запрещен”.
Поскольку все мои данные уже в безопасности, я хотел бы очистить ее. Но мне все еще любопытно, почему это происходит, потому что это случилось со мной дважды. В первый раз это было легко исправить просто переустановив. И это второй раз.
Н希望 кто-то из вас имеет какую-либо идею, как это исправить. Я гуглил и вбок, но ничего не нашел.
Я тоже новичок (не могу комментировать), но вы пытались использовать команду dd (вот ссылка) для карты sd? Может быть, через виртуальный Linux, если вы работаете на Windows?
Ответ или решение
Проблема, с которой вы столкнулись на вашем Raspberry Pi 4B, связана с повреждением файловой системы на вашей SD-карте. Ниже приведены детальные шаги для диагностики и исправления проблем с загрузкой в режиме initramfs, а также рекомендации по работе с SD-картами, включая возможные решения с использованием команды dd
.
Причины проблемы
- Проблемы с файловой системой: Сообщение об ошибке говорит о том, что файловая система требует восстановления. Это может произойти из-за некорректного завершения работы системы, потери питания или повреждения SD-карты.
- Поврежденная SD-карта: Sandisk Ultra может поддаваться износу и повреждению, особенно если она использовалась долго и активно. Это может вызвать недоступность данных и невозможность записи новых данных.
- Режим «только для чтения»: Если файловая система становится недоступной для записи, это может указывать на физическое повреждение карты или на то, что она находится в состоянии «только для чтения».
Решения
-
Запустите fsck:
- Попробуйте вручную выполнить команду
fsck
для вашей SD-карты:(initramfs) fsck /dev/mmcblk0p2
- Если система предлагает запустить журнал, примите это предложение. Если
fsck
не сможет восстановить файловую систему, выполните следующие шаги.
- Попробуйте вручную выполнить команду
-
Проверка SD-карты на другом устройстве:
- Попробуйте вставить SD-карту в другое устройство, например, в Windows или другой компьютер с Linux.
- Убедитесь, что SD-карта не установлена в режиме «только для чтения». Если это так, попробуйте использовать переключатель защиты от записи, если он есть.
-
Использование команды dd для полного затирания карты:
- Если вы хотите полностью стереть данные на SD-карте, то вы можете использовать команду
dd
. Предупреждаю, что это удалит все данные на устройстве:sudo dd if=/dev/zero of=/dev/sdX bs=4M
- Замените
/dev/sdX
на обозначение вашей SD-карты (например,/dev/mmcblk0
). Будьте очень осторожны, убедитесь, что вы выбираете правильное устройство. - Управлять и выполнять данную операцию можно из Live CD или USB с Linux.
- Если вы хотите полностью стереть данные на SD-карте, то вы можете использовать команду
-
Перепрошивка SD-карты:
- После выполнения команды
dd
, вы сможете перезаписать образ Ubuntu Server на SD-карте. Скачайте и используйте инструментbalenaEtcher
илиRaspberry Pi Imager
, чтобы записать образ на карту.
- После выполнения команды
-
Замените SD-карту:
- Если проблема повторяется, подумайте о замене SD-карты на более надежную. Карты класса A1 или A2 обеспечивают лучшую производительность и долговечность.
Профилактика
- Регулярно выполняйте резервное копирование данных и обновляйте программное обеспечение.
- Используйте стабильные источники питания для вашего Raspberry Pi, чтобы минимизировать риск повреждения файловой системы из-за отключения питания.
- Рассмотрите возможность использования SSD или другого устройства для хранения данных, если вы планируете активное использование Raspberry Pi.
Если ни одно из описанных решений не привело к успеху, возможно, ваша карта действительно имеет физическое повреждение. В этом случае дальнейшая работа с ней может оказаться нецелесообразной.