특히 동일한(-ish) 시스템이 여러 디스크에 설치될 수 있는 경우 초기 initramfs Linux 쉘 스크립트에서 내 커널이 부팅된 부팅 디스크를 어떻게 감지합니까?
사용 사례는 정적 파티션을 대체하여 비부팅 파티션을 마운트할 위치를 결정하는 동적 논리이므로 /etc/fstab
해당 파일의 출력을 살펴보거나 mount
...
보다 구체적으로, RPi 디스크 이미지가 SD/MMC 카드와 USB 플래시 드라이브 모두에 기록되는 경우 시스템은 어떤 커널이 실행 중인지 어떻게 확인합니까? RPi 부트 로더는 부팅 디스크 순서를 제어하며 root=/mmcblk0p2
RPi 이유의 조합으로 인해 두 경우 모두 동일한 커널 매개 변수를 사용할 수 있습니다. /proc/cmdline
실제로 감지된 커널 루트를 기반으로 콘텐츠가 업데이트됩니까 ?
[편집하다]
RPi 부트로더가 앞에 몇 가지 커널 매개변수를 추가하는 것처럼 보이지만 이를 건드리지는 않는 것 root=
같습니다 /proc/cmdline
.
이는 initramfs만 사용하는 시스템에서는 여전히 "일반적인" 문제일 수 있습니다. 이 경우 root=
루트 파일 시스템이 장치 없는 램 이미지에 있으므로 매개변수는 어쨌든 의미가 없습니다.
나는 우연히 만났어Bootlin.com의 훌륭한 관련 블로그 게시물입니다., 그리고 그것을 시도하면 stat /
02h의 "장치"가 생성되었으며, 이는 기본 장치 번호 0으로 디코딩되었습니다... 문서는 다음 위치에 있습니다.https://www.kernel.org/doc/Documentation/admin-guide/devices.txt"이름이 지정되지 않은 장치(예: 장치가 아닌 설치)"라고 표시됩니다.
커널 부팅 프로세스에 대한 나의 막연한 이해가 맞다면 커널은 부트로더에 의해 메모리에 모두 로드되기 때문에 실제로 그것이 어디서 왔는지 알 수 있는 방법이 없습니다.
그렇긴 하지만, 좀 더 심층적인 부트로더 관련 항목을 찾고 구문 분석하지 못한 것은 운이 좋지 않다고 생각합니다.