こんにちは、たびとです。
今回は、Windows 11インストール後にWSL2/Linux環境を作ってみたところ、驚くほど単になっていました。 ついでに、Hyper-V の Windows 11 でも WSL2/Linux を動作させてみました。
この記事の対象者
- Windows11 または Windows 10 バージョン 2004 以降で、WSL2/Ubuntu をコマンド一発でインストールしたい方。
- Hyper-V の Windows11 仮想マシン上で、WSL2/Ubuntu を使いたい方
- プロキシ環境下において、WSL2/Ubuntu をインストールして使ってみたい方
Hyper-V利用時の前準備
Hyper-Vの環境を作りたい方は、以前の記事を参考にしてください。
WSL2 は Hyper-V の機能を利用している
WSL2/Linuxをインストールした後で、Hyper-V マネージャを起動し、 仮想スイッチマネージャを見るとWSLという名前の仮想スイッチが追加されています。
このため、仮想マシンでWSL2を動作させるには、 Hyper-Vが入れ子になっても正常に動作するように、 適切な設定が必要となります。
入れ子構造を許可する
仮想マシンを停止させてから、PowerShellを管理者権限で起動し、
Get-VM
コマンドを実行します。
実行結果のNameに表示されるのが仮想マシンの名前です。
仮想マシンの名前に空白が入っている場合、ダブルクォートで囲んでください。
PS C:\> Get-VM Name State CPUUsage(%) MemoryAssigned(M) Uptime Status Version ---- ----- ----------- ----------------- ------ ------ ------- VMname Off 0 0 00:00:00 正常稼働中 10.0
PS C:\> Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
同様にネットワークも対応させます。
PS C:\> Get-VMNetworkAdapter -VMName <VMName> | Set-VMNetworkAdapter -MacAddressSpoofing On
以上で設定は終了です。仮想マシンを起動させてください。
入れ子構造が許可されていないとき
入れ子を許可しない、または間違えると、WSL2/Linuxの初期(アカウント)設定のとき、 以下のエラーが表示されます。
このエラーが表示された場合、仮想マシンを停止し、前述の手順を実施してください。
WSL2 をインストールする
Windows 11 は、wsl —install
コマンド一発で WSL2/Linux をインストールできます。
Windows 10 バージョン2004 以降も同様にインストール可能です。
PowerShell を管理者権限で起動し、コマンドを入力します。
PS C:\> wsl --install
これで完了です。 再起動の指示が表示されるまで、しばらく待ちます。
インストール中: 仮想マシン プラットフォーム 仮想マシン プラットフォーム はインストールされました。 インストール中: Linux 用 Windows サブシステム Linux 用 Windows サブシステム はインストールされました。 ダウンロード中: WSL カーネル インストール中: WSL カーネル WSL カーネル はインストールされました。 ダウンロード中: GUI アプリ サポート インストール中: GUI アプリ サポート GUI アプリ サポート はインストールされました。 ダウンロード中: Ubuntu 要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。 PS C:\>
コマンドを実行後、WSL2/Linux環境に必要なものがインストールされて、 Ubuntu もインストールされます。 この Ubuntu は、表示名も Ubuntsu ですが、 Windows Store で確認すると、実際はUbuntu 20.04 でした。
Windows を再起動すると、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: ユーザ名 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 20.04 LTS (GNU/Linux 5.10.16.3-microsoft-standard-WSL2 x86_64) ~ 省略 ~
この後、PowerShell を起動し、wsl -l -v
コマンドを実行すると、
WSL2 となっていることが確認できます。
PS C:\> wsl -l -v NAME STATE VERSION * Ubuntu Running 2
エクスプローラーに Linux アイコンが追加される
Windows 11 から WSL2/Linux をインストールすると、 エクスプローラーに Linux アイコンが表示されて、 インストールした Linux ディストリビューションのフォルダへアクセスすることができます。
Linux アイコンと Ubuntu フォルダが追加されて、 エクスプローラーからアクセスすることが可能となります。
ご存じの方も多いと思いますが、Windows 10 の場合、
エクスプローラーのアドレスに \\wsl$\Ubuntu
を指定します。
Ubuntu のアカウント設定後にやること
アカウントの設定が終わったら、プロキシ環境の場合は、 プロキシの設定を最初に実施してください。 その後、Ubuntu を最新の状態になるようにアップデートを実施してください。
プロキシ環境の場合はプロキシを設定する
aptパッケージ管理のプロキシ設定として、新規に apt.conf を作成します。
$ sudo vi /etc/apt/apt.conf Acquire::http::Proxy "http://<user_id>:<password>@<host>:<port>"; Acquire::https::Proxy "http://<user_id>:<password>@<host>:<port>";
wget のプロキシを設定します。 バックアップ後、エディタで wgetrc ファイルを開きます。
$ sudo cp -p /etc/wgetrc /etc/wgetrc.org
$ sudo vi /etc/wgetrc
プロキシ設定を編集します。
# You can set the default proxies for Wget to use for http, https, and ftp. # They will override the value in the environment. https_proxy = http://<user_id>:<password>@<host>:<port> http_proxy = http://<user_id>:<password>@<host>:<port> ftp_proxy = http://<user_id>:<password>@<host>:<port>
最後に、Ubuntu 起動時に環境変数にプロキシが設定されるようにします。
ここでは、/etc/profile.d
配下に set_env.sh
という名のシェルスクリプトを作成します。
プロキシだけでなく、その他に追加すべき環境変数があれば、ここに追加します。
(ここは好みの分かれる箇所なので、自分の好きな方法でどうぞ)
$ sudo vi /etc/profile.d/set_env.sh
エディタで開いたらプロキシを定義します。
# Set Proxy export http_proxy=http://<user_id>:<password>@<host>:<port> export https_proxy=${http_proxy} export HTTP_PROXY=${http_proxy} export HTTPS_PROXY=${http_proxy} # Set No-Proxy export no_proxy="127.0.0.1,localhost" export NO_PROXY=${no_proxy}
Ubuntu のウィンドウを閉じて、再度開きます。
printenv
コマンドで、プロキシが環境変数に定義されていることを確認します。
$ printenv | grep -i proxy HTTPS_PROXY=http://<user_id>:<password>@<host>:<port> HTTP_PROXY=http://<user_id>:<password>@<host>:<port> NO_PROXY=127.0.0.1,localhost http_proxy=http://<user_id>:<password>@<host>:<port> https_proxy=http://<user_id>:<password>@<host>:<port> no_proxy=127.0.0.1,localhost
Ubuntu のアップデート
Ubuntu のパッケージをアップデートします。 プロキシの設定がある場合、プロキシを先に設定してください。
$ sudo apt update $ sudo apt upgrade
日本語化
コンソールのメッセージおよび man
コマンドの内容を日本語表示に変更します
(man ページは日本語のページがある場合のみ)。
コマンド実行後は、Ubuntu画面を閉じて、再度開くと、日本語表示が有効になります。
$ sudo apt update $ sudo apt install -y language-pack-ja $ sudo update-locale LANG=ja_JP.UTF-8 $ sudo apt install -y manpages-ja manpages-ja-dev $ exit
あると便利なツール
ifconfig など、現在のLinuxでは非推奨のネットワーク管理ツールですが、
会社で使っていてるなど、同様のコマンドを使いたい場合、
net-tools
パッケージをインストールしてください。
$ sudo apt install -y net-tools
日本語の文字コード変換に nkf
コマンドを使っている場合、
nkf
パッケージをインストールします。
$ sudo apt install -y nkf
JSON形式のデータをカラー表示・データ抽出したい場合、
jq
パッケージをインストールします。
$ sudo apt install -y jq
オーディオ・ビデオを扱う場合、
mediainfo
, ffmpeg
をインストールします。
$ sudo apt install -y mediainfo ffmpeg
まとめ
今回は、Windows 11にWSL2/Linux をコマンド一発でインストールする方法を紹介しました。
この後、Dockerを導入したい人は、以前の記事も参考にしてください。
最後に参考サイトを掲載しておきます。
では、皆さん、よい旅を。