記事概要
WSL (Windows Subsystem for Linux) を利用し、Windows 上で Linux を使えるようにするセットアップ手順をまとめた記事です。
本記事で取り扱っている内容は下記の通りです。
- WSL を使えるようにする為の Windows 設定。
- WSL 用作業ディレクトリを任意の場所に変更する設定。
- OS の最小限のセットアップ(OS インストール、パッケージ更新、ユーザ作成)。
- WSL を GUI で操作する為の設定。
- WSL 上で USB デバイスを認識させる為の設定。
やること
- WSL2 環境構築
- WSL, Hyper-V 有効化、wsl 更新
- OS のインストール
- LxRunOffline インストール
- イメージファイルダウンロード、インストール
- OS のセットアップ
- パッケージの更新、sudo インストール
- sudo 権限付きユーザの作成、UID の確認
- デフォルトユーザの設定、Linux の起動確認
- GUI 環境(+リモートアクセス)の設定
- 前提パッケージのインストール、設定ファイル編集
- RDP による接続確認
- USB デバイス接続用設定
- Windows 側の設定
- Linux 側の設定
- USB デバイスの接続(解除)方法
設定時の注意事項
- ~.ps1 のスクリプトは Windows にて 管理者として実行している「PowerShell 端末」 で実行して下さい。
- ~..sh のスクリプトは WSL で実行している 「Linux 端末」 で実行して下さい。
- セットアップ時にダウンロードしたファイルはユーザディレクトリ直下の Downloads 内に保存されているものとして扱います。
- 別ディレクトリに保存する設定の場合は、 ~\Downloads を自身が設定しているディレクトリに置き換えて読んで下さい。
セットアップ確認時の環境
- OS: Windows10 Pro (22H2)
- WSL: WSL2 kernel Ver. 5.10.102.1
WSL2 環境構築
WSL, Hyper-V 有効化、wsl 更新
WSL を使用出来るよう Windows の設定を変更および、wsl の更新を行います。
以下のコマンドを実行し、設定およびコマンドの更新を行って下さい。
■setup_wsl2.ps1
# WSL2 のセットアップ
## Windows Subsystem for Linux 有効化
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
## Hyper-V 有効化
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
## WSL2 Linux kernel 更新
wsl --update
## いったん再起動する
Restart-Computer
## デフォルトバージョンを WSL2 に変更
wsl --set-default-version 2
OS のインストール
LxRunOffline インストール
WSL のファイル保存先を変更する為、LxRunOffline を使用出来るようにします。
※ WSL のファイルはデフォルトの場合、下記のディレクトリに保存されます。
- C:\Users\\AppData\Local\Docker\wsl\data
下記 URL からダウンロードし、LxRunOffline.exe が動くよう環境変数 PATH を設定して下さい。
イメージファイルダウンロード、インストール
以下のコマンドを実行し、OS インストール用のファイルダウンロードおよびインストールを行って下さい。
■setup_linux_image.ps1
## LxRunOffline 用イメージファイルをダウンロード
Invoke-WebRequest -Uri https://lxrunoffline.apphb.com/download/Ubuntu/focal -OutFile ~\Downloads\ubuntu-focal.tar.gz -UseBasicParsing
## インストール(インストール先のディレクトリをここで指定するので -d D:\wsl\... を都合の良いよう変更)
lxrunoffline i -n ubuntu-2004_lxrunoffline -d D:\wsl\ubuntu-2004_lxrunoffline -f ~\Downloads\ubuntu-focal.tar.gz
## デフォルトに設定
wsl --set-default ubuntu-2004_lxrunoffline
## インストールできたかチェック
wsl -l -v
### ubuntu-2004_lxrunoffline VERSION 2 があればOK
### VERSION 1 の場合は下記コマンド実行
# wsl --set-version ubuntu-2004_lxrunoffline 2
インストール先のディレクトリ先に WSL のイメージファイル (ext4.vhdx) が存在していればOK!
イメージファイルのダウンロード参考 Wiki
本記事では Ubuntu 20.04(focal) のイメージファイルをインストールしていますが、別ディストリビューションやバージョンを使用したい場合は wiki を参照してダウンロード先やファイル名、ボリューム名 etc. を変更して下さい。
OS のセットアップ
各項目のコマンドを実行して下さい。
パッケージの更新、sudo インストール
■update_package.sh
apt update && upgrade -y
apt install -y sudo
sudo 権限付きユーザの作成、UID の確認
■make_user.sh
# sudo権限付きユーザ作成(user_name は任意の名前に置き換えてOK)
adduser user_name
## パスワードのみ設定して他は未設定のままEnterでOK
gpasswd -a user_name sudo
## ユーザの UID を確認
id -u user_name
exit
デフォルトユーザの設定、Linux の起動確認
■set_default_user.ps1
# デフォルトユーザの設定(<UID>:Linux 側で確認した UID を設定する。例:...-v 1000)
lxrunoffline su -n ubuntu-2004_lxrunoffline -v <UID>
# 下記コマンドで起動可能かチェック
lxrunoffline r -n ubuntu-2004_lxrunoffline
設定後は PowerShell 端末から wsl 起動でOK!
GUI 環境(+リモートアクセス)の設定
前提パッケージのインストール、設定ファイル編集
以下のコマンドを実行し、GUI 操作出来るようデスクトップ環境の Xfce、デスクトップ環境へリモートアクセス出来るようにする為の xrdp をインストールして下さい。
■setup_gui_env.sh
# インストール時間かかる
sudo apt install -y xfce4 xrdp
# xrdp.ini編集
sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak
## 接続時のポート番号設定。3390が都合悪い場合はここを変更して下さい。
sudo sed -i 's/3389/3390/g' /etc/xrdp/xrdp.ini
sudo sed -i 's/max_bpp=32/#max_bpp=32\nmax_bpp=128/g' /etc/xrdp/xrdp.ini
sudo sed -i 's/xserverbpp=24/#xserverbpp=24\nxserverbpp=128/g' /etc/xrdp/xrdp.ini
echo xfce4-session > ~/.xsession
RDPによる接続確認
設定後は WSL (Linux) の端末にて下記コマンドを実行後、Windows 側からリモートデスクトップ接続すればOK。
sudo /etc/init.d/xrdp start
リモートデスクトップ接続は、コンピュータ: 「localhost:3390」 へ接続して下さい。
接続出来たら、username, password を入力することで GUI 環境が使用できます。
USB デバイス接続用設定
Windows 側の設定
下記 URL から usbipd-win のインストーラをダウンロードしてインストールして下さい。
再起動後、PowerShell にて下記コマンドが実行できればOK!
usbipd wsl list
Linux 側の設定
■setup_usbip.sh
sudo apt install -y linux-tools-virtual
## linux-tools-****-generic のバージョンは最新の物を確認して書き換えて下さい。
sudo apt install -y linux-tools-5.4.0-77-generic hwdata
sudo visudo
defaults secure_path="/usr/lib/linux-tools/5.4.0-77-generic:..." となるよう追記して下さい。
wsl 再起動後、WSL 端末にて下記コマンドが実行できればOK!
usbip --help
USB デバイスの接続(解除)方法
- PowerShell にて下記コマンドで接続、解除して下さい。
# 接続したい USB デバイスの <BUSID> を確認
usbipd wsl list
# 接続
usbipd wsl attach --busid <BUSID>
# 接続解除
usbipd wsl detach --busid <BUSID>
Linux 側で接続出来ているかは lsusb コマンドで確認して下さい。
あとがき
以上で WSL のセットアップの導入的な内容は大丈夫かなと思います。
この後はイメージファイルの最適化について調べておくと良いかもです。
参考記事