Pi не загрузится после обновления initramfs


9

Я пытался установить Raspbian Jessie из образа для загрузки с зашифрованным корневым разделом.

Мне удалось следовать этому руководству .

Когда я загружаю Pi, он переходит к приглашению initramfs, затем я разблокирую раздел

# cryptsetup luksOpen /dev/mmcblk0p2 sdcard
# exit

и он загружается в Debian. Большой!

Тем не менее, есть некоторые проблемы. Когда я пытаюсь обновить файл initramfs:

# sudo mkinitramfs -o /boot/initramfs.gz

в Debian Pi не перезагружается до приглашения initramfs. Он просто висит с мигающим курсором после отображения пиксельного логотипа. Когда я восстанавливаю свой резервный загрузочный образ, я снова получаю приглашение initramfs и могу загружаться из зашифрованного корня.

Вторая проблема заключается в том, что я не правильно настроил dropbear; похоже, он настроен на использование DHCP. Это означает, что при входе в систему он получает случайный IP-адрес. Мне нужно обновить конфигурацию до фиксированного IP-адреса, чтобы я мог войти в систему Pi без перезагрузки после перезагрузки, но без возможности обновления initramfs я не знаю, как это исправить.

Учитывая, что после обновления я даже не могу получить приглашение initramfs, я действительно не знаю, как вообще начать решать эту проблему, поэтому любые намеки были бы хорошими. Я предоставлю любую информацию, которая будет полезна для решения этой проблемы.


1
Я смутно припоминаю, что недавно слышал systemd, что initсистема по умолчанию , идущая от текущей версии Debian "Jessie" и, следовательно, Raspbian, которая является производной от нее, когда-то имела проблемы с зашифрованными файловыми системами. Я предполагаю, что, по крайней мере, некоторая часть проблем была решена, но в вашем конкретном случае вы могли бы рассмотреть возможность возврата к sysV, initчего и ожидала эта статья 2013 года (в ней упоминается версия Raspbian "Wheezy", которая предыдущая версия, которая по умолчанию имела бы инициализацию sysV) ...
SlySven

1
Кажется, вряд ли это проблема, связанная с systemd; Я без проблем запускаю несколько разных стандартных систем Debian 8 с зашифрованными корневыми разделами. Я подозреваю, что код, запрашивающий кодовую фразу шифрования, либо отсутствует, либо несовместим с любым логотипом заставки. (Я получаю приглашение в текстовом режиме для ключевой фразы во время загрузки системы.) Когда у меня будет возможность, я сравню сценарии запуска на моем Pi и на одном из моих ноутбуков Debian.
CJS

По поводу DHCP. Заблокируйте его прямо на вашем роутере. Не на устройствах. В противном случае это может быть боль в заднице.
Кузейрон

Я рекомендую вам взглянуть на Руководство по шифрованию Robpol86 ( robpol86.com/raspberry_pi_luks.html ), когда одна вещь, которую я узнал в используемом вами руководстве, состоит в том, что нет сценария initramfs-rebuild, который запускается после каждого обновления вашего ядра , Я давно пользуюсь руководством Robpol для многих систем Jessie и Stretch, и у меня никогда не было проблем. Конечно, руководство не поможет вам в решении ваших проблем с dropbear.
Стефан Вегенер

Ответы:


0

Отключите все заставки и проверьте вывод во время загрузки. В cmdline.txt (в /boot/cmdline.txt) убедитесь, что у вас есть rootwait logo.nologo nosplash.

Там должно быть проблема с вашим обновлением или initramfs. Убедитесь, что вы включили в него правильные модули, указав на целевую версию ядра, например, так: sudo mkinitramfs -o /boot/initramfs.gz -k -v 4.14.78-v7+ Это нацелит на модуль ядра установленной конкретной версии и правильно захватит все модули из / lib / modules /.

В случае несоответствия могут возникнуть проблемы с загрузкой правильных модулей ядра. Также проверьте ваши initramfs-tools.conf и hooks / scripts.

Что касается IP, вы можете иметь фиксированный IP с параметром загрузки «IP =» ядра. Но лучше всего настроить это на DHCP-сервере, который, скорее всего, является вашим маршрутизатором.


-1

Попробуйте вернуть прошивку обратно, а затем повторите попытку:

Чтобы вернуться, дайте хэш коммита github.

Для обновления / понижения до определенной версии прошивки укажите ее хэш Git (из хранилища https://github.com/Hexxeh/rpi-firmware ) следующим образом:

sudo rpi-update fab7796df0cf29f9563b507a59ce5b17d93e0390


И чтобы попробовать обновить снова, используйте:

sudo apt-get update && sudo apt-get upgrade
sudo shutdown -r now

После этого процесс завершает обновление до следующего rpi-обновления:

sudo BRANCH=next rpi-update
sudo shutdown -r now

После этого вы сможете следовать инструкциям здесь

Обязательно пропустите первые 2 блока кода, так как я только что изменил их и дал рабочий выше!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.