WSL2でgoogle-chromeを実行しようとした経緯
以下2つの記事の続きです。
1つめ
WSL1でsyslogサーバを立ててみた
2つめ
WSL2でNTPサーバを立ててみた
snmpサーバ(zabbix)を立てようと準備していましたが、zabbixを操作するためにGUI環境がほしいと思いWSL2上で起動するブラウザー(chrome)を用意することにしました。
しかし思いのほか準備に手間がかかりましたので備忘録として記載します。
セットアップの流れは以下の通りです。
- WindowsにX Serverをインストール
- WindowsのfirewallでX Serverを許可する
- WSL2にgoogle-choromをインストール
- WSL2でDisplayを設定する
1.WindowsにX Serverをインストール
以下記事を参照してください。
VcXsrv(Xサーバー)をWindowsにインストールしLinuxのGUIをリモート操作する設定方法
PCを毎回起動すると同時にX Serverも動かさないといけません。
それが面倒な方は以下手順を実施してください。
2."Save configuration"で設定を保存する
3.保存した”config.xlaunch”ファイルのショートカットを作成し、スタートアップフォルダーにショートカットを格納する。
スタートアップは"Windowsボタン + R"でポップアップを開き”shell:startup”と入力する。
2.WindowsのfirewallでX Serverを許可する
自分はfirewallの許可ができておらずなかなかgoogle-chromeを起動できずにいました。
以下手順で画面遷移をする。
設定>更新とセキュリティ>Windowsのセキュリテイ>ファイアーウォールとネットワーク保護>ファイアーウォールによるアプリケーションの許可
”VcXsrv windows Xserver”の左側チェックボックスを有効にする
3.WSL2にgoogle-choromをインストール
最初にroot権限を付与する。
$ sudo su -
アップデートする
$ sudo apt update
リポジトリ追加する
$ sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
公開鍵をダウンロードする
$ sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
chromeをインストールする
$ sudo apt install google-chrome-stable
3.WSL2でDisplayを設定する
ハマりポイント2でした。
はじめ以下内容でコマンド入力しましたが、以下エラーが発生しました。
# 環境設定コマンド
$ export DISPLAY=:0.0
# エラー内容
$ Error: Can't open display: :0.0
なので、以下内容で設定してください。
簡単に説明すると明示的に自身のIPアドレスを指定しています。
$ export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
詳しい説明は以下記事を参照してください。
WSL2におけるVcXsrvの設定
これで設定は完了です以下コマンドでgoogle-chromeを起動してみてください。
$ google-chrome
エラーが出た場合は以下コマンドで起動してください。
$ google-chrome --no-sandbox
起動できれば完了です。
PC再起動後にエラーが発生する場合
WSL2のIPアドレスは自動割振りのため、DISPLAYの環境設定を都度設定しないといけません。
以下のどちらかコマンドを入力してください。
$ export DISPLAY=:0.0
$ export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
まとめ
たかがGUIアプリを起動するだけですが、すごく時間がかかりました。検証時に用意していると時間がもったいないため、スキマ時間にサーバ類はすべて準備したいものです。