![Linux는 커널이 dev hdc 또는 hda에서 부팅되어야 하는지 여부를 자동으로 감지하는 방법](https://linux55.com/image/43717/Linux%EB%8A%94%20%EC%BB%A4%EB%84%90%EC%9D%B4%20dev%20hdc%20%EB%98%90%EB%8A%94%20hda%EC%97%90%EC%84%9C%20%EB%B6%80%ED%8C%85%EB%90%98%EC%96%B4%EC%95%BC%20%ED%95%98%EB%8A%94%EC%A7%80%20%EC%97%AC%EB%B6%80%EB%A5%BC%20%EC%9E%90%EB%8F%99%EC%9C%BC%EB%A1%9C%20%EA%B0%90%EC%A7%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
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에 의해 처리됩니다.)