Suckless의 "sinit" init의 실제 사용

Suckless의 "sinit" init의 실제 사용

설정하려고 하는데죄악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입니다. 나는 그것이 현대 데스크탑 환경의 번거로움이 없는 단순한 데스크탑 시스템뿐만 아니라 임베디드 시스템에서도 매우 좋다고 확신합니다.

답변2

알고보니 리눅스 커널구문 분석그만큼오두막그 자체로.

따라서 모든 "Shebanged" 스크립트(바이너리의 전체 경로 포함)를 sinit.

관련 정보