Windows 10 に WSL2 を導入する

やること

  • Windows 10 に「Windows Subsystem for Linux 2 (WSL 2)」を導入する
    • WSL2 上で利用する Linux のディストーションは Ubuntu (=デフォルトのまま)とする
  • 実用上必要な以下のセットアップをあわせて行う
    1. WSL2/Ubuntu 上で日本語を扱えるようにする
    2. WSL2/Ubuntu に Homebrew をインストールする

所要時間

30~40分

参考リファレンス

Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs

作業ログ

1:WSL2 のインストール

前提条件を満たすか確認

Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs

前提条件

以下のコマンドを使用するには、Windows 10 バージョン 2004 以上 (ビルド 19041 以上) または Windows 11 を実行している必要があります。

とのこと。

以下を参考にWLS2 をインストールするためのコマンドを扱えるか確認をする。

使用中の Windows オペレーティング システムのバージョンを確認する – Microsoft サポート

  1. Windows + I で「設定」を開く
  2. [システム] > [詳細設定] を選択し、「Windows の仕様」を確認する

下記「OS ビルド」の数値が 19041 以上なので、条件を満たしている。

エディション  Windows 10 Home
バージョン   22H2
インストール日 ‎2022/‎08/‎17
OS ビルド  19045.2604
エクスペリエンス    Windows Feature Experience Pack 120.2212.4190.0
インストール&実行
  1. PowerShell を管理者モードで起動
    • アイコン上で右クリック > [管理者として実行する] をクリック
  2. 以下コマンドを実行
    wsl --install

    これにより以下がおきるらしい。

    • WSL を実行
    • Linux の Ubuntu ディストリビューションをインストールするために必要な機能を有効にする
Ubuntu 初回実行
  1. システム再起動が必要と言われるので、Windows を再起動する
  2. 再起動後、勝手に Ubuntu が開始される(結構待つ)
  3. デフォルトの UNIX ユーザーアカウントを作成せよと言われるので、ユーザー名とパスワードを設定。正しく進むと成功する

    Ubuntu は既にインストールされています。
    Ubuntu を開始しています...
    Installing, this may take a few minutes...
    Please create a default UNIX user account. The username does not need to match your Windows username.
    For more information visit: https://aka.ms/wslusers
    Enter new UNIX username: hi3103
    New password:
    Retype new password:
    passwd: password updated successfully
    Installation successful!
    To run a command as administrator (user "root"), use "sudo <command>".
    See "man sudo_root" for details.
    
    Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.90.1-microsoft-standard-WSL2 x86_64)
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
    
    This message is shown once a day. To disable it please create the
    /home/hi3103/.hushlogin file.

2:Windows Termnal から Ubuntu を起動

Windows Terminal – Microsoft Store アプリ

  • Windows 上で PowerShell や Ubuntu を操作するときは、「Windows Terminal」というアプリを使うのがおすすめ。
  • アプリを起動すると PowerShell が起動するの。
  • 他のシェルを使うときはタブ横の下向き矢印アイコンから選択する。

2:APT ( Advanced Package Tool ) を最新の状態にする

このあとのステップで使うので、下準備として以下を実行。

$ sudo apt update && sudo apt upgrade

参考:「apt-get」はもう古い?新しい「apt」コマンドを使ったUbuntuのパッケージ管理 | LFI

3:日本語を使えるようにする

デフォルトのロケール設定だと日本語が扱えないので、日本語の言語パックをインストールして設定する。

確認

現在のロケールを表示。1行目の LANG=C.UTF-8 を日本語の指定に変更するのがゴール。

$ locale
LANG=C.UTF-8
LANGUAGE=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_PAPER="C.UTF-8"
LC_NAME="C.UTF-8"
LC_ADDRESS="C.UTF-8"
LC_TELEPHONE="C.UTF-8"
LC_MEASUREMENT="C.UTF-8"
LC_IDENTIFICATION="C.UTF-8"
LC_ALL=

設定可能なロケールを確認。日本語の設定がないことがわかる。

$ locale -a
C
C.utf8
POSIX
日本語言語パックのインストール

以下を実行

$ sudo apt install language-pack-ja

もっかい設定可能なロケールを確認してみると、 ja_JP.utf8 が増えてる

$ locale -a
C
C.utf8
POSIX
ja_JP.utf8 ←これが増えた
ロケールを日本語に設定

以下を実行

$ sudo update-locale LANG=ja_JP.UTF-8
Ubuntu を再起動

PowerShell で以下を実行し、WLS2/Ubuntu をシャットダウン

wsl --shutdown

ふたたび Windows Terminal から WLS2/Ubuntu を起動(これで再起動になる)

ロケール設定を確認

現在のロケールを再び表示。1行目 LANG=ja_JP.UTF-8 に設定できていればOK。

$ locale
LANG=ja_JP.UTF-8
LANGUAGE=
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=

4:Homebrew を導入する

あると何かと便利なのでパッケージ管理マネージャー「Homebrew」を使えるようにしておく。

参考URL
準備

インストールに必要なビルドツールを落とす

$ sudo apt-get install build-essential curl file git
インストール

Homebrew — The Missing Package Manager for macOS (or Linux)

以下を実行。コマンド自体は変わりなし。

「4.0以前の方法で落としたい」ときは別のコマンドを使う必要があるみたい。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

以下のスクリプトがインストールされ、

==> This script will install:
/home/linuxbrew/.linuxbrew/bin/brew
/home/linuxbrew/.linuxbrew/share/doc/homebrew
/home/linuxbrew/.linuxbrew/share/man/man1/brew.1
/home/linuxbrew/.linuxbrew/share/zsh/site-functions/_brew
/home/linuxbrew/.linuxbrew/etc/bash_completion.d/brew
/home/linuxbrew/.linuxbrew/Homebrew

以下のディレクトリが作成されるとのこと。

==> The following new directories will be created:
/home/linuxbrew/.linuxbrew/bin
/home/linuxbrew/.linuxbrew/etc
/home/linuxbrew/.linuxbrew/include
/home/linuxbrew/.linuxbrew/lib
/home/linuxbrew/.linuxbrew/sbin
/home/linuxbrew/.linuxbrew/share
/home/linuxbrew/.linuxbrew/var
/home/linuxbrew/.linuxbrew/opt
/home/linuxbrew/.linuxbrew/share/zsh
/home/linuxbrew/.linuxbrew/share/zsh/site-functions
/home/linuxbrew/.linuxbrew/var/homebrew
/home/linuxbrew/.linuxbrew/var/homebrew/linked
/home/linuxbrew/.linuxbrew/Cellar
/home/linuxbrew/.linuxbrew/Caskroom
/home/linuxbrew/.linuxbrew/Frameworks

問題なければ Enter キーで続行。

完了すると、次のステップの案内がある。

Warning: /home/linuxbrew/.linuxbrew/bin is not in your PATH.
  Instructions on how to configure your shell for Homebrew
  can be found in the 'Next steps' section below.
==> Next steps:
- Run these two commands in your terminal to add Homebrew to your PATH:
    (echo; echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"') >> /home/hi3103/.profile
    eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
- Install Homebrew's dependencies if you have sudo access:
    sudo apt-get install build-essential
  For more information, see:
    https://docs.brew.sh/Homebrew-on-Linux
- We recommend that you install GCC:
    brew install gcc
- Run brew help to get started
- Further documentation:
    https://docs.brew.sh
パスを通す

Next Steps の案内に従い、公式ドキュメントにあるコマンドを順に実行

$ test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv)
$ test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
$ test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile
$ echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile

シェルを再起動

$ exec $SHELL -l
実行テスト

試しに tree コマンドを落としてみる。まずは存在するか確認。

$ brew search tree
==> Formulae
as-tree          datree           pstree           tree-sitter      treefmt          tre
cherrytree       pipdeptree       tree             treecc           treefrog

インストール

$ brew install tree

適当な場所で実行し、動作すればOK

$ tree

5:ファイルの場所を確認する

Windows 上で WSL2/Ubuntu 内のファイルを参照する場合

ネットワーク経由でアクセス可能。エクスプローラーから参照できる。

パスとしては以下(例:UNIX ユーザーのホームディレクトリ)

\\wsl.localhost\Ubuntu\home\ユーザー名
WSL2/Ubuntu 上で Windows 内のファイルを参照する場合

Windows のローカルデータは /mnt/ ディレクトリにマウントされている。

パス 対応するドライブ
/mnt/c/ Cドライブ
/mnt/d/ Dドライブ
/mnt/g/ Google Drive(同期利用している場合のみ)
hi3103@MARTHA:/$ cd /mnt/
hi3103@MARTHA:/mnt$ ls -la
合計 8
drwxr-xr-x  7 root   root   4096  3月  2 13:28 .
drwxr-xr-x 19 root   root   4096  3月  2 13:40 ..
drwxrwxrwx  1 hi3103 hi3103 4096  3月  1 18:36 c ←Cドライブ
drwxrwxrwx  1 hi3103 hi3103 4096  3月  1 18:35 d ←Dドライブ
drwxrwxrwx  0 hi3103 hi3103  512  3月  2 13:24 g ←Gドライブ
drwxrwxrwt  2 root   root     60  3月  2 13:40 wsl
drwxrwxrwt  7 root   root    300  3月  2 13:40 wslg

例:Windows 側のユーザーディレクトリに移動する

cd /mnt/c/Users/ユーザー名

Comments

  • スパム対策のため、コメント本文にURLが含まれている場合は「承認待ち」となり、すぐに投稿が反映されません。ご了承ください。
  • 公序良俗に反する内容、個人が特定できる情報、スパム投稿と思われるコメント等については、予告なく編集・削除する場合があります。