金子邦彦研究室インストールUbuntu, WSL2WSL2 のインストール,WSL2 上への Ubuntu のインストールと利用(Windows 11 対応の記事)(Windows 上)

WSL2 のインストール,WSL2 上への Ubuntu のインストールと利用(Windows 11 対応の記事)(Windows 上)

概要WSL 2のインストールとUbuntuの利用手順を解説する.まず、Windowsの機能の有効化から始める.WSL 2 のインストールが終わったら,管理者としてコマンドプロンプトを実行し、「wsl --list --online」コマンドでWSLの一覧を取得できる.「wsl --update」コマンドを実行してWSLを更新できる.Ubuntu 22.04 のインストールは、「wsl --install -d Ubuntu-22.04」コマンドである.インストール時にユーザ名とパスワードの設定が求められる.CUDA ToolkitやcuDNN、PyTorch、TensorFlowのインストールや動作確認、Ubuntu上でのセットアップ手順やアプリケーションのインストール方法については別のページで詳しく説明している.以上がWSL 2のインストールとUbuntuの利用手順の概要である.

目次

  1. 前準備
  2. Ubuntu (Linux ディストリビューション) のインストール
  3. WSL 2 を使う
  4. Windows 10 で,WSL 内 Ubuntu の X ウインドウ・アプリの画面を Windows に出す

関連する外部ページ

前準備

Windows 10 を使う場合は,Windows 10 の更新

Windows 10 を使う場合には,Windows 10 May 2021 Update 以上に更新する.

自動で更新されない場合は, 次のサイトを利用できる.

https://www.microsoft.com/en-us/software-download/windows10

更新による不具合の可能性がある. 大事なデータのバックアップを取っておくなど,慎重に行うこと.

「Windows の機能の有効化または無効化」で,Hyper-V,Linux 用 Windows サブシステム,仮想マシンプラットフォームを有効にする

  1. Windows で,コマンドプロンプト管理者として実行

    コマンドプロンプトを管理者として実行: 別ページ »で説明

  2. Windows の更新

    次のコマンドを実行

    Windowsの更新は,Windows Subsystem for Linux (WSL) を利用するために重要です. Windowsのセキュリティを保つためにも重要です.

    しかしながら,まれに,更新がシステムの安定性に影響を与え、起動しなくなるという問題を引き起こすことがあります. これは主に、更新後の Windows と既存のソフトウェアとの互換性や,更新プログラムに含まれる未知のバグが原因となります。

    そこで,重要なデータのバックアップを常に行うことを推奨します.このことは Windows の更新に伴う問題解決だけでなく,さまざま役に立ちます. そして,Windowsの更新により問題が生じた場合には, システムの復元ポイントなどを用いて復元することを検討することになります.

    powershell -command "Start-Process ms-settings:windowsupdate"
    

    [image]
  3. 機能名を確認する
    powershell Get-WindowsOptionalFeature –Online
    
  4. Hyper-V,Linux 用 Windows サブシステム,仮想マシンプラットフォームを有効にする.

    今確認した機能名により,次のコマンドを実行

    powershell -command "Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -n"
    powershell -command "Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -n"
    powershell -command "Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -n"
    

    [image]

    HOME エディションの場合には,「Microsoft-Hyper-V」は無いはずである.そこで,「HypervisorPlatform」を含めてる.次のコマンドを実行.

    powershell -command "Enable-WindowsOptionalFeature -Online -FeatureName HypervisorPlatform -n"
    powershell -command "Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -n"
    powershell -command "Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -n"
    

    [image]
  5. その後,Windowsの再起動を行う.
    shutdown /r /t 0
    

    [image]

以上のことを,コマンドではなく,画面操作で行いたい場合

確実で簡単なコマンド操作を推奨しますが,コマンド操作ではエラーが出るという場合,あるいは,画面で確認しながら行いたいときのために,画面操作で行う手順を書いておきます.

  1. 「コントロールパネル」を開く
  2. 「プログラム」をクリック
  3. 「プログラムと機能」をクリック
  4. 画面の左側にある「Windowsの機能の有効化または無効化」をクリック
  5. Windows の機能の有効化または無効化」で, 「Hyper-V」, 「Linux 用 Windows サブシステム」と 「仮想マシンプラットフォーム」にもチェックし, 「OK」をクリック.

    すでにチェックされている場合には,チェックされたままにしておく.

    [image]

    [image]

    このときに,「Linux 用 Windows サブシステム」がないというときは, 「Windows Subsystem for Linux」と 「仮想マシンプラットフォーム」にもチェックし, 「OK」をクリック.

    [image]

Windows Subsubsystem for Linux,仮想マシンプラットフォームのオプションコンポーネントを有効化

https://docs.microsoft.com/en-us/windows/wsl/install-win10に記載の手順による

  1. Windows で,コマンドプロンプト管理者として実行
  2. Windows Subsubsystem for Linux を有効化する

    次のコマンドを実行

    powershell -command "dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart"
    

    [image]
  3. 仮想マシンプラットフォームのオプションコンポーネントを有効化する

    次のコマンドを実行

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

    [image]
  4. WSL の既定(デフォルト)のバージョンを 2 に設定する
    wsl --set-default-version 2
    

    [image]

    ※ このとき「 WSL 2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernel」 のようなメッセージが表示されることがある.

    その場合は,表示の指示に従い, https://aka.ms/wsl2kernel から,Linux カーネル更新プログラムパッケージをダウンロードし,インストールする.

Ubuntu (Linux ディストリビューション) のインストール

Windows 11, Windows 10 の順で,Ubuntu (Linux ディストリビューション) のインストールを説明.なお,この先には,Ubuntu の設定や操作について説明している.

Windows 11 の場合

  1. Windows で,コマンドプロンプト管理者として実行

    コマンドプロンプトを管理者として実行: 別ページ »で説明

  2. 次のコマンドで一覧を得る.
    wsl --list --online
    

    [image]
  3. 次のコマンドで Ubuntu-22.04 をインストールできる.

    「wsl --update」は,wsl を更新する操作.Ubuntu のインストールの前に行っておくことで,トラブルを減らす.

    wsl --update
    wsl --install -d Ubuntu-22.04
    

    [image]
  4. このときに,ユーザ名とパスワードの設定が求められる.

    このときに設定したパスワードは,sudo コマンドの実行で必要になるので覚えておくこと. パスワードが画面に表示されないのは正常動作である.

    [image]
  5. アンインストールは次のような操作になる.
    wsl --shutdown 
    wsl --unregister Ubuntu-22.04
    

Windows 10 の場合

Ubuntu, OpenSUSE, SUSE Linux Enterprse Server, Lali Linux, Debian GNU/Linux から選ぶことができる.

  1. Windows で,コマンドプロンプトを実行.
  2. マイクロソフト・ストアを開く.
    start ms-windows-store:
    

    [image]
  3. 検索窓で「linux」と入れる

    [image]
  4. Linux ディストリビューションを選ぶ.

    ※ 「Ubunt 20.04 LTS」を選んだとして説明を続ける.

    [image]
  5. 入手」をクリック

    入手」が表示されていなくて, 「インストール」が表示されているというときは, 「インストール」をクリック.

    [image]
  6. インストールが始まる.

    [image]
  7. 「この製品はインストール済みです」と表示されたら, インストールが終了している. 確認のため,この画面の「起動」をクリック.

    [image]

    新しい画面が現れる. Linux ディストリビューションの初期化が始まる. しばらく待つ.

    [image]

    Ubuntu を起動したあと,「The Windows Subsystem for Linux optional component is not enable. Please enable it and try again」と表示され,進まない場合がある.

    [image]

    上の「Hyper-V,Linux 用 Windows サブシステム,仮想マシンプラットフォームを有効にする」に戻って,やり直してみる.

    Ubuntu を起動したあと,「WslRegisterDistribution failed with error: 0x800701bc」と表示され,進まない場合がある.

    [image]

    このときは,次の操作で解決する可能性がある.

    1. 表示の指示に従い, https://aka.ms/wsl2kernel から,Linux カーネル更新プログラムパッケージをダウンロード

      [image]
    2. まず,「Linux カーネル更新プログラムパッケージ」を右クリックし, 「アンインストール」を選び,アンインストールする.

      [image]
    3. そして,「Linux カーネル更新プログラムパッケージ」を右クリックし, 「インストール」を選び,インストールする.

      [image]

    その他, Linux ディストリビューションのインストールができないときは, 次のページより手がかりが得られる可能性がある.

    https://docs.microsoft.com/en-us/windows/wsl/install-win10

  8. ユーザ名とパスワードを設定する

    このときに設定したパスワードは,sudo コマンドの実行で必要になるので覚えておくこと. パスワードが画面に表示されないのは正常動作である.

    [image]

    [image]
  9. Windows のスタートメニューには「Ubuntu 20.04 LTS」が増えている.

    [image]
  10. インストール済みの Linux ディストリビューションの名前と,WSL のバージョンの確認.

    Windows で,コマンドプロンプトを開き,次のコマンドを実行する.

    wsl -l -v
    

    次のように表示される場合は,WSL のバージョンは 2.

    [image]

    次のように表示される場合は,WSL のバージョンは 1.

    [image]

  11. Linux カーネル更新プログラムパッケージのインストール

    「Linux カーネル更新プログラムパッケージ」をインストールしていない場合には, WSL バージョン2が使えるようにするために, 次のページからダウンロードし,インストールする.

    https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-kernel

  12. Linux ディストリビューションの WSL のバージョンの変更

    WSL のバージョンが 1 のとき, 次のコマンドで,WSL のバージョンを 2 に変更できる.

    Ubuntu-20.04」のところには, いま確認を行ったLinux ディストリビューションの名前を指定すること.

    wsl --set-version Ubuntu-20.04 2
    wsl -l -v
    

    [image]

WSL2 を使う

wsl コマンドの使用法については, https://docs.microsoft.com/ja-jp/windows/wsl/reference

  1. wsl -l -v」の実行により,Linux 用 Windows サブシステム・ディストリビューションの名前と既定の Linux サブシステムが確認できる.「*」が既定の Linux サブシステムを示す.

    [image]
  2. wsl ls」のように,頭に wsl を付けると,既定の Linux サブシステムでの linux コマンドを実行できる.
    wsl ls
    

    [image]
  3. wsl sudo <コマンド名>」のように,頭に 「wsl sudo」 を付けると, 既定の Linux サブシステムでの linux コマンドを管理者権限で実行できる.

    [image]
  4. 既定の Linux サブシステムbash シェルの起動.

    コマンドプロンプトで 「bash」あるいは「wsl」を実行.

    wsl
    

    [image]
  5. wsl コマンドで,既定(デフォルト)で起動する Linux ディストリビューションの設定

    既定の Linux サブシステムUbuntu-20.04 に設定するときは,Windows で,コマンドプロンプトを開き,次のコマンドを実行する.

    wsl -s Ubuntu-22.04
    

    [image]

Ubuntu の最低限のおすすめ設定

Ubuntu 22.04 でも Ubuntu 20.04 でも Ubuntu 18.04 でも同様の手順になる.

サイト内の関連ページ

  1. Windows で,コマンドプロンプトを実行
  2. 既定の Linux サブシステムbash シェルの起動.

    次のコマンドを実行

    あとで「sudo」を使いたい.「sudo」を使うたびに,パスワードを入れることが面倒なので,bash シェルを起動して,bash シェルで作業することにより,この問題を回避する.

    wsl
    

    [image]
  3. ダウンロード元が海外 (Ubuntu本家やfr) になっている場合、日本に設定

    実行時に自分で設定したパスワードが必要.

    sudo sed -i 's/\/\/archive.ubuntu.com/\/\/jp.archive.ubuntu.com/g' /etc/apt/sources.list
    sudo sed -i 's/\/\/us.archive.ubuntu.com/\/\/jp.archive.ubuntu.com/g' /etc/apt/sources.list
    sudo sed -i 's/\/\/fr.archive.ubuntu.com/\/\/jp.archive.ubuntu.com/g' /etc/apt/sources.list
    

    [image]
  4. OS のシステム更新
    sudo apt -y update
    sudo apt -yV upgrade
    sudo apt -yV dist-upgrade
    
  5. C/C++ コンパイラ,Python 3 ヘッダファイル・ライブラリ,エディタ nodepadqq 等のインストール
    sudo apt -y install build-essential python3-dev python3-pip notepadqq
    
  6. 試しに Cコンパイラ gccを使ってみる.

    そこで,エディタの nodepadqq を使って次のプログラムファイルを作成. ファイル名は,何でも良いが,「hello.c」としている.

    nodepadqq hello.c
    

    [image]

    次のプログラムファイルを作成.notepadqq で「save」の操作を行って,notepadqq を終了.

    #include<stdio.h>
    int main() {
        printf("Hello,World!\n");
        printf("sizeof(size_t)=%ld\n", sizeof(size_t));
        return 0;
    }
    

    [image]

    次のコマンドで,コンパイルして,実行

    gcc -o a.out hello.c
    ./a.out
    

    [image]
  7. 今度は,Python 3 を使ってみる.
    python3
    print("Hello,World")
    exit()
    

    [image]

Windows 11, Windows 10 で,WSL 内 Ubuntu の X ウインドウ・アプリの画面を出す

Windows 11

Windows 11 では,WSLg の機能により,WSL 2 上の Ubuntu のX ウインドウ・アプリの画面を出すのに特別な設定は必要はない

[image]

WSLg の公式情報: https://github.com/microsoft/wslg

Windows 10

Windows 10 では,次の手順により, WSL 2 上の Ubuntu のX ウインドウ・アプリの画面を出すことができるようになる.

Ubuntu の X ウインドウ・アプリを使いたいときのため

[image]
  1. Linux サブシステムでの設定

    次の手順で,SSH サーバを動かす.あわせて,Ubuntu が「デスクトップ」として機能するためのソフトをインストールする.

    1. Windows で,コマンドプロンプトを実行.
    2. 次のコマンドにより,ubuntu-desktop, openssh-server, net-tools をインストール, ssh サーバのホスト・キーのファイルを生成
      wsl sudo apt -y install ubuntu-desktop openssh-server net-tools
      wsl sudo /usr/bin/ssh-keygen -t rsa -b 1024 -f /etc/ssh/ssh_host_rsa_key -C '' -N ''
      
    3. Ubuntu の bash を起動

      コマンドプロンプトで 「bash」あるいは「wsl」を実行するか, スタートメニューで Ubuntu を選ぶ.

    4. エディタを用いて,/etc/ssh/sshd_config の「PasswordAuthentication」の行をyesに設定
    5. 「sudo service ssh restart」を実行し,ssh サーバを再起動する.このとき,エラーメッセージが出ていないことを確認する.
  2. Windows 側の設定

    X サーバソフトとして, MobaXTermをインストール.

  3. 以上の設定で準備完了.次の手順で動かす.
    1. コマンドプロンプトで,IP アドレスを調べておく

      次のコマンドで,「inet」のところに表示されるのが,IP アドレスである.

      wsl ifconfig
      

      [image]
    2. MobaXTerm を起動.次のコマンドでログイン
      ssh -X <ユーザ名>@<IPアドレス>
      

      [image]
    3. 下図のように, 自分が使いたい Ubuntu の X ウインドウ・アプリの画面が表示されることを確認.

      [image]

      [image]