KVMを用いて、カーネルイメージから直接起動したい...!(解決編) + パッチ投げた

先日の記事で、KVMからの直ブートに失敗していましたが、無事に動作しました!

/usr/local/kvm/88/bin/qemu-system-x86 -kernel /boot/vmliuz-2.6.28-15-generic -initrd /boot/initrd.img-2.6.28-15-generic -hda ~/disks/ubuntu.img -append "root=/dev/sda"

でブートします. 前回犯していた過ちは、ルートデバイスを "/dev/hda" と示していたことです.

busybox中で、

$ ls /dev/hda

としても、としても、何も出てこなかったのでおかしいなぁとは思っていましたがw
id:viverid:kidminにアドバイス頂き、再度 ls し直してみると...

$ ls /dev/ | grep da
sda
sda1
sda2
sda3

と出てきました!そりゃうごきませんわ...w
というわけで、起動デバイスファイルがsdaにも関わらずhdaを指定するのは非直感的であると思ったため、以下のようなパッチを作成しました.

diff --git a/qemu-options.hx b/qemu-options.hx
index c1ec976..91cd931 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -68,6 +68,13 @@ Use @var{file} as floppy disk 0/1 image (@pxref{disk_images}). You can
 use the host floppy by using @file{/dev/fd0} as filename (@pxref{host_drives}).
 ETEXI
 
+DEF("sda", HAS_ARG, QEMU_OPTION_sda,
+    "-sda/-sdb file  use 'file' as IDE hard disk 0/1 image\n")
+DEF("sdb", HAS_ARG, QEMU_OPTION_sdb, "")
+DEF("sdc", HAS_ARG, QEMU_OPTION_sdc,
+    "-sdc/-sdd file  use 'file' as IDE hard disk 2/3 image\n")
+DEF("sdd", HAS_ARG, QEMU_OPTION_sdd, "")
+
 DEF("hda", HAS_ARG, QEMU_OPTION_hda,
     "-hda/-hdb file  use 'file' as IDE hard disk 0/1 image\n")
 DEF("hdb", HAS_ARG, QEMU_OPTION_hdb, "")
diff --git a/vl.c b/vl.c
index 3485ce6..62d1d91 100644
--- a/vl.c
+++ b/vl.c
@@ -5085,6 +5085,7 @@ int main(int argc, char **argv, char **envp)
                 initrd_filename = optarg;
                 break;
             case QEMU_OPTION_hda:
+            case QEMU_OPTION_sda:
                 if (cyls == 0)
                     hda_opts = drive_add(optarg, HD_ALIAS, 0);
                 else
@@ -5096,6 +5097,9 @@ int main(int argc, char **argv, char **envp)
                              translation == BIOS_ATA_TRANSLATION_NONE ?
                                  ",trans=none" : "");
                  break;
+            case QEMU_OPTION_sdb:
+            case QEMU_OPTION_sdc:
+            case QEMU_OPTION_sdd:
             case QEMU_OPTION_hdb:
             case QEMU_OPTION_hdc:
             case QEMU_OPTION_hdd:

なお、パッチの適応先は 2009/09/07 時点での最新レポジトリです. このパッチを適応することで、

/usr/local/kvm/88/bin/qemu-system-x86 -sda ~/disks/ubuntu.img

といった風に、-sdaをオプションでディスクイメージを指定することができます. その他, sdb,sdc,sdd に対応しています. なお、このパッチをKVMのMLに投げてみました. スルーされるかもしれませんが、どうなるか楽しみですw