나는 사용자 정의 initramfs를 설정하는 방법에 대한 자습서를 진행했습니다.
유일하게 누락 된 것은 커널이로드 된 후에 실행되는 initramfs의 루트에있는 실행 파일 인 / init입니다. sys-apps / busybox에는 완전한 기능을 갖춘 쉘이 포함되어 있으므로 / init 바이너리를 간단한 쉘 스크립트로 작성할 수 있습니다 (컴파일해야하는 어셈블러 또는 C로 작성된 복잡한 애플리케이션 대신).
으로 시작하는 쉘 스크립트로 init의 예를 제공합니다. #!/bin/busybox sh
지금까지 init가 시작된 주요 프로세스이며 다른 모든 사용자 공간 프로세스는 결국 init의 자식이라는 인상을 받았습니다. 그러나 주어진 예제에서 첫 번째 프로세스는 실제로 bin/busybox/ sh
나중에 init가 생성되는 프로세스입니다 .
이것이 올바른 상호 작용입니까? 예를 들어 그 시점에 사용 가능한 통역사가 있으면 init을 Python 스크립트 등으로 쓸 수 있습니까?
/
얇은 공기 속으로 사라 지지 않습니다. 마운트되어 있습니다 (일반적으로 메모리를 절약하기 전에 내용이 모두 삭제됨) . 그것은이다 아직도 .switch_root
syscall을 수행합니다switchroot
-이것은 커널 개발자가 커널 2.6에서 부팅 프로세스를 변경했을 때 제공 한 것입니다. initramfs가 필요합니다. 마술을하는 것은 커널입니다.