initramfs에서 switch_root 전에 스크립트를 실행하는 방법은 무엇입니까?

initramfs에서 switch_root 전에 스크립트를 실행하는 방법은 무엇입니까?

SSH를 통해 암호화된 파티션의 잠금을 해제할 수 있도록 initramfs에서 dropbear SSH 서버를 시작하고 있습니다.*.

Debian Jessie에서는 모든 것이 괜찮지만 Buster에서는 dropbear가 나중에 멈추지 않는 것 같아서 switch_rootOpenBSD SSH 서버가 시작되지 않습니다.

apt-get purge dropbear도움이 되지 않으며 which dropbear인쇄 /usr/bin/dropbearps -ef | grep dropbear인쇄됩니다 /sbin/dropbear. 이는 프로세스가 initramfs 단계에서 시작되었으며 중지되지 않았음을 보여줍니다.

해결 방법으로 killall dropbearSSH 서비스 스크립트에서 이 작업을 수행하지만 루트 파티션을 전환하기 전에 이를 종료하는 것이 더 적절할 것입니다.

이 시점에서 스크립트를 어떻게 실행합니까?

답변1

다음과 같이 정리 스크립트를 만듭니다 /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 

답변2

이미 switch_root를 호출하는 스크립트가 있으므로 거기에 줄을 삽입하면 dropbear를 중지할 수 있습니다.

SSH 연결에서 중지할 수도 있습니다. 로그인하자마자 두 개의 dropbear 프로세스가 있습니다. 첫 번째는 새로운 연결을 수락하는 프로세스이고, 두 번째는 연결을 서비스하는 프로세스입니다. 이 시점에서는 여러 연결이 필요하지 않으므로 첫 번째 프로세스를 종료할 수 있습니다. 연결이 끊어지면 두 번째 프로세스가 종료됩니다.

식별하는 다른 방법이 있지만 시작 프로세스 초기에 새 연결을 수락하는 프로세스의 프로세스 번호가 더 낮다는 것을 확인할 수 있습니다.

관련 정보