init를 종료할 때 Linux 시스템을 올바르게 중지하는 방법

init를 종료할 때 Linux 시스템을 올바르게 중지하는 방법

Qemu에서는 init 프로세스(PID 1)가 bash인 Linux VM을 시작합니다. 작동 중입니다. 부팅 후 bash를 사용할 수 있습니다. 하지만 exita 또는 를 사용하여 bash를 종료 하면 CTRL+D커널 패닉이 발생합니다.

Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000

나는 시스템이 적절하게 중지되기를 원하며 이상적으로는 bash를 종료하기 전에 디스크를 동기화하고 싶습니다.

부팅 시 옵션을 전달해야만 커널 동작을 수정할 수 있다는 것을 알고 계셨습니까?

답변1

직접적으로 할 수는 없을 것 같지만 실행할 수는 있습니다.

# bash; sync; halt

첫 번째(PID 1) 셸에서 다른 셸을 실행하고 두 번째 셸이 종료 sync되면 실행합니다.halt

시스템에서 파일을 편집할 수 있는 경우 동일한 작업을 수행하는 스크립트를 다음 위치에 배치하여 이를 자동화할 수 있습니다 /sbin/init.

#/bin/sh
/bin/bash; /bin/sync; /sbin/halt

(저는 "아마도"라고 말합니다. Linux가 init와 같은 스크립트를 좋아하는지 확신할 수 없기 때문입니다.)

두 경우 모두 사용하는 실제 쉘은 PID 1이 아니지만 이는 중요하지 않습니다.

관련 정보