GRUBが読み込まれるはずの7c00を見ると、最初の2バイトが10 00であり、GRUBはeb 63であることから、GRUBがロードされていないようです。
debug> Dp 7c00 00007C00 10 00 00 00 00 80 00 00-4D 1B 00 00 00 00 00 00 ........M....... 00007C10 10 7C 10 7C 00 00 34 00-FF FF 00 00 00 9B CF 00 .|.|..4......... 00007C20 FF FF 00 00 00 93 8F 00-FF FF 00 00 00 9B 00 00 ................ 00007C30 FF FF 00 00 00 93 00 00-FA 0E 1F 0E 17 BC FC 7F ................ 00007C40 89 E5 E4 92 0C 02 E6 92-66 8D 36 00 7C 66 8B 4C ........f.6.|f.L 00007C50 04 66 51 66 8D 5C 10 66-FF 77 04 66 FF 37 89 1F .fQf.\.f.w.f.7.. 00007C60 66 89 5F 02 BB FF 01 66-01 D9 66 BF 00 00 10 00 f._....f..f..... 00007C70 66 57 66 B8 4C 6F 61 64-E8 A4 00 66 C1 E9 09 74 fWf.Load...f...t
r59 で再現評価をしたところ、panic発生時のRIPが変化しました。
CPU0 panic : Unimplemented exception in real mode: 0x06 Invalid Opcode Exception (#UD) VMM state of CPU0---- -------------------------- RAX 00000031 RCX 00000CC9 RDX 00000002 RBX 40146910 RSP 4031FB40 RBP 4031FDA0 RSI 00000000 RDI 00000000 R8 4011DE50 R9 00000000 R10 00000000 R11 00000000 R12 00000000 R13 4031FDB0 R14 00000000 R15 00000000 CR0 80000039 CR2 00000000 CR3 C7953000 CR4 00002660 RFLAGS 00000002 GDTR 402EEDA0+0000FFFF IDTR 401A2560+0000FFFF backtrace: 0x4031fb38: 0x4011c6f4 0x4031fda8: 0x4011c881 0x4031fe08: 0x4012c9f6 0x4031fe58: 0x4012d045 0x4031ff98: 0x40117623 0x4031ffc8: 0x40125226 0x4031fff8: 0x0 ------------------------------------------------ Guest state of CPU0 ---------------------------- RAX 00000E00 RCX 00000001 RDX 00000080 RBX 00000007 RSP 00000800 RBP 00000000 RSI 0000098E RDI 00000000 R8 00000000 R9 00000000 R10 00000000 R11 00000000 R12 00000000 R13 00000000 R14 00000000 R15 00000000 CR0 00000010 CR2 00000000 CR3 00000000 CR4 00000000 ACR ES 000000F3 CS 000000F3 SS 000000F3 DS 000000F3 FS 000000F3 GS 000000F3 LIMIT ES 0000FFFF CS 0000FFFF SS 0000FFFF DS 0000FFFF FS 0000FFFF GS 0000FFFF BASE ES 00000000 CS 00000000 SS 00000000 DS 00000000 FS 00000000 GS 00000000 SEL ES 00000000 CS 00000000 SS 00000000 DS 00000000 FS 00000000 GS 00000000 RIP 00000007 RFLAGS 00010246 GDTR 402EEDA0+000000FF IDTR 00000000+000003FF EFER 00000000 Exit reason: 0x0 (Exception or NMI) Exit qualification 00000000 Exit intr info 80000306 Exit intr errcode 0000e378 VMCS IDTR 00000000+00000000 VMCS RFLAGS 00030246 pe=0 pg=0 sw:en=0x0 es=0x0 cs=0x0 ss=0x0 ds=0x0 fs=0x0 gs=0x0 ------------------------------------------------
物理アドレス7c00の内容は変化ありません。
debug> DP 7c00 00007C00 10 00 00 00 00 80 00 00-17 1B 00 00 00 00 00 00 ................ 00007C10 10 7C 10 7C 00 00 34 00-FF FF 00 00 00 9B CF 00 .|.|..4......... 00007C20 FF FF 00 00 00 93 8F 00-FF FF 00 00 00 9B 00 00 ................ 00007C30 FF FF 00 00 00 93 00 00-FA 0E 1F 0E 17 BC FC 7F ................ 00007C40 89 E5 E4 92 0C 02 E6 92-66 8D 36 00 7C 66 8B 4C ........f.6.|f.L 00007C50 04 66 51 66 8D 5C 10 66-FF 77 04 66 FF 37 89 1F .fQf.\.f.w.f.7.. 00007C60 66 89 5F 02 BB FF 01 66-01 D9 66 BF 00 00 10 00 f._....f..f..... 00007C70 66 57 66 B8 4C 6F 61 64-E8 A4 00 66 C1 E9 09 74 fWf.Load...f...t
yuichi_xy への返信
r59 で再現評価をしたところ、panic発生時のRIPが変化しました。
r57 で vm0.boot_int18 を指定しない時に 0x0007 へ jamp してしまうようになっていました。 r60 で修正したところ、panic 発生時の RIP が 0x7c28 に戻りました。
CPU0 panic : Unimplemented exception in real mode: 0x06 Invalid Opcode Exception (#UD) VMM state of CPU0---- -------------------------- RAX 00000031 RCX 00000CE8 RDX 00000002 RBX 40146910 RSP 4031FB40 RBP 4031FDA0 RSI 00000000 RDI 00000000 R8 4011DE60 R9 00000000 R10 00000000 R11 00000000 R12 00000000 R13 4031FDB0 R14 00000000 R15 00000000 CR0 80000039 CR2 00000000 CR3 C7953000 CR4 00002660 RFLAGS 00000002 GDTR 402EEDA0+0000FFFF IDTR 401A2560+0000FFFF backtrace: 0x4031fb38: 0x4011c704 0x4031fda8: 0x4011c891 0x4031fe08: 0x4012c9f6 0x4031fe58: 0x4012d045 0x4031ff98: 0x40117633 0x4031ffc8: 0x40125226 0x4031fff8: 0x0 ------------------------------------------------ Guest state of CPU0 ---------------------------- RAX 00027C00 RCX 00000001 RDX 00000080 RBX 00000E00 RSP 00000804 RBP 00000000 RSI 000009A2 RDI 0000FFD0 R8 00000000 R9 00000000 R10 00000000 R11 00000000 R12 00000000 R13 00000000 R14 00000000 R15 00000000 CR0 00000010 CR2 00000000 CR3 00000000 CR4 00000000 ACR ES 000000F3 CS 000000F3 SS 000000F3 DS 000000F3 FS 000000F3 GS 000000F3 LIMIT ES 0000FFFF CS 0000FFFF SS 0000FFFF DS 0000FFFF FS 0000FFFF GS 0000FFFF BASE ES 00000000 CS 00000000 SS 00031FA0 DS 00000000 FS 00000000 GS 00000000 SEL ES 00000000 CS 00000000 SS 000031FA DS 00000000 FS 00000000 GS 00000000 RIP 00007C28 RFLAGS 00010282 GDTR 402EEDA0+000000FF IDTR 00000000+000003FF EFER 00000000 Exit reason: 0x0 (Exception or NMI) Exit qualification 00000000 Exit intr info 80000306 Exit intr errcode 0000e378 VMCS IDTR 00000000+00000000 VMCS RFLAGS 00030282 pe=0 pg=0 sw:en=0x0 es=0x0 cs=0x0 ss=0x0 ds=0x0 fs=0x0 gs=0x0 ------------------------------------------------
r123 で IvyBridge マシンで再現評価しましたが、再現せず、USBメモリからGRUBがロードされました。 Chain Loadを選択すると、今度はLinuxをインストールしたHDDからGRUBがロードされ、Linuxの起動にも成功しました。
USBメモリの/boot/grub/grub.cfgに「set timeout=5」を追加すると、自動でLinuxが起動するようになりました。
menuentry 'Chain Load' { set root='(hd1)' chainloader +1 } set timeout=5
次の手順で、USBメモリにVMMとGRUBを書き込みました。
64MBのパーティションを1つ、残りの領域を全て割り当てたパーティションを1つ作成します。 「残りの領域を全て割り当てたパーティション」にはブートフラグを付けます。
以下は p コマンドでパーティションテーブルを表示させた結果です。
以下は x コマンドを入力してメニューを切り替えたのち、p コマンドでパーティションテーブルを表示させた結果です。
ファイルの中身は次の通りです。
次のコマンドで VMM を USB メモリに書き込みます。
2回目以降は、-f オプションは不要です。
以上の手順で書き込んだUSBメモリをPCに挿入して起動を試みたところ、次のメッセージが出力されて panic しました。
画面には次のメッセージが出力されました。
障害発生リビジョン: r55