
私は、qemu を使用して Linux カーネル、ramdisk、およびドライブを起動しようとしています。
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でraw形式です。
- 別の Linux ディストリビューション tinycore_3.5.1.iso 経由で raw.img を認識してマウントできます。
- /dev/hddはmylinux側には存在せず、/dev/hdも存在しません*
- /sys/class/block の下には、ドライブがカーネルによって認識されたと思わせるようなものは何も見当たりません。
- ramdisk には /init とその他のプロセスが含まれています。今のところ、これがルート ボリュームであると想定します。
- システムはudevを使用する
このレベルでは Linux は初心者です。OS イベントの理解について、どなたか助けていただければ幸いです。私の想定では、/sys はカーネルがドライブとして認識するものです。udev はカーネル イベントをリッスンし、ドライブ情報を /dev の下のノードに変換します。正しいですか? これをデバッグするための洞察と手順があれば、ぜひ教えてください。繰り返しますが、目標はドライブを認識させること (つまり、/dev の下に表示されること) であり、ドライブから起動することではありません。
答え1
-hdd は「Hard Disk Drive」の略ではなく、「Hard Disk D」または 4 番目のハードディスク (セカンダリ スレーブ) の略です。
最初のハードドライブ (プライマリ マスター) を参照するには、-hda を使用する必要があります。
答え2
さらにデバッグを進めていくと、Linux のブート メッセージにエラーがあることに気付きました。使用していたカーネルは別の RAM ディスク用に作成されたため、IDE ドライバーのディレクトリが間違っていました。カーネルを RAM ディスクに合わせると、ドライブが認識されます。原因を絞り込むことができたのは、ブート メッセージを見て、ドライブの認識について何も言及されていないことがわかったことです。最初のメッセージは主にハードウェアの検出に関するものです。したがって、そこになければ OS で認識されませんでした。教訓を得ました。助言と提案に感謝します。