QEMU上で仮想HDDへMSDOSをインストールする

## 取得
以下のサイトからフロッピーのイメージを取得します。
拡張子がISOのものはCDなのでIMGとなっているものを探します
https://winworldpc.com/download/49c3a35d-1245-0911-c3a7-c29d25525400

フロッピー3枚分あります。
今回は5.0をダウンロードしました。
![图片.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4054974/e9449287-1221-4440-8ddb-739317c3a2c2.png)

## 操作

110MBの仮想HDDを作成
```
qemu-img create -f raw msdos_hdd.img 110M
```

AドライブにDisk01.img、Cドライブへ上で作成した仮想HDDを設定して起動する
```
qemu-system-i386 \
  -machine isapc \
  -cpu 486 \
  -m 16 \
  -no-fd-bootchk \
  -drive file=msdos_hdd.img,format=raw,if=ide,index=0 \
  -drive file=Disk01.img,format=raw,if=floppy,index=0 \
  -boot order=a
```

この後は全てENTERを押す
![图片.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4054974/0eec1132-50df-4d47-b331-fd746c8b8af1.png)

以下のような画面になったら次のフロッピーへ入れ替える必要がある
![图片.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4054974/3b6ff858-3b30-4650-9bf4-c1409cd11602.png)

以下の方法で入れ替える
```
ctrl-alt-2 
change floppy0 Disk02.img
ctrl-alt-1 
```
![图片.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4054974/7a26e1f2-4916-4a8c-a397-d8b46d835fb5.png)

入れ替えてENTERを押すとインストールが継続される
![图片.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4054974/ee21ff5b-5649-4055-9025-d5aef3f1f0a6.png)

3枚目までインストールが終わったら以下のような画面になるのでQEMUを閉じる
![图片.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4054974/222c0a2f-29ef-4e26-9ecd-9bf79baaf43a.png)

QEMU上で仮想HDDから起動する
```
qemu-system-i386 -drive file=msdos_hdd.img,format=raw
```
![图片.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4054974/169aefb4-29dd-47d9-8215-f9b20304cc5d.png)

Shift + 9でコマンドの画面へ移ると見慣れたMSDOSの画面になる。
![图片.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4054974/d0101f32-93de-4d09-9dbb-0566d6998bad.png)



## 最後に
筆者の所有しているPocket8086はCF(コンパクトフラッシュ)カードからMS-DOSを起動するのですが、Windowsへ繋いだ時に誤って修復してしまい、起動できなくなりました。
QEMU上で仮想HDDへインストールしDD命令でそのまま書き込むと起動できるかと思ったのですが、書き込まれたブートローダに問題があり起動ができません。
Missing operation systemと表示されます。
![default.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4054974/970bafb1-d61a-4a27-9663-e8dcc80a7f69.jpeg)

ブートローダを確認するとMissing operating systemの文字列が確認できるので実行はしているが何かしらのエラーが出ているのだと思う。
ブートローダを修復して試してみる。
```
sudo dd if=msdos_hdd.img of=mbr_dump.bin bs=512 count=1
sudo xxd -g1 -l512 msdos_hdd.img
```
```
test@test-ThinkPad-X280:~$ sudo xxd -g1 -l512 msdos_hdd.img
00000000: fa 33 c0 8e d0 bc 00 7c 8b f4 50 07 50 1f fb fc  .3.....|..P.P...
00000010: bf 00 06 b9 00 01 f2 a5 ea 1d 06 00 00 be be 07  ................
00000020: b3 04 80 3c 80 74 0e 80 3c 00 75 1c 83 c6 10 fe  ...<.t..<.u.....
00000030: cb 75 ef cd 18 8b 14 8b 4c 02 8b ee 83 c6 10 fe  .u......L.......
00000040: cb 74 1a 80 3c 00 74 f4 be 8b 06 ac 3c 00 74 0b  .t..<.t.....<.t.
00000050: 56 bb 07 00 b4 0e cd 10 5e eb f0 eb fe bf 05 00  V.......^.......
00000060: bb 00 7c b8 01 02 57 cd 13 5f 73 0c 33 c0 cd 13  ..|...W.._s.3...
00000070: 4f 75 ed be a3 06 eb d3 be c2 06 bf fe 7d 81 3d  Ou...........}.=
00000080: 55 aa 75 c7 8b f5 ea 00 7c 00 00 49 6e 76 61 6c  U.u.....|..Inval
00000090: 69 64 20 70 61 72 74 69 74 69 6f 6e 20 74 61 62  id partition tab
000000a0: 6c 65 00 45 72 72 6f 72 20 6c 6f 61 64 69 6e 67  le.Error loading
000000b0: 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65   operating syste
000000c0: 6d 00 4d 69 73 73 69 6e 67 20 6f 70 65 72 61 74  m.Missing operat
000000d0: 69 6e 67 20 73 79 73 74 65 6d 00 00 00 00 00 00  ing system......
000000e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000000f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000001a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000001b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 01  ................
000001c0: 01 00 06 0f 3f dd 3f 00 00 00 e1 69 03 00 00 00  ....?.?....i....
000001d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000001e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000001f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa  ..............U.
```

ChatGPTに聞くといろんな可能性をあげてくれたので次回試します。