Linux는 커널이 dev hdc 또는 hda에서 부팅되어야 하는지 여부를 자동으로 감지하는 방법

Linux는 커널이 dev hdc 또는 hda에서 부팅되어야 하는지 여부를 자동으로 감지하는 방법

Linux가 설치된 산업용 PC가 있습니다.

이러한 PC에는 두 가지 버전이 있으며, 각 버전마다 내부에 약간 다른 마더보드가 있으며, PC 내부의 디스크는 마더보드 유형에 따라 hda 또는 hdc로 간주됩니다.

지금까지는 두 가지 유형의 디스크 부팅 중 하나를 선택하기 위해 아래와 같이 grub menu.lst에 두 개의 항목을 넣었으므로 PC가 처음 부팅될 때 관리자는 장치 중 올바른 장치, 즉 장치를 선택하게 됩니다. 향후 재부팅을 위해 기억됩니다.

default = 0
timeout = 9

title Linux 2.4.34 ( hda )
        root (hd0,0)
        kernel /boot/vmlinuz-2.4.34 ro root=/dev/hda1 console=ttyS0,9600 console=tty0 apm=off

title Linux 2.4.34 ( hdc )
        root (hd0,0)
        kernel /boot/vmlinuz-2.4.34 ro root=/dev/hdc1 console=ttyS0,9600 console=tty0 apm=off

하지만 대부분의 경우 이러한 유형의 PC는 화면과 키보드 없이 제공되며 관리자가 부팅 옵션을 선택할 수 없기 때문에 커널을 로드하기 전에 PC가 올바른 부팅 장치를 확인할 수 있도록 하는 방법을 찾고 있습니다.

실제로 루트 장치에 대한 올바른 값(예: root=/dev/hda1 또는 루트=/dev/hdc1 )

문제는 이것이 가능한지, 어떻게 해야 할지 모르겠다는 것이다.

이 주제에 대해 제안할 사람이 있나요?

답변1

Matt의 답변이 도움이 될 것입니다. 나는 또 다른 가능성을 지적하고 싶습니다: initramfs/initrd를 사용하는 것입니다.

rootfs를 찾는 일부 코드와 함께 initrd를 보낼 수 있습니다(initramfs는 2.4 이후이지만 2.4에는 initrd가 있어야 함). initrd의 장점은그 당시에는 Linux가 실행 중이었습니다. 예를 들어 루트 파일 시스템을 찾는 쉘 스크립트를 작성할 수 있습니다. 일단 찾으면 마운트하고ivot_root를 마운트한 다음 /sbin/init를 실행할 수 있습니다.

또한 다른 이점도 얻을 수 있습니다. 예를 들어 하드 드라이브나 기타 부팅에 중요한 장치를 확인하기 위해 서로 다른 보드(현재 또는 미래)에서 서로 다른 모듈을 로드해야 하는 경우 이렇게 할 수 있습니다.

또한 여기에 유용할 수 있는 다양한 복구 도구를 배치할 수도 있습니다.

(최신 Linux 배포판에서 root= 옵션은 실제로 initramfs에 의해 처리됩니다.)

관련 정보