나는 내 자신의 init 스크립트를 실행하는 내 자신의 initramfs를 가지고 있습니다. 몇 가지 작업을 수행한 후 마지막으로 switch_root를 호출하고 /mnt에 마운트된 시스템의 init 스크립트를 실행합니다.
지금 나는 원한다initramfs의 초기화 스크립트로 돌아가기Linux가 종료될 때(Linux의 init 스크립트가 종료됨)
하지만 을(를) 호출하고 있기 때문에 exec switch_root /mnt /blah/init
Linux가 종료되면 스크립트가 종료됩니다. 하지만 그 후에 initramfs에서 뭔가를 하고 싶은데 그건 불가능합니다.
chroot /mnt
대신 내가 할 수 있는 일은 switch_root ...
Linux가 종료되면 init 스크립트로 돌아가는 것입니다. 그러나 여기에는 일부 응용 프로그램(예: netctl)이 chroot된 시스템 내부에서 호출되기 때문에 작동을 거부한다는 불쾌한 부작용이 있습니다.
그래서나는 필요하다switch_root
시스템에 들어가서 결국 initramfs로 돌아가는 방법입니다.
답변1
pivot_root
대신 그렇게 할 수 있습니다 switch_root
(이렇게 하면 모든 것이 삭제됩니다!).
초기화 시스템이 존재하지 않는다고 불평하지 않는다면 pid 1
아마도 완료된 것입니다.
또 다른 해결책은 초기화 시스템을 pivot_root
그 자체로 충분히 좋게 만드는 것입니다. 이를 뭐라고 부르나요? RAMF를 닫으시겠습니까? 이는 initramfs와는 아무런 관련이 없지만 종료 작업이나 다른 작업을 수행할 수 있는 것과 동일한 원리입니다.
종료 시 아무것도 할 필요가 거의 없기 때문에 표준 솔루션이 없다고 생각합니다.
답변2
이것을 사용할 수 있습니다 dracut
.
문제가 발생할 경우(예: 시스템이 부팅되지 않는 경우)에 대비해 백업을 만드세요.
dracut
(대신 ) 으로 전환합니다initramfs-tools
.sudo apt 업데이트 sudo apt install --no-install-recommends dracut
맞춤 작성
dracut
기준 치수요구될 것입니다.Hooks는 함수를
dracut
cleanup
실행해야 합니다 .dracut
need_shutdown
이로 인해 dracut
파일이 생성됩니다 /run/initramfs/.need_shutdown
.
shutdown 시 /lib/systemd/system/dracut-shutdown.service
실행하면 /usr/lib/dracut/dracut-initramfs-restore
initramfs가 복원되고 한 단계씩 실행됩니다.
dracut
shutdown
후크가 필요합니다. 구현되면 initramfs 내의 종료 프로세스에서 매우 늦게 실행됩니다.
cold-boot-attack-defense
dracut
이 모든 작업을 수행하는 샘플 모듈 입니다 .
인용하다:
- https://github.com/Kicksecure/security-misc#cold-boot-attack-defense
- https://www.kicksecure.com/wiki/Dev/RAM_Wipe
/usr/lib/dracut/modules.d/40cold-boot-attack-defense
전체 공개:
cold-boot-attack-defense
제가 개발한 것입니다.
이 작업을 수행하는 것은 어떻습니까 initramfs-tools
?
비슷한 메커니즘을 직접 구현해야 합니다 initramfs-tools
.그것이 바로 꼬리가 하는 일입니다.. 이를 시뮬레이션하는 것은 위에 설명된 작업을 수행하는 것보다 훨씬 더 어려울 수 있습니다 dracut
. 아니면 솔루션이 게시되었을 수도 있습니다.initramfs-tools
데비안 기능 요청: 종료 시 initrd 복원 및 리디렉션 지원
를 사용할 때 더 쉬운 경로를 제공합니다 initramfs-tools
. 그러나 이것이 기본 기능 이므로 사용하기가 dracut
더 쉽습니다 .dracut