Windows 10 に WSL2 を導入する
やること
- Windows 10 に「Windows Subsystem for Linux 2 (WSL 2)」を導入する
- WSL2 上で利用する Linux のディストーションは Ubuntu (=デフォルトのまま)とする
- 実用上必要な以下のセットアップをあわせて行う
- WSL2/Ubuntu 上で日本語を扱えるようにする
- 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
+I
で「設定」を開く- [システム] > [詳細設定] を選択し、「Windows の仕様」を確認する
下記「OS ビルド」の数値が 19041
以上なので、条件を満たしている。
エディション Windows 10 Home
バージョン 22H2
インストール日 2022/08/17
OS ビルド 19045.2604
エクスペリエンス Windows Feature Experience Pack 120.2212.4190.0
インストール&実行
- PowerShell を管理者モードで起動
- アイコン上で右クリック > [管理者として実行する] をクリック
- アイコン上で右クリック > [管理者として実行する] をクリック
- 以下コマンドを実行
wsl --install
これにより以下がおきるらしい。
- WSL を実行
- Linux の Ubuntu ディストリビューションをインストールするために必要な機能を有効にする
Ubuntu 初回実行
- システム再起動が必要と言われるので、Windows を再起動する
- 再起動後、勝手に Ubuntu が開始される(結構待つ)
-
デフォルトの 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 上で 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
- パッケージマネージャ「Homebrew 4.0」正式リリース、より高速に。Git cloneからJSONによるパッケージ管理へ切り替え - Publickey
- 2023年2月20日に出てた記事。インストール時の処理の方法が変わったらしい
- Homebrew on Linux — Homebrew Documentation
- WSL2 環境にインストールするときの手順書
準備
インストールに必要なビルドツールを落とす
$ sudo apt-get install build-essential curl file git
インストール
以下を実行。コマンド自体は変わりなし。
「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/ユーザー名