如何在 apt 更新核心軟體包後在 Debian 上自動執行 mkinitramfs?

如何在 apt 更新核心軟體包後在 Debian 上自動執行 mkinitramfs?

我想要實現的是在 Raspberry Pi(運行 Raspian Buster)上擁有一個加密的根檔案系統,該系統在啟動時透過 ssh 解鎖。我透過適應取得了巨大的進步Kali Linux 教程並讓它至少工作一次,但它還不能在核心更新中倖存下來。

問題之一是,此設定使用的是 initramfs,該 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) 在哪裡以及如何以正確的方式插入更新過程?
  • B) 如何確定要使用的正確核心版本?

關於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

看起來必須透過設定INITRD=Yes來啟用 initramfs/etc/default/raspberrypi-kernel並添加更新後腳本來/etc/initramfs/post-update.d/更新/boot/config.txt,如建議的那樣核心更新後更新intramfs#608

我希望,這有效...

相關內容