switch_root 명령은 새 파일 시스템 pid 1 프로세스에서 /sbin/init를 어떻게 생성합니까?

switch_root 명령은 새 파일 시스템 pid 1 프로세스에서 /sbin/init를 어떻게 생성합니까?

커널이 initramfs로 부팅되면 실제 rootfs에 대한 준비를 위해 init 프로세스가 시작됩니다. 실제 rootfs가 준비되면 initramfs의 init 프로세스는 실제 rootfs의 다른 init로 넘겨져야 합니다.

내 질문은: init(old)에 이미 프로세스 ID 1이 있는데 왜 새 init 프로세스에도 프로세스 ID 1이 있습니까?

어떤 사람들은 switch_root 명령으로 전환이 이루어진다고 말하는데, 코드를 살펴본 결과 switch_root는 /dev, proc 등만 마운트하고 루트를 새 fs로 변경한 다음 execv(/sbin/init)를 발견했습니다.

switch_root는 init(old)의 하위 프로세스로 실행되어야 하며 프로세스 ID는 2,3 또는 1을 제외한 모든 값이어야 합니다. 맞아?

관련 정보