カーネルデバッグで使うQEMUオプションチートシート

[English](https://dev.to/wataash/qemu-options-for-debugging-kernel-2e6n)

[QEMUのgdbserver機能でNetBSD kernelをデバッグする](https://qiita.com/wataash/items/2f68717a5109ea8e1b75) で使うQEMUオプションのまとめ

Sec.: sections in [qemu-doc(1)](https://qemu.weilnetz.de/doc/qemu-doc.html)

| Sec.   | Option                                                              | Details                                                                                                                                      |
| ---    | ---                                                                 | ---                                                                                                                                          |
| 2.3.1  | `-smp 4`                                                            | 仮想CPUコア数4                                                                                                                               |
| 2.3.1  | `-m 256`                                                            | メモリ256MiB                                                                                                                                 |
| 2.3.2  | `-hda netbsd.qcow2`                                                 | 第1ハードディスク: `netbsd.qcow2`                                                                                                            |
| 2.3.3  | `-cdrom netbsd.iso`                                                 | CD-ROM: `netbsd.iso`                                                                                                                         |
| 2.3.4  | `-display curses`                                                   | VGAでなくcursesディスプレイを使う; QEMUを終了するにはQEMU monitor に接続して `q`                                                             |
| 2.3.4  | `-display none`                                                     | VGAディスプレイ非表示                                                                                                                        |
| 2.3.4  | `-nographic`                                                        | `-display none` + `-parallel null`(`-parallel` が指定されていない場合) + `-serial mon:stdio`(`-serial` も `-monitor` も指定されていない場合; ドキュメントに書かれていないので[QEMUをデバッグして調べた][vl.c]         |
| 2.3.6  | `-netdev user,id=n1,hostfwd=tcp::10022-:22 -device e1000,netdev=n1` | user mode network stack（[VirtualBoxで言うNAT Network][vbox] ）; localhost:10022をゲストのポート22に転送する                                 |
| 2.3.6  | `-nic user,hostfwd=tcp::10022-:22`                                  | 上と等価、[QEMU 2.12以降で使える][qemu212]                                                                                                   |
| 2.3.11 | `-serial telnet::5555,server,nowait`                                | シリアルコンソール (com0) を使う場合に `telnet localhost 5555` で接続できる                                                                  |
| 2.3.11 | `-monitor telnet::5556,server,nowait`                               | `telnet localhost 5556` でQEMU monitorに接続できる                                                                                           |
| 2.3.11 | `-serial mon:telnet::5555,server,nowait`                            | `telnet localhost 5555` でシリアルコンソールとQEMU monitorの両方に接続できる; <kbd>Ctrl-a h</kbd> のヘルプ参照                               |
| 2.3.11 | `-serial mon:stdio`                                                 | ターミナルにシリアルコンソールとQEMU monitorを表示する; <kbd>Ctrl-a h</kbd> のヘルプ参照                                                     |
| 2.3.11 | `-S`                                                                | gdbserverへのコネクションがあるまでマシンの実行を止める                                                                                      |
| 2.3.11 | `-gdb tcp::1234`                                                    | ポート1234でgdbserverをlistenさせる                                                                                                          |
| 2.3.11 | `-s`                                                                |`-gdb tcp::1234` と等価                                                                                                                       |
| 2.3.11 | `-enable-kvm`                                                       | （Linuxのみ）KVM有効化                                                                                                                       |
| 2.3.11 | `-no-reboot`                                                        | `reboot` コマンドで再起動せずにQEMUを終了する                                                                                                |
| 2.3.11 | `-daemonize`                                                        | QEMUをデーモン化する。ターミナルを終了しても動き続けるので長時間動かす場合に便利。                                                           |
| 2.3.11 | `-rtc base=utc`                                                     | 時刻補正（これがないとtimezoneをAsia/Tokyoにしたときに9時間ずれる）                                                                          |

[qemu212]: https://wiki.qemu.org/ChangeLog/2.12#Network
[vbox]: https://www.google.co.jp/search?tbm=isch&q=virtualbox+nat+network
[vl.c]: https://github.com/qemu/qemu/blob/f8c3db33a5e863291182f8862ddf81618a7c6194/vl.c#L3081-L3086

Linux固有のオプション（`-kernel` など）も追記予定