커널이 부팅 중에 /dev/sda 파일을 찾을 수 없습니다

커널이 부팅 중에 /dev/sda 파일을 찾을 수 없습니다

젠투 커널(kernel-2.6.36-gentoo-r5)을 구성했지만 부팅할 때 설치에 실패합니다 /dev/sda1.

ALERT! /dev/sda1 does not exist . Dropping to a shell .

쉘을 이용해 디렉토리에 들어가보니 or 파일이 /dev없는 것을 발견했습니다 . 그러나 Debian 커널(vmlinuz-2.6.32-5-686)로 부팅하면 파티션을 찾아 마운트할 수 있습니다 .sda*hd*/dev/sda1

문제는 무엇입니까? 어떻게 해결할 수 있나요? /etc/modules.autoload.d/kernel-2.6시작하는 동안 자동으로 로드되도록 파일에 모듈 이름을 추가 하지 않았습니다 . 이것이 문제의 원인입니까?

답변1

커널을 다시 빌드하는 방법을 정확히 언급하지 않았습니다. 이는 상당히 복잡한 프로세스이므로 배포판의 권장 사항을 따라야 합니다. 실제로 사전 컴파일할 수 없는 일부 기능(예: 하드웨어를 지원하는 최신 드라이버 세트)이 필요하지 않는 한 배포판의 커널을 사용해야 합니다.

두 가지 일반적인 함정이 있는데, 둘 중 하나가 관찰한 증상을 유발할 수 있습니다.

  • 어쩌면 필요한 드라이버를 컴파일하는 것을 잊었을 수도 있습니다. 커널 구성은 힘든 과정이며 주요 설정을 잊어버리기 쉽습니다. 특히 루트 파일 시스템에 연결하는 데 필요한 드라이버(디스크 컨트롤러, 파티션 구성표, 파일 시스템 및 관련 볼륨 관리)가 포함되어 있는지 확인하십시오. 이러한 드라이버는 커널에 내장되거나(즉, 모듈이 아님) initrd가 있어야 합니다(이 경우 initrd 드라이버 및 관련 파일 시스템이 내장되어야 함). .config배포판부터 시작하여 필요한 부분만 변경하는 것이 좋습니다.
  • initrd를 사용하는 경우 이를 재생성하거나 설치하는 것을 잊었거나 부트로더에 그렇게 하도록 지시했을 수 있습니다.

답변2

루팅된 장치에 액세스하는 데 필요한 특정 드라이버는 필요하지 않습니다. 아마도 SATA 또는 그것이 사용하는 SCSI 모듈 중 하나일 것입니다. 드라이버를 만들지 않았거나 initrd에 넣지 않았습니다.

답변3

커널을 구성할 때 올바른 SATA 드라이버를 선택했는지 확인해야 합니다. 귀하의 하드웨어가 무엇인지 모르므로 어떤 드라이버가 귀하에게 적합한지 직접 알아내야 합니다.

나는 항상 SATA 드라이버를 모듈이 아닌 커널에 구축하므로 다루기가 더 쉽습니다.

답변4

런타임은 make && make modules_install && make install커널을 빌드할 뿐만 아니라 커널 이미지(bzImage)를 설치 및 /boot/에 복사하고, initrd를 생성하고, 두 가지 모두에 대한 grub 항목을 생성해야 합니다.

이것이 사용하는 명령 및/또는 구문이 아닌 경우 이 절차를 시도해 보는 것이 좋습니다. 이것이 당신이 따르고 있는 프로세스라면, initrd를 재구축 mkinitrd하고 grub 구성의 루트 장치가 시스템 구성을 정확하게 나타내는지 확인하는 것이 좋습니다.

관련 정보