설정하려고 하는데죄악Linux의 경우 init
(PC에서 ..). 현재 내 목표는 단순히 tty/bash
그것에서 싱글을 실행하는 것입니다. 커널이 root=/dev/sda2
이미 cmdline
.
sinit
바이너리가 있는데 /sbin/init
다음에 무엇을 해야할지 모르겠습니다. 일부 스크립트를 배치해야 한다는 것은 알고 있지만 sinit
이를 실행하거나 bash
.
답변1
포함된 매뉴얼 페이지 sinit.8과 README는 저에게 매우 설명이 됩니다. 그러나 소스를 살펴보면서 간략하게 소개합니다.
- sinit 기본 실행 파일은
/sbin/init
커널에 의해 pid 1로 시작됩니다. /bin/rc.init
스크립트를 별도의 하위 프로세스로 실행하기 위한 초기 환경을 준비합니다./bin/rc.init
별도의 프로세스로 실행되므로/bin/rc.init
해당 지점 이후에 시스템을 초기화하는 명령이 포함되어 있습니다.- 좀비화된 프로세스를 포착하고 종료 코드를 아무데도 읽지 못하는 무한 루프에 들어갑니다.
- 무한 루프에 있는 동안에는 신호에 의해 중단될 수 있습니다. 청취하도록 정의된 신호는 SIGUSR1 및 SIGINT입니다. SIGUSR1은 init가 스크립트 이름
/bin/rc.shutdown
으로 실행되도록 강제poweroff
하고 SIGINT는 init가 다음과 같은 스크립트를 실행하도록 강제합니다.reboot
반면, SIGINT는 init가 이름으로 동일한 스크립트를 실행하도록 강제하여 스크립트 내부의 작업 모드를 구별합니다. 이 두 신호는 init가 듣는 신호일 뿐입니다.포함SIGKILL 및 SIGSTOP은 무시됩니다. 그리고 슈퍼유저만이 init에 신호를 보낼 수 있습니다. SIGINT는 Ctrl-Alt-Delete를 누를 때 커널에 의해 생성되지만 그렇게 말한 경우에만 생성됩니다(cad에서 SIGINT 전송을 활성화하기 위해 일반적으로 init 프로세스에서 수행하는 특수 syscall이 있습니다).
그래서, 이것에서, sinit제공하지 않습니다:
- init 스크립트(직접 작성하거나 배포판에서 제공한 스크립트를 조정해야 함)
- 제어 방법(예: 런레벨), 단 두 가지 간단한 명령
그러나 sinit은 작동하는 훌륭하고 귀여운 작은 init입니다. 나는 그것이 현대 데스크탑 환경의 번거로움이 없는 단순한 데스크탑 시스템뿐만 아니라 임베디드 시스템에서도 매우 좋다고 확신합니다.