注意
本記事は自作OS書籍であるゼロからのOS自作入門をやるにあたって「おま環」を解決する為の内容です。
その為、記事の内容的には自己責任の領域になっています。
基本的に書籍内容に関してはサポートページを参照した方がいいです。
環境
私の環境は以下になります。
- Surface pro 7
- windows10 home
- WSL2
- Ubuntu 20.04 LTS
本題
WSL2でQEMUが起動してくれませんでした。
具体的にはハローワールドのサンプルコードを書籍の通り実行しようとすると以下を含む数行のエラーが出てきました。
(qemu) gtk initialization failed
原因&解決方法
WSL2でのGUI設定、つまりWSL2とVcXsrvの設定がそもそも出来ておらずQEMUも起動しないという流れでした。
解決方法としては、WSL2とVcXsrvの設定をやり直します。
具体的にはVcXsrv設定の確認として使われるXeyes
が起動して目が表示される。この状態を目指します。
下準備
VcXsrvのアンインストール&再インストール
出来る限り初期状態からセットアップをした方が成功しやすいので、まずVcXsrvをアンスト&再インストールします。
もし、後述するスタートアップにconfig.xlanuchを置いている方はそれも削除しといてください。
私は更にUbuntu
も初期状態に近かったので再インストールしました。ただ人によっては既に開発環境を整えているという方もいると思います。Ubuntuは個々人の責任でやるのか判断してください。
セットアップ手順
基本的には、既存のWSLでVcXsrvのセットアップ記事と変わらない内容になります。
書籍の読者の方は、付録のページの内容に以下の内容が更に加わるという感じで見ていってください。
VcXsrvの設定
-
Extra settings
の一番下にあるAdditional parameters for VcXsrv
に以下を入力してください
-ac
2.Finish configuration
のSave configuration
を押してファイルを生成。生成されたファイルをエクスプローラーのアドレスバーまたはWindowsキー + Rキー
を押して表示される画面にshell:startup
と入力して表示されたスタートアップフォルダに移して保存してください。
この設定をしておくと、パソコン起動時にVcXsrvが自動で起動してくれるので楽です。
3.ファイヤーウォールの設定が表示されなかった場合は、コントロールパネル
→システムとセキュリティ
→Windowsファイヤーウォールによるアプリケーションの許可
からVcXsrv windows xserver
のプライベートとパブリック両方にチェックが入っているか確認してください。
WSLの設定
ここからは書籍には記載されていない内容です。上記設定のみでは自分の場合は起動できなかったのでここがメインです。
- 以下の内容を~/.bashrcの最後に加えてます。
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0
これでWSLとlocalhostの接続ができるようになります。この設定の詳細は詳しくはこちらを見てください。
2.設定を反映させます。
source ~/.bashrc
設定としてはこれで終わりです。後はXeyesをインストールして実行します。
xeyes
これで目が表示された場合はVcXsrvの設定は成功しました。
この状態で、書籍にもあるハローワールドをQEMUで実行するコマンドを叩いてください。少し待つと起動が成功します。
再ログイン時に設定が反映されない
Ubuntuに再ログインした時に、何故か.bashrc
の内容が反映されない。source ~/.bashrc
を入力すれば治るが面倒くさいという方がいるかもしれません。
この症状の方は、ターミナル上のシェルが真っ白になっているという症状も起きているかもしれません。
原因としては.bash_profile
があることで.bashrc
が読み込まれなくなっているようです。
対策としてはこちらの記事にある通り、中身を映してから.bash_profile
の削除を行ってください。
参考文献
WSL2におけるVcXsrvの設定
WSL上にXサーバをインストールしてGUIを実現する(VcXsrv編)
VcXsrv(Xサーバー)をWindowsにインストールしLinuxのGUIをリモート操作する設定方法
WSLのデフォルトシェルが真っ白になった話(.bashrcと.bash_profile)