Как автоматически запустить mkinitramfs в Debian после обновления apt для пакетов ядра?

Как автоматически запустить mkinitramfs в Debian после обновления apt для пакетов ядра?

Я пытаюсь добиться того, чтобы на Raspberry Pi (под управлением Raspian Buster) была зашифрована корневая файловая система, которая разблокируется при загрузке через ssh. Я продвинулся довольно далеко, адаптировавучебник для Kali Linuxи по крайней мере один раз он заработал, но пока не пережил обновления ядра.

Одна из проблем заключается в том, что эта настройка использует initramfs, на который /boot/config.txtссылается

initramfs initramfs.gz followkernel

и его необходимо обновить после обновления ядра, вызвав вручную, например

mkinitramfs -o /boot/initramfs.gz 4.19.118-v7+

где 4.19.118-v7+зависит от текущей версии ядра и типа используемого оборудования Raspberry Pi. Конечно, я хочу, чтобы это делалось автоматически при каждой apt upgradeустановке нового ядра.

Вот тут я столкнулся с двумя проблемами:

  • A) Где и как мне правильно подключить этот процесс обновления?
  • Б) Как определить правильную версию ядра для использования?

Что касается A) Я дошел до того, что узнал, что raspberrypi-kernel.postinstвыполняет /etc/kernel/postinst.d/. Это снова вызывает , /usr/sbin/update-initramfsкоторый в конце концов вызовет mkinitramfs. Где я запутался, так это в этом коде /usr/sbin/update-initramfs:

set_initramfs()
{
        initramfs="${BOOTDIR}/initrd.img-${version}"
}

Он определяет имя файла для initramfs. Такой файл не был сгенерирован во время обновления, и я не уверен, что я на правильном пути, так каквикипедияговорит, что схема init.rd была заменена схемой initramfs. Однако мне не удалось найти хорошую документацию, описывающую, как все должно происходить после обновления модуля ядра. (Хорошие ссылки приветствуются).

Итак, мой вопрос: Где хорошее место для подключения скрипта, который запускает команду mkinitramfs? Мне следует изменить /etc/kernel/postinst.d/? Будет ли это решение стабильным в течение следующих нескольких версий Debian?

Что касается B), то легко получить доступные версии ядра с помощью

> ls -l /lib/modules/ | awk -F" " '{print $9}'`

5.4.51+
5.4.51-v7+
5.4.51-v7l+
5.4.51-v8+

Но как мне автоматически выбрать правильный для текущего оборудования? Для Pi3B+ это будет 5.4.51-v7+. Есть ли способ определить это автоматически?

Большое спасибо за Вашу помощь!

решение1

Похоже, что initramfs необходимо включить, установив INITRD=Yesи /etc/default/raspberrypi-kernelдобавив скрипт после обновления, /etc/initramfs/post-update.d/чтобы обновить /boot/config.txt, как предложено вОбновление intramfs после обновления ядра#608.

Надеюсь, это сработает...

Связанный контент