~에서systemd/fstab-generator.csystemd는 이를 root=
mount 의 유일한 구성 소스인 필수 커널 매개변수로 처리합니다 /sysroot
. 그러나커널/init/main.c그리고커널/init/do_mounts.c이것이 사실인지는 불분명합니다. 질문: "root=" 매개변수 없이 커널 초기화를 어떻게 수행합니까(그리고 systemd에 이를 지원하도록 지시합니까?)
답변1
존재하다do_mounts.c
, 이 변수는 명령줄 인수(있는 경우)의 값 saved_root_name
으로 설정됩니다 . root=
값은 경로와 유사한 문자열입니다.커널에 의해 전달됨, 접두사는 선택 사항이지만 실제로는 디스크상의 경로와 일치하지 않는 경우가 많습니다. 인수가 없는 경우 사용할 값입니다. 일반적으로 0이지만 시스템 바이너리에 다른 값을 삽입할 수 있습니다. 이 툴체인은 다음과 같은 도구를 포함하는 데 사용됩니다./dev/something
/dev/
root=
ROOT_DEV
util-linux
`rdev이 작업을 수행하지만(x86에서만)
몇 년 전에 사라졌어요.
이 모든 일은 다음과 같은 경우에만 발생합니다.파일 시스템 초기화또는초기화 프로그램루트 마운트에 대한 책임은 없습니다( initramfs를 실행하여 /init
호출해야 하며 mount
, 이는 initrd에 의해 호출되어야 함 pivot_root
).
시스템적인 부분은 모르겠습니다. 그럼에도 불구하고 루트 파일 시스템에 대해 읽기-쓰기로 마운트하는 것 외에 systemd가 할 수 있는 일은 없습니다.