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

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

これは,Windows 11, Window 10 対応の記事である.

Windows での Windows Subsystem for Linux 2 (WSL2) のインストール,Ubuntu のインストール,Ubuntu のシェルの起動や設定など,利用の手順を,スクリーンショット等で説明する.最新の Windows を使用する.

目次

  1. 前準備
  2. Ubuntu (Linux ディストリビューション) のインストール
  3. WSL2 を使う
  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

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

Hyper-V,Linux 用 Windows サブシステム,仮想マシンプラットフォームを有効にする

  1. Windows の機能の有効化または無効化」で,

    Hyper-V」にチェックする.(すでにチェックされている場合には,何も行わなくて良い)

    [image]

    Linux 用 Windows サブシステム」と 「仮想マシンプラットフォーム」にもチェックし, 「OK」をクリック.

    [image]

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

    [image]

    Windows 10 での Windows の機能の有効化または無効化」の表示法

    1. Windows のメニューで「設定」を選ぶ
    2. アプリ
      [image]
    3. 下の方へスクロールし,「プログラムと機能
      [image]
    4. Windows の機能の有効化または無効化」を選ぶ.
      [image]

    コントールパネルに慣れている場合は,コントールパネルで,「プログラム」,「プログラムと機能」,「Windows の機能の有効化と無効化」という操作でもよい.

    Windows の検索機能で,「Windows の機能の有効化または無効化」でもよいでしょう

  2. 画面の指示により,Windows を再起動する.
    [image]
  3. Windows Terminal あるいはPowerShellを,管理者として実行するする.
  4. Windows Subsubsystem for Linux を有効化する

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

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

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

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

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

    [image]
  6. WSL の既定(デフォルト)のバージョンを 2 に設定する

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

    wsl --set-default-version 2
    

    [image]

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

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

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

Windows 11 の場合

  1. Windows Terminal あるいはコマンドプロンプト管理者として実行
  2. 次のコマンドで一覧を得る.
    wsl --list --online
    

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

    Windows Terminal やコマンドプロンプト管理者として実行していたときは,WSLg, 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 のバージョンは 1.

    [image]

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

    [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-20.04
    

    [image]

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

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

サイト内の関連ページ

  1. Ubuntu の bash を起動

    スタートメニューで Ubuntu を選ぶ.

    既定の Linux サブシステム を Ubuntu に設定しているときは, コマンドプロンプトで 「bash」あるいは「wsl」を実行でもよい.

  2. ダウンロード元が海外 (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]
  3. OS のシステム更新
    sudo apt -yV upgrade
    
  4. C/C++ コンパイラ,Python 3 ヘッダファイル・ライブラリ等のインストール
    sudo apt -y update
    sudo apt -y install build-essential python3-dev python3-pip
    

    試しに Cコンパイラを使ってみる. エディタを使って次のプログラムファイルを作成.「hello.c」のようなファイル名で保存.

    エディタ nano を使う場合には 「nano hello.c」を実行し,次のプログラムファイルを作成して保存.

    #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]

    今度は,Python 3 を使ってみる.

    python3
    print("Hello,World")
    exit()
    

    [image]

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

Windows 11

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

[image]

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

Windows 10

Windows 10 では,次の手順により, WSL2 上の 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]