タグ: WSL2

  • WSLのUbuntuでapt updateがエラーになる

    Windows11のWSLのUbuntuでapt updateがエラーになる。エラーとしては下記で、外部への接続ができなくてエラーになる。なお、PINGを外部にむけて打つと、ちゃんと返ってくる。

    timed out Could not connect to security.ubuntu.com:80 (185.125.190.83), connection timed out Could not connect to security.ubuntu.com:80 (91.189.91.83), connection timed out Could not connect to security.ubuntu.com:80 (91.189.91.81), connection timed out
    W: Some index files failed to download. They have been ignored, or old ones used instead.
    • 「/etc/resolv.conf」を書き換えて、外部DNS(8.8.8.8)にしたけれど、効果なし。
    • apt updateで使っているディレクトリの「/var/lib/apt/lists/」を消したけれど、効果なし。
    • 「/etc/wsl.conf」も書き換えたけれど、効果なし。
    • 接続先のインターネット回線も変えてみたけれど、効果なし。

    WSLの設定としては、八方ふさがりな状態になった。ふと思いついて、Windows11にインストールされているアンチウィルスソフト(Symantec Endpoint Security)を無効化してみたところ、apt updateが成功した。

    原因: アンチウィルスのファイアウォール機能が通信を止めていた。

    わかってしまえば、とても単純な理由だった。いっそ、WSLからの通信を全部とめてくれたのならば、わかりやすかったのだが、中途半端に止められていたので気が付くまで試行錯誤をしてしまった。

  • “wsl.exe –update”を実行するとストア版のWSLにアップデートされる

    久しぶりにWindows10で、WSLを起動したところ、”wsl.exe –update” を実行するようにというメッセージが表示された。

    これは、従来のWSLから、Microsoft Store版(ストア版)のWSLにアップデートするコマンドだった。実行しないという選択もないので、実行した。

    wsl.exe --update

    実際に実行してみると、下記のようになる。「Linux 用 Windows サブシステム  はインストールされました。」を表示されれば成功。念のため、”wsl.exe –version” を実行し、結果が取得できれば、ストア版への更新ができている。

    PS C:\Users\zen> wsl.exe --update
    インストール中: Linux 用 Windows サブシステム
    Linux 用 Windows サブシステム  はインストールされました。
    PS C:\Users\zen>
    PS C:\Users\zen> wsl --version
    WSL バージョン: 2.0.9.0
    カーネル バージョン: 5.15.133.1-1
    WSLg バージョン: 1.0.59
    MSRDC バージョン: 1.2.4677
    Direct3D バージョン: 1.611.1-81528511
    DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
    Windows バージョン: 10.0.19045.3930
    PS C:\Users\zen>
  • WSL2のUbuntuのイメージ保存場所

    WSL2で、実際のデータがどこにあるのか気になって調べたので、メモ。

    デフォルト設定では、ユーザアカウントの「AppData¥Local¥Packages¥」の下に、フォルダ分けされて保存されていく。WSL2の場合は、「ext4.vhdx」で保存されるのだが、WSL1でLinuxを展開して、WSL2に変換した場合は、下記のように「rootfs」フォルダの下にファイルが展開される。WSL(WSL1)の場合も同じフォルダだ。

    C:\Users\%USER%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs

    ※ %USER% の部分は、自分のユーザ名に置き換えてアクセスする。

    最初からWSL2の場合は、vhdxファイルで下記のフォルダに展開されているはず。

    C:\Users\%USER%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\

    参考:  https://learn.microsoft.com/en-us/windows/wsl/disk-space

  • WindowsからWSLのLinuxディスク領域を開く

    Windows(Windows10, Windows11)から、WSL(WSL2含む)のLinuxの領域にエクスプローラーでアクセスすることができる。

    エクスプローラーからアクセスするには、アドレスバーに、`\\wsl$`と入力して、Enterキーを押すと表示される。WSLの領域はネットワークドライブとして、アクセスされる。

    \\wsl$

    インストールした環境名を続けて入力することで、ルート以下のフォルダを表示できる。

    \\wsl$\Ubuntu

    エクスプローラーで開いた後は、ファイルの書き込みや読み出しも可能。ただ、Linuxのシステム領域などはいじらないほうがいい。

  • Windows10の21H1はデフォルトでWSL2になっている。

    Windows10 21H1で、WSLをインストールすると、最初から規定のバージョンが2になっている(デフォルトでWSL2になっている)。

    設定を変えなくても、WSL2の機能を使えるので楽。

  • WSL2でDockerを使えるようにインストールする

    メモとして。前提として、WSL2のインストールは終わっている。

    Docker Desktop for Windowsをダウンロードする。下記のURLにアクセスして、「Get Docker」からダウンロードする。

    https://hub.docker.com/editions/community/docker-ce-desktop-windows/

    ダウンロードしたインストーラー(EXEファイル)を実行する。インストールのときに、「Install required Windows components for WSL2」にチェックが入っているので、WSL2対応もばっちり。

    インストールが終わったら、Windows10の再起動が入る。

    で、なにをしたらいいのかわからないので、チュートリアルを実施。

    チュートリアルの通りにやったら、チュートリアルのコンテナが立ち上がった。

    このコンテナがどこで動いているのか気になって、WSL2のUbuntuでpsコマンドをたたいてみると、dockerに関連したプロセスが起動しているので、WSL2の上で動作していることが確認できた。

     root       185  0.0  0.5 1463396 31664 pts/1   Ssl+ 20:06   0:00 /mnt/wsl/docker-desktop/docker-desktop-proxy --distro-n 
  • WSL2でDockerを使えるようにインストールする

    自分のメモとして。

    前提として、WSL2のインストールは終わっている。

    Docker Desktop for Windowsをダウンロードする。下記のURLにアクセスして、「Get Docker」からダウンロードする。

    https://hub.docker.com/editions/community/docker-ce-desktop-windows/

    ダウンロードしたインストーラー(EXEファイル)を実行する。インストールのときに、「Install required Windows components for WSL2」にチェックが入っているので、WSL2対応もばっちり。

    インストールが終わったら、Windows10の再起動が入る。

    で、なにをしたらいいのかわからないので、チュートリアルを実施。

    チュートリアルの通りにやったら、チュートリアルのコンテナが立ち上がった。

    このコンテナがどこで動いているのか気になって、WSL2のUbuntuでpsコマンドをたたいてみると、dockerに関連したプロセスが起動しているので、WSL2の上で動作していることが確認できた。

    root      185  0.0  0.5 1463396 31664 pts/1  Ssl+ 20:06  0:00 /mnt/wsl/docker-desktop/docker-desktop-proxy --distro-n

    Dockerのインストールというかセットアップが簡単すぎて、正直よくわからない。利用する側にしてみると、どのみちブラックボックスなので、このくらい簡単なのがいいのだろう。

  • WSLからWSL2に更新する

    Windows10 Ver.1903でWSLからWSL2にしたので、メモ。WSL2が出たときの手順よりも、かなり楽になってて衝撃的だった。特に仮想マシンのプラットフォームの部分がmsiファイルでインストールではなく、コマンドで済んだので、楽。

    1. 「仮想マシン プラットフォーム」をコマンドで有効にする。

    Powershellを管理者として実行する。下記のコマンドを実行する。

    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

    PCを再起動する

    2. 規定のバージョンをWSL2に変更する

    Powershellを管理者として実行する。下記のコマンドを実行する。

    wsl --set-default-version 2

    3. 既存のWSLをWSL2に変換する。

    PCにインストールされている既存のWSLの名前を下記のコマンドで確認する。

    wsl -l -v

    次にWSL2に、下記のコマンドで変換する。(Ubuntu-20.04の部分は、上記のコマンドで調べた名前を入れる)

    wsl --set-version Ubuntu-20.04 2
    

    もう一度、「wsl -l -v」コマンドを実行し、WSLのバージョンが2になっているか確認する。

    wsl -l -v

    ■実際に試したところ

    PS C:\windows\system32>  wsl --set-default-version 2
    WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
    PS C:\windows\system32>
    PS C:\windows\system32>
    PS C:\windows\system32>
    PS C:\windows\system32> wsl -l -v
      NAME            STATE           VERSION
    * Ubuntu-20.04    Stopped         1
    PS C:\windows\system32> wsl --set-version Ubuntu-20.04 2
    変換中です。この処理には数分かかることがあります...
    WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
    変換が完了しました。
    PS C:\windows\system32>
    PS C:\windows\system32> wsl -l -v
      NAME            STATE           VERSION
    * Ubuntu-20.04    Stopped         2
    PS C:\windows\system32>
    

  • 使用しているWSLのバージョンを調べる

    新しくWSL2が公開された。現在使用されているWSLのバージョンを調べる方法は下記。

    どちらかのコマンドをPowershellなどで実行する。

    wsl --list --verbose
    wsl -l -v

    ■実際に実行したところ

    PS C:\Users\zen> wsl --list --verbose
      NAME      STATE           VERSION
    * Ubuntu    Running         1
    PS C:\Users\zen> wsl -l -v
      NAME      STATE           VERSION
    * Ubuntu    Running         1
    PS C:\Users\zen>
    
  • WSLをWSL2に更新する

    WSLをWSL2に更新したので、そのときの作業メモ。

    1. 下記のURLにアクセスする
    https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-kernel

    2. 「最新の WSL2 Linux カーネル更新プログラム パッケージをダウンロード」のリンクをクリックする。(wsl_update_x64.msiがダウンロードされた)

    3. ダウンロードしたMSIファイルを実行する

    4. 特権ユーザの確認が求められるので、許可する。

    5. 「Finish」をクリックする

    6. Powershellで以下のコマンドを実行し、デフォルトのバージョンをWSL2に切り替える(新しくディストリビューションをインストールするとき用の設定)

     wsl --set-default-version 2
    

    7. 既存のWSLのディストリビューションをWSL2に変換するコマンドを実行する(Ubuntuがインストールされているので、変換する)

    wsl --set-version Ubuntu 2
    

    書式

    wsl --set-version ディストリビューション バージョン

    8. WSLのバージョンを確認する、Powershellで以下のコマンドを実行する

    wsl -l -v

    これで、VERSIONの部分が2になっていれば、WSL2への移行が終わり。

    ■実行したところ

    PS C:\Users\zen> wsl --set-default-version 2
    WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
    PS C:\Users\zen>
    PS C:\Users\zen> wsl -l -v
      NAME      STATE           VERSION
    * Ubuntu    Running         1
    PS C:\Users\zen>
    PS C:\Users\zen>
    PS C:\Users\zen> wsl --set-version Ubuntu 2
    変換中です。この処理には数分かかることがあります...
    WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
    変換が完了しました。
    PS C:\Users\zen>
    PS C:\Users\zen> wsl -l -v
      NAME      STATE           VERSION
    * Ubuntu    Running         2
    PS C:\Users\zen>