トラブルシューティング(Ubuntu 24.04LTS on WSL2)
- はじめに
- Powershellで文字化けする(日本語が表示されない)
- 仮想化支援技術が有効になっているかわからない
- Ubuntuのインストールに成功しているかを確認する。
- Ubuntu 24.04 LTSがWSL2で動いているかどうか?
- WSL上にインストールしたLinuxのパスワードを忘れた
- あるパッケージがインストールされているかどうか調べたい
- 「sudo apt install パッケージ名」が失敗するとき
- Ubuntuの起動時のユーザがrootユーザになっている場合
- 「MESA: error: ZINK: failed to choose pdev glx: failed to create drisw screen」というエラーメッセージがでる。
- 半角全角キーを押すとシングルクォートが表示される
- 戻る
はじめに_
WSL2上のUbuntu 24.04 LTSに関するトラブルシューティング
Powershellで文字化けする(日本語が表示されない)_
以下のページを参考に使用しているフォントを日本語対応フォント(例えばMSゴシックなど)にすること。
仮想化支援技術が有効になっているかわからない_
- タスクマネージャーを起動する(スタート→Windowsシステムツール→タスクマネージャー)
- タスクマネージャーの「パフォーマンス」タブをクリックし、CPUの項を開く
- CPUの項で「仮想化」という項目を見る。「有効」となっていれば仮想化支援技術は有効になっている。
- 仮想化支援技術が有効でないときには、BIOSの設定から仮想化支援技術を有効にする。

Ubuntuのインストールに成功しているかを確認する。_
PowerShell上で以下のコマンドを入力し、Ubuntuが表示されているならばインストールに成功している。以下の例では、Ubuntuが表示されているのでインストールに成功している(ただし、Stoppedとなっているので現在稼働していない)。
PS C:\WINDOWS\system32> wsl -l -v NAME STATE VERSION * Ubuntu-18.04 Stopped 2 docker-desktop Stopped 2 docker-desktop-data Stopped 2 Ubuntu Stopped 2 Ubuntu-20.04 Stopped 2
Ubuntu 24.04 LTSがWSL2で動いているかどうか?_
注:以下の例のUbuntu 20.04の話をUbuntu-24.04に置き換えて読んでください。
まず、PowerShellを管理者権限で起動する。デスクトップ左下のスタートをクリックし、「よく使うアプリ」からWindows Powershellを選ぶ。下の画像のようにWindows Powershellの上で右クリックし、「管理者として実行する」を選択し、Windows Powershellを起動する。

起動したWindows Powershell上で以下のコマンドを実行する。このコマンドでWSL上にインストールされているLinuxディストリビューション(-lオプション)および、そのディストリビューションがWSLのどのバージョンで動いているか(-vオプション)を調べることができる。
wsl -l -v
私の環境での実行結果を示す。私の環境ではUbuntu 18.04と20.04がインストールされており、両方どもバージョン2(WSL2)で動いている。
wsl -l -v NAME STATE VERSION * Ubuntu-18.04 Stopped 2 Ubuntu-20.04 Running 2
もし、Ubuntu 20.04がバージョン1(WSL1)で動いている場合は、バージョン2で動かすように設定しなおすこと。
まず、Ubuntu 20.04を停止する。以下のコマンドをPowershell上で実行する。
wsl -t Ubuntu-20.04
停止していることを確認する(STATEがStoppedになっていれば停止している)。
wsl -l -v NAME STATE VERSION * Ubuntu-18.04 Stopped 2 Ubuntu-20.04 Stopped 2
まず、今後インストールするLinuxを標準でWSL2上で動くように設定する。PowerShell上で以下を実行する。
wsl --set-default-version 2
Ubuntu 20.04をWSL2上で動くように切り替える。なお、以下について注意すること(私は以下で引っかかって切り替えられなかった)
- BIOSで仮想化機能を有効にしておく
- Cドライブに十分な容量がある
wsl --set-version Ubuntu-20.04 2 変換中です。この処理には数分かかることがあります...
メッセージのとおり処理に時間がかかるのでしばらく待つ。変換が終わったならば、切り替わっているかを確認する。VERSIONが2になっていれば、WSL2上で動くように切り替わっている。
wsl -l -v
WSL1からWSL2で動くように変更した場合は、Xウィンドウの設定についてUbuntu上でのXserverの起動の最初から実施しなおすこと(環境変数DISPLAYの値の設定を書き直すため)。
WSL上にインストールしたLinuxのパスワードを忘れた_
以下を参考に対応する。
- マイクロソフト:新しい Linux ディストリビューションのユーザー アカウントとパスワードを作成するの「パスワードを忘れた場合」
概要は以下のとおり。Ubuntu 24.04 上のユーザ hogehogeのパスワードを忘れたので変更する。
- Windows Powershellを管理者権限で起動する
- 「スタート」→「Windows Powershell」に進む
- Windows Powershellのアイコンにカーソルを合わせ、右クリックする。
- 管理者として起動を選択する。
- 現在インストールされているLinuxの一覧を確認する。たとえば、私の環境では以下のようになる。
wsl -l -v NAME STATE VERSION * Ubuntu-24.04 Stopped 2
- 上記コマンドのNAME欄を確認する。上記の例ではUbuntu-24.04が目的のLinux名となる。Ubuntu 24.04 にルート権限(管理者権限)でログインする。Powershell上で以下のコマンドを実行する。私の環境では以下のようなメッセージがでた。
wsl -u root -d Ubuntu-24.04 Welcome to Ubuntu 24.04 LTS (GNU/Linux 5.15.146.1-microsoft-standard-WSL2 x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/pro System information as of 2024年 6月 6日 木曜日 17:35:49 JST System load: 0.0 Processes: 48 Usage of /: 0.5% of 1006.85GB Users logged in: 1 Memory usage: 6% IPv4 address for eth0: 172.22.14.5 Swap usage: 0% * Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s just raised the bar for easy, resilient and secure K8s cluster deployment. https://ubuntu.com/engage/secure-kubernetes-at-the-edge This message is shown once a day. To disable it please create the /root/.hushlogin file. root@CIRCLE-CFSR3:/mnt/c/Windows/system32#
- 該当するユーザ(今回の例ではhogehoge)のパスワードを変更する。なお、Powershell上に表示される日本語メッセージは文字化けするので注意(Windows 11の日本語文字コードはCP932、Ubuntuの日本語文字コードはUTF-8のため)。そこで、表示メッセージを一時的に英語にして、パスワードの変更を行う。以下の例はユーザ名をgotohにしている。
% export LANG=C % passwd gotoh New password: (ここに新しいパスワードを入力する。入力結果は表示されないので注意) Retype new password: (もう一度、同じパスワードを入力する) passwd: password updated successfully (このようなメッセージがでたらパスワードの変更は成功している)
- Ubuntuからログアウトする
% exit
あるパッケージがインストールされているかどうか調べたい_
% apt list "パッケージ名/キーワード"
たとえば、mozcがインストールされているか調べたい場合は以下のように入力する。
% apt list "*mozc*" 一覧表示... 完了 emacs-mozc-bin/focal,now 2.23.2815.102+dfsg-8ubuntu1 amd64 [インストール済み、自動] emacs-mozc/focal,now 2.23.2815.102+dfsg-8ubuntu1 amd64 [インストール済み] fcitx-mozc/focal,now 2.23.2815.102+dfsg-8ubuntu1 amd64 [インストール済み] ibus-mozc/focal 2.23.2815.102+dfsg-8ubuntu1 amd64 mozc-data/focal,now 2.23.2815.102+dfsg-8ubuntu1 all [インストール済み、自動] mozc-server/focal,now 2.23.2815.102+dfsg-8ubuntu1 amd64 [インストール済み、自動] mozc-utils-gui/focal,now 2.23.2815.102+dfsg-8ubuntu1 amd64 [インストール済み、自動] uim-mozc/focal 2.23.2815.102+dfsg-8ubuntu1 amd64
以下のコマンドでも調べられる。
% dpkg -l | grep パッケージ名/キーワード % dpkg -l | grep mozc ii emacs-mozc 2.23.2815.102+dfsg-8ubuntu1 amd64 Mozc for Emacs ii emacs-mozc-bin 2.23.2815.102+dfsg-8ubuntu1 amd64 Helper module for emacs-mozc ii fcitx-mozc:amd64 2.23.2815.102+dfsg-8ubuntu1 amd64 Mozc engine for fcitx - Client of the Mozc input method ii mozc-data 2.23.2815.102+dfsg-8ubuntu1 all Mozc input method - data files ii mozc-server 2.23.2815.102+dfsg-8ubuntu1 amd64 Server of the Mozc input method ii mozc-utils-gui 2.23.2815.102+dfsg-8ubuntu1 amd64 GUI utilities of the Mozc input method
「sudo apt install パッケージ名」が失敗するとき_
Ubuntuではソフトウェアのインストールにパッケージ管理システムaptを使っています。aptは次の手順でインストールを実行します。
- 「sudo apt install パッケージ名」が実行されたとき、インストールを指定されたパッケージがダウンロード済みのパッケージ一覧にあるか確認する(パッケージ一覧は /var/lib/apt/lists以下にある)。
- パッケージ一覧にパッケージ名があれば、そこに記載されている情報に従いパッケージをダウンロードする。
- ダウンロードしたパッケージをインストールする。
パッケージのインストールに失敗するとき、以下の原因があり得ます。
- a: パッケージ名がパッケージ一覧に含まれていない
- a-1: リポジトリ(パッケージの配布元)には、パッケージが存在するが、ダウンロード済みのパッケージ一覧に含まれていない(ダウンロード済みのパッケージ一覧が古い)
- a-2: リポジトリにもパッケージが存在しない
- b: ダウンロード済みのパッケージ一覧に記載されているパッケージ情報とリポジトリのパッケージ情報が一致しない(ダウンロード済みのパッケージ一覧が古い)
- c: 指定したパッケージのインストールに必要な他のインストール済みパッケージのバージョンが古い
- d: 指定したパッケージと競合するパッケージがすでにインストール済みであり、当該パッケージを自動的に削除できない
- e: ネットワークにつながっていない。
上記のa-1とbが原因の場合、ダウンロード済みパッケージ一覧を最新にすることで対応できます。以下のコマンドを実行してください。
% sudo apt update
上記のcが原因の場合、インストール済みのパッケージを最新にすることで対応できます(対応できることが多いです)。以下のコマンドをじっこうしてください。
% sudo apt update % sudo apt upgrade -y
上記のa-2が原因かどうかは、インストールしたいパッケージがそもそも存在するかどうかを確認する必要があります。以下のコマンド名でパッケージを検索し、存在しなければa-2が原因です。適切なパッケージ名を検索エンジンなどで調べるか、別の方法でほしいソフトウェアをインストールする必要があります。
% apt search パッケージ名 (実行例) % apt search texlive-latex-extra ソート中... 完了 全文検索... 完了 debiandoc-sgml/focal 1.2.32-2 all DebianDoc SGML DTD および整形用ツール pandoc/focal 2.5-3build2 amd64 general markup converter rubber/focal 1.5.1-2 all automated system for building LaTeX documents texlive-latex-extra/focal 2019.202000218-1 all TeX Live: LaTeX additional packages texlive-latex-extra-doc/focal 2019.202000218-1 all TeX Live: Documentation files for texlive-latex-extra
原因dの場合の対処方法は個々の事例によって異なります。基本的にはエラーメッセージに従って試行錯誤するしかありません。たとえば、以下のようなエラーメッセージがでます。
% sudo apt upgrade -y パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 これらを直すためには 'apt --fix-broken install' を実行する必要があるかもしれ ません。 以下のパッケージには満たせない依存関係があります: emacs : 依存: emacs-gtk (>= 1:26.3) または emacs-lucid (>= 1:26.3) しかし、インストールされていません または emacs-nox (>= 1:26.3) emacs-bin-common : 依存: emacs-common (= 1:26.3+1-1ubuntu2) emacs-el : 依存: emacs-common (= 1:26.3+1-1ubuntu2) E: 未解決の依存関係です。'apt --fix-broken install' を実行してみてください ( または解法を明示してください)。
原因eの場合は、そもそもネットワークに接続できていない可能性があります。以下のようなエラーメッセージが出る場合は、原因eを疑ってください。とりあえずは、Windows側でネットワークに接続できていることを確認し、その後、Ubuntuを再起動してみてください。
エラー:1 http://jp.archive.ubuntu.com/ubuntu focal-updates/main amd64 evince-common all 3.36.7-0ubuntu1 404 Not Found [IP: 160.26.2.187 80] エラー:2 http://jp.archive.ubuntu.com/ubuntu focal-updates/main amd64 libevdocument3-4 amd64 3.36.7-0ubuntu1 404 Not Found [IP: 160.26.2.187 80] エラー:3 http://jp.archive.ubuntu.com/ubuntu focal-updates/main amd64 libevview3-3 amd64 3.36.7-0ubuntu1 404 Not Found [IP: 160.26.2.187 80] エラー:4 http://jp.archive.ubuntu.com/ubuntu focal-updates/main amd64 evince amd64 3.36.7-0ubuntu1 404 Not Found [IP: 160.26.2.187 80] 無視:5 http://jp.archive.ubuntu.com/ubuntu focal-updates/main amd64 ruby2.7 amd64 2.7.0-5ubuntu1.3 無視:6 http://jp.archive.ubuntu.com/ubuntu focal-updates/main amd64 libruby2.7 amd64 2.7.0-5ubuntu1.3 エラー:5 http://security.ubuntu.com/ubuntu focal-updates/main amd64 ruby2.7 amd64 2.7.0-5ubuntu1.3 404 Not Found [IP: 160.26.2.187 80] エラー:6 http://security.ubuntu.com/ubuntu focal-updates/main amd64 libruby2.7 amd64 2.7.0-5ubuntu1.3 404 Not Found [IP: 160.26.2.187 80] E: http://jp.archive.ubuntu.com/ubuntu/pool/main/e/evince/evince-common_3.36.7-0ubuntu1_all.deb の取得に失敗しました 404 Not Found [IP: 160.26.2.187 80] E: http://jp.archive.ubuntu.com/ubuntu/pool/main/e/evince/libevdocument3-4_3.36.7-0ubuntu1_amd64.deb の取得に失敗しました 404 Not Found [IP: 160.26.2.187 80] E: http://jp.archive.ubuntu.com/ubuntu/pool/main/e/evince/libevview3-3_3.36.7-0ubuntu1_amd64.deb の取得に失敗しました 404 Not Found [IP: 160.26.2.187 80] E: http://jp.archive.ubuntu.com/ubuntu/pool/main/e/evince/evince_3.36.7-0ubuntu1_amd64.deb の取得に失敗しました 404 Not Found [IP: 160.26.2.187 80] E: http://security.ubuntu.com/ubuntu/pool/main/r/ruby2.7/ruby2.7_2.7.0-5ubuntu1.3_amd64.deb の取得に失敗しました 404 Not Found [IP: 160.26.2.187 80] E: http://security.ubuntu.com/ubuntu/pool/main/r/ruby2.7/libruby2.7_2.7.0-5ubuntu1.3_amd64.deb の取得に失敗しました 404 Not Found [IP: 160.26.2.187 80] E: いくつかのアーカイブを取得できません。apt-get update を実行するか --fix-missing オプションを付けて試してみてください。
Windows上のWebブラウザ(Edgeなど)で http://jp.archive.ubuntu.com/ にアクセスできる場合は、Ubuntu上で名前解決できていない可能性があります。
以下のページを参考に名前解決のためにアクセスするDNSサーバの設定を変更します。
まず、/etc/wsl.confがあるか確認します。
% ls /etc/wsl.conf /etc/wsl.conf % cat /etc/wsl.conf [boot] systemd=true
/etc/wsl.confに追記します。以下のコマンドを実行します。
% echo '[network]' | sudo tee -a /etc/wsl.conf % echo 'generateResolvConf = false' | sudo tee -a /etc/wsl.conf
追記されていることを確認します。
% cat /etc/wsl.conf [boot] systemd=true [network] generateResolvConf = false
上記のように追記できていない場合は、利用できるエディタを使って正しく編集してください。Ubuntu標準のエディタとしてはnano, viなどがあります。
% sudo nano /etc/wsl.conf (nanoを使って編集する場合) % sudo vi /etc/wsl.conf (viを使って編集する場合)
続いて、DNSサーバのIPアドレスを設定しているファイル /etc/resolv.confを編集する。まず、存在するかどうか確認する。私の環境では/etc/resolv.confは自動生成されるため、以下のようにシンボリックリンク(別のファイルにリンクをはること)で作成されている。
% ls -l /etc/resolv.conf lrwxrwxrwx 1 root root 20 6月 4 23:58 /etc/resolv.conf -> /mnt/wsl/resolv.conf % 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.29.160.1
すでに存在するresolv.confを削除し、新たに作成する。
% sudo rm /etc/resolv.conf % echo 'nameserver 8.8.8.8' | sudo tee /etc/resolv.conf % cat /etc/resolv.conf nameserver 8.8.8.8
Ubuntuを終了する。
% exit
Powershellを起動し、WSLを一度停止する。WSLを停止したら、Powershellを終了する。
% wsl --shutdown % exit
Ubuntuを起動する。以下のようにDNSサーバが8.8.8.8になっていたら設定成功。
% resolvectl status Global Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported resolv.conf mode: foreign Current DNS Server: 8.8.8.8 DNS Servers: 8.8.8.8 Link 2 (eth0) Current Scopes: none Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
アップデートしてみる。
% sudo apt update % sudo apt upgrade -y
Ubuntuの起動時のユーザがrootユーザになっている場合_
Ubuntuインストール後のユーザ設定時にうまくユーザアカウントを作成できていない場合に、Ubuntuがrootで起動してしまうとのこと。
参考
まず、現在のユーザを確認する。PowershellからUbuntuをrootユーザで起動する。Powershell上で以下のコマンドを実行する。
% wsl -u root -d Ubuntu-24.04
Ubuntuを起動したら、ターミナルでコマンドwhoamiを実行する。whoamiの実行結果がrootと表示されている場合は現在のユーザはrootである。
% whoami root
ログイン用ユーザ(一般ユーザ)が作成されているかを確認する。ユーザ名がgotohの場合、以下のコマンドで確認する。以下のようにユーザ名を含む行が表示されていたら、ログイン用ユーザは作成済みとなっている。何も表示されないならば、一般ユーザは作成されていない。
# grep gotoh /etc/passwd gotoh:x:1002:1002:,,,:/home/gotoh:/bin/bash
一般ユーザは作成されていない場合、以下の手順で作成する。この例ではユーザ名はgotohとする。Ubuntuのターミナル上で「adduser ユーザ名」を実行する。ユーザ名は半角英数字にすること(スペースは入れない)。部屋番号、職場電話番号、自宅電話番号、その他は何も入力せずEnterキーを押す。
# adduser gotoh ユーザー `gotoh' を追加しています... 新しいグループ `gotoh' (1001) を追加しています... 新しいユーザー `gotoh' (1001) をグループ `gotoh' に追加しています... ホームディレクトリ `/home/gotoh' を作成しています... `/etc/skel' からファイルをコピーしています... 新しい パスワード: (注:キー入力しても何も表示されない) 新しい パスワードを再入力してください: (注:キー入力しても何も表示されない) passwd: パスワードは正しく更新されました gotoh のユーザ情報を変更中 新しい値を入力してください。標準設定値を使うならリターンを押してください フルネーム []: Yuichi Goto 部屋番号 []: 職場電話番号 []: 自宅電話番号 []: その他 []: 以上で正しいですか? [Y/n] Y
これで一般ユーザが作成できた。続いて作成したユーザでsudoが使えるように設定する。以下のコマンドのgotohの部分を自分のユーザに変更すること。
% gpasswd -a gotoh sudo Adding user gotoh to group sudo
ユーザが作成されているかを確認する。以下のようにユーザ名を含む行が表示されていたら、ユーザは作成済みとなっている。
# grep gotoh /etc/passwd gotoh:x:1002:1002:,,,:/home/gotoh:/bin/bash
作成したユーザでUbuntuが起動するように設定する。以下のコマンドを実行し、/etc/wsl.conf に設定を記述する。なお、以下の例ではユーザ名をgotohとしている。 /etc/wsl.confに追記する。以下のコマンドを実行する。
# echo '[user]' | tee -a /etc/wsl.conf # echo 'default=gotoh' | tee -a /etc/wsl.conf
catコマンドで内容が追記されているか確認する(最後の2行)。
# cat /etc/wsl.conf [boot] systemd=true [user] default=gotoh
Ubuntuからログアウトする。
# exit
wslを停止する。
> wsl -t Ubuntu-24.04
Ubuntuにログインし、作成したユーザで起動できるか確認する。
> wsl -d Ubuntu-24.04 % whoami gotoh
「MESA: error: ZINK: failed to choose pdev glx: failed to create drisw screen」というエラーメッセージがでる。_
未解決
半角全角キーを押すとシングルクォートが表示される_
未解決。 たぶん、キーボード設定の問題。
キーボード配列
ターミナル(コンソール)上のキーボード設定_
以下のコマンドで現状を確認できる。
% localectl status System Locale: LANG=ja_JP.UTF-8 VC Keymap: (unset) X11 Layout: us X11 Model: pc105
GUI(Xウィンドウ)上のキーボード設定_
以下のコマンドで現状を確認できる。
% setxkbmap -print -verbose 10 Setting verbose level to 10 WARNING: Running setxkbmap against an Xwayland server locale is C Trying to load rules file ./rules/evdev... Trying to load rules file /usr/share/X11/xkb/rules/evdev... Success. Applied rules from evdev: rules: evdev model: pc105 layout: us Trying to build keymap using the following components: keycodes: evdev+aliases(qwerty) types: complete compat: complete symbols: pc+us+inet(evdev) geometry: pc(pc105) xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete" }; xkb_symbols { include "pc+us+inet(evdev)" }; xkb_geometry { include "pc(pc105)" }; };
キーボードの設定を変更する。
% setxkbmap -layout jp