uchan-nos / os-from-zero

『ゼロからのOS自作入門』(内田公太著、マイナビ出版)のサポートサイトです
https://zero.osdev.jp/
251 stars 10 forks source link

WSL2でQEMUが起動しません。 #56

Closed norimoti1023 closed 3 years ago

norimoti1023 commented 3 years ago

p.35 エミュレーターのやり方のところで、 $ $HOME/osbook/devenv/run_qemu.sh BOOTX64.EFI を実行すると下記のエラーとなり、QEMUが実行出来ません。

(qemu) qemu-system-x86_64: warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5]
Could not initialize SDL(No available video device) - exiting

すでに解決済みのissueと同じ状況だとおもい、環境変数を確認してみましたが、特に変になっているようには見えません。

$ echo $DISPLAY
IPアドレス:0.0
$ cat /etc/resolv.conf
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
nameserver IPアドレス

Windows側のVcXsrvも、問題なく[コンピューター名:0.0 - 0clients]と表示されています。 WSL2をリセットして、再度開発環境をインストールしても、QEMU は起動しませんでした。 Windows側に問題があるのか?それとも、WSL2側に問題があるのか?がさっぱりわからないので、ご意見を頂けないでしょうか?

1点、開発環境をインストールする中で気になったのが、TASK [check whether qemu-system-gui exists]でFailedと表示されてしまいます。これは発生するもの、あるいは、発生しても問題ないのでしょうか?

TASK [check whether qemu-system-gui exists] ****************************************************************************fatal: [localhost]: FAILED! => {"changed": true, "cmd": ["dpkg-query", "--show", "qemu-system-gui"], "delta": "0:00:00.007175", "end": "2021-05-03 01:45:11.153146", "msg": "non-zero return code", "rc": 1, "start": "2021-05-03 01:45:11.145971", "stderr": "dpkg-query: no packages found matching qemu-system-gui", "stderr_lines": ["dpkg-query: no packages found matching qemu-system-gui"], "stdout": "", "stdout_lines": []}
...ignoring

TASK [install qemu gui package if exists] ******************************************************************************skipping: [localhost]

参考までにQEMU のインストール済みリストです。

$ apt list qemu*
Listing... Done
qemu/bionic-updates,bionic-security 1:2.11+dfsg-1ubuntu7.36 amd64
qemu-block-extra/bionic-updates,bionic-security,now 1:2.11+dfsg-1ubuntu7.36 amd64 [installed,automatic]
qemu-efi/bionic-updates,bionic-security 0~20180205.c0d9813c-2ubuntu0.3 all
qemu-efi-aarch64/bionic-updates,bionic-security 0~20180205.c0d9813c-2ubuntu0.3 all
qemu-efi-arm/bionic-updates,bionic-security 0~20180205.c0d9813c-2ubuntu0.3 all
qemu-guest-agent/bionic-updates,bionic-security 1:2.11+dfsg-1ubuntu7.36 amd64
qemu-kvm/bionic-updates,bionic-security 1:2.11+dfsg-1ubuntu7.36 amd64
qemu-slof/bionic 20170724+dfsg-1ubuntu1 all
qemu-system/bionic-updates,bionic-security 1:2.11+dfsg-1ubuntu7.36 amd64
qemu-system-arm/bionic-updates,bionic-security 1:2.11+dfsg-1ubuntu7.36 amd64
qemu-system-common/bionic-updates,bionic-security,now 1:2.11+dfsg-1ubuntu7.36 amd64 [installed,automatic]
qemu-system-mips/bionic-updates,bionic-security 1:2.11+dfsg-1ubuntu7.36 amd64
qemu-system-misc/bionic-updates,bionic-security 1:2.11+dfsg-1ubuntu7.36 amd64
qemu-system-ppc/bionic-updates,bionic-security 1:2.11+dfsg-1ubuntu7.36 amd64
qemu-system-s390x/bionic-updates,bionic-security 1:2.11+dfsg-1ubuntu7.36 amd64
qemu-system-sparc/bionic-updates,bionic-security 1:2.11+dfsg-1ubuntu7.36 amd64
qemu-system-x86/bionic-updates,bionic-security,now 1:2.11+dfsg-1ubuntu7.36 amd64 [installed]
qemu-user/bionic-updates,bionic-security 1:2.11+dfsg-1ubuntu7.36 amd64
qemu-user-binfmt/bionic-updates,bionic-security 1:2.11+dfsg-1ubuntu7.36 amd64
qemu-user-static/bionic-updates,bionic-security 1:2.11+dfsg-1ubuntu7.36 amd64
qemu-utils/bionic-updates,bionic-security,now 1:2.11+dfsg-1ubuntu7.36 amd64 [installed]
qemubuilder/bionic 0.86 amd64
qemuctl/bionic 0.3.1-4build1 amd64
uchan-nos commented 3 years ago

1点、開発環境をインストールする中で気になったのが、TASK [check whether qemu-system-gui exists]でFailedと表示されてしまいます。これは発生するもの、あるいは、発生しても問題ないのでしょうか?

はい。発生して問題ありません。 参照: https://github.com/uchan-nos/os-from-zero/issues/24#issuecomment-808726258

まず確認したいのは、「IPアドレス」が本当にWindows側のIPアドレスになっているかどうか。 Windows側でコマンドプロンプトを立ち上げ、「ipconfig」コマンドを実行してみてください。 「イーサネット アダプター vEthernet (WSL):」というような項目のIPv4アドレスと等しい値になっていますか?

※ちなみに、このIPアドレスはプライベートIPアドレスなので、Issueに書いていただいても害はありません。 異常な値になっていないことを確認したいので、「IPアドレス」と書き換えず、生のアドレスを貼っていただけると助かります。

norimoti1023 commented 3 years ago

回答ありがとうございます。 プロンプトでIPアドレスを確認してみましたが、相違はありませんでした。

イーサネット アダプター vEthernet (WSL):

   接続固有の DNS サフィックス . . . . .:
   リンクローカル IPv6 アドレス. . . . .: fe80::7dd9:d3ec:51ed:fc28%27
   IPv4 アドレス . . . . . . . . . . . .: 172.28.176.1
   サブネット マスク . . . . . . . . . .: 255.255.240.0
   デフォルト ゲートウェイ . . . . . . .:
echo $DISPLAY
172.28.176.1:0.0
$ cat /etc/resolv.conf
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
nameserver 172.28.176.1
uchan-nos commented 3 years ago

うーん、ちょっと見当がつきません。

ためしに xeyes コマンドを起動してみてもらってもいいですか? 2つの目玉が表示されれば成功です。

norimoti1023 commented 3 years ago

すみません。自己解決しました。

xeyesも起動しなかったので、セキュリティ関係を見直してました。 私の環境ではファイアウォールをESETが管理していて、ESET側でのパブリック接続許可の設定ができていませんでした。

設定後はxeyesも起動してQEMUも起動しました。

お騒がせして申し訳ないです。ご協力ありがとうございました。