Debian

如何在 initramfs 中的 switch_root 之前執行腳本?

  • August 3, 2018

我正在 initramfs 中啟動 dropbear ssh 伺服器,以便能夠通過 SSH *解鎖加密分區。

在 Debian Jessie 中,一切都很好,但在 Buster 中,dropbear 似乎並沒有在 之後停止switch_root,這會阻止 OpenBSD ssh 伺服器啟動。

apt-get purge dropbear沒有幫助,which dropbear列印/usr/bin/dropbearps -ef | grep dropbear列印/sbin/dropbear;這說明這個過程是在 initramfs 階段開始的,並且沒有停止。

作為一種解決方法,我正在killall dropbear使用 SSH 服務腳本,但在切換根分區之前將其終止會更合適。

那時我該如何執行腳本?

將清理腳本創建為/etc/initramfs-tools/scripts/init-bottom/cleanup.sh

#!/bin/sh
echo "Killing dropbear"
killall dropbear
exit 0

…並使其可執行:

chmod +x /etc/initramfs-tools/scripts/init-bottom/cleanup.sh

像往常一樣更新 initramfs:

update-initramfs -u 

您已經有一個呼叫 switch_root 的腳本,所以只需在其中插入一行來停止 dropbear。

您也可以從您的 ssh 連接中停止它。登錄後,有兩個 dropbear 程序。第一個是接受新連接的程序,第二個是為您的連接提供服務的程序。此時您可以終止第一個程序,因為您不想要多個連接。斷開連接後,第二個過程將終止。

在引導過程的早期階段,您可以確定接受新連接的程序具有較低的程序號,儘管還有其他方法可以辨識它。

引用自:https://unix.stackexchange.com/questions/460219