
qemu를 사용하여 Linux 커널, 램디스크, 드라이브를 부팅하려고 합니다.
qemu -initrd ramdisk.cpio.gz -kernel mylinux.i686 -m 1024 -append console=ttyS0,38400 -serial file:serial.out -hdd raw.img
부팅 시 /dev 아래에 드라이브가 표시되지 않습니다. 주요 목표는 내 추진력을 인정받는 것입니다. 더 많은 정보:
- qemu-img를 통해 raw.img를 만들었습니다. 3GB이고 원시 형식입니다.
- 다른 Linux 배포판인tintincore_3.5.1.iso를 통해 raw.img를 인식하고 마운트할 수 있습니다.
- /dev/hdd는 mylinux 측에 존재하지 않으며 /dev/hd*도 존재하지 않습니다.
- /sys/class/block 아래에는 드라이브가 커널에 의해 인식되었다고 믿을 수 있는 내용이 없습니다.
- 램디스크에는 /init 및 기타 프로세스가 포함되어 있습니다. 지금은 이것이 내 루트 볼륨이라고 가정합니다.
- 시스템은 udev를 사용합니다
저는 이 수준에서 Linux를 처음 접했습니다. 누군가가 OS 이벤트를 이해하는 데 도움을 줄 수 있기를 바랍니다. 내 가정은 /sys가 커널이 드라이브로 인식하는 것일 것이라는 것이었습니다. 그런 다음 udev는 커널 이벤트를 수신하고 드라이브 정보를 /dev 아래의 노드로 변환합니다. 옳은? 이 문제를 디버깅하기 위한 통찰력과 단계를 주시면 감사하겠습니다. 다시 말하지만, 목표는 드라이브에서 부팅하는 것이 아니라 드라이브를 인식(예: /dev 아래에 표시)하는 것입니다.
답변1
-hdd는 "Hard Disk Drive"가 아니라 "Hard Disk D" 또는 네 번째 하드 디스크(보조 슬레이브)를 나타냅니다.
첫 번째 하드 드라이브(기본 마스터)를 참조하려면 -hda를 사용해야 합니다.
답변2
더 많은 디버깅을 한 후에 Linux 부팅 메시지에 오류가 있음을 발견했습니다. 내가 사용하고 있던 커널은 다른 램디스크용으로 생성되었기 때문에 IDE 드라이버에 대한 잘못된 디렉토리를 찾고 있었습니다. 커널을 램디스크에 맞춰 정렬하면 드라이브가 인식됩니다. 이 문제의 범위를 좁힐 수 있었던 한 가지는 부팅 메시지를 보고 드라이브를 인식한다는 언급이 전혀 없는 것을 확인하는 것이었습니다. 초기 메시지는 대부분 하드웨어 감지에 관한 것입니다. 따라서 거기에 없으면 OS에서 인식되지 않습니다. 교훈을 얻었습니다. 도움과 제안에 감사드립니다.