Windows上で、Linuxシステムを使えるようにするためWSLを使ってみる。
この記事の最終的な目標としては、Windows上でLinux系のファイルシステムを読み書きできるようにすること。
下準備
Windows10で最新のアップデートをしておけばバージョン的には問題なさそう。
Windows側の設定は、Linux 用 Windows サブシステムが有効化されている必要がある。
これはGUI上では、プログラムと機能のWindowsの機能の有効化または無効化からLinux 用 Windows サブシステムにチェックを入れて有効にするか、
管理者権限のWindows PowerShellで
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
を実行して有効化する。
wsl --update
wsl --set-default-version 2
上記を実行して、カーネルのアップデートと、wsl2を使うための設定を行う。
Linuxのインストール
Microsoft Storeからもインストールできるようだが、今回はPowerShellから行う。
wsl --install -d Debian
今回は、Debianをインストールしてみた、デフォルトだとUbuntuがインストールされ、-d以降のオプションが不要。
暫く待つと別ウィンドウが立ち上がりDebianシステムの画面となる。
Linuxユーザの入力画面になるので、WSLのLinuxシステム内で使用したいユーザ名を指定する。(Windowsのユーザ名と同じでなくていい)
パスワードを入力するとLinuxが使えるようになる。
wslからwsl2への変換
もし、wslのままLinuxをインストールしてしまった場合は
wsl --set-version 2
とすると、wslのバージョン変更ができる。
マウントする
Windows側で認識してドライブレターが割り当てられているドライブは、wsl内の/mntに自動的にマウントされている。
/mnt/cなどがそうだ。
GET-CimInstance -query "SELECT * from Win32_DiskDrive"
まずは上記コマンドで、Windows上で認識されているドライブ情報一覧を表示する。
LinuxなファイルシステムのドライブのDeviceIDを確認する。
wsl --mount \\.\PHYSICALDRIVE2
これで、wsl側にドライブを認識させることができる。/devを確認すると、/dev/sdd1などがあるはずだ。
\\.\PHYSICALDRIVE2の部分は先程確認したDeviceIDを設定する。
あとは普通に
sudo mkdir /mnt/sdd1
sudo mount /dev/sdd1 /mnt/sdd1
のようにすれば、wsl内でマウントできアクセスもすることができる。
しかし、これではWindows側から\wsl.localhost\Debian\mnt\sdd1とアクセスしてもファイルを確認することができなかった。
パーティションを指定してマウント
wsl --mount \\.\PHYSICALDRIVE2 --partition 2
partitionオプションで何番目のパーティションをマウントするかが指定できる。
partition番号は1から始まり、「ディスク管理」などから容量をもとに推測して指定する。
自動的に/mnt/wsl/PYSICALDRIVE2p2がマウントされる。
Windows側から\wsl.localhost\Debian\mnt\wsl\PYSICALDRIVE2p2にアクセスすると、Windows上からもファイルを確認することができた。