仕事ではLinuxを使うことが多いけれど、お家でもLinux使いたいなー、という人には WSL2 がお勧めです。WSL2はWindowsのハイパーバイザ Hyper-Vの上でLinuxを動作させるための仕組みです。Linux互換環境ではなく、仮想マシン上でLinuxカーネルが動作する本物のLinuxです。
WSL2の前提条件
WSLは Microsoft から正式に提供されているツールです(Microsoftは、Linux用Windowsサブシステム と呼んでいますね..)。Microsoft のサイトには、WSL を使用して Windows に Linux をインストールする方法 が掲載されています。前提条件もここに記載されていて、
・Windows 10 バージョン 2004以上(ビルド 19041以上)
・Windows 11
ならばOKのようです。
WSL2上のLinuxで何ができるの?
分かりやすく言うと、こんな感じでしょうか。
・Linuxのシェルを起動して、Windowsのファイルにアクセスできる
・Linuxのシェルから、Linuxのコマンドが使える
・Linuxのカーネルが動いているのだから、Linux上で開発されたプログラムを実行できる
面白いことに、WSL2上にインストールしたLinuxからは、Windowsの各ドライブが、
/mnt/c/ (Cドライブ)
/mnt/d/ (Dドライブ)
というパスでアクセスすることができます。これはとても便利です。
もちろん /mnt/<ドライブレター>/ の他に、インストールしたLinuxのファイルシステムも構築されています。
WSLを有効化する
WSL、すなわち Linux用Windowsサブシステム を有効にしなくても、wslコマンドの一部の機能(例えば、wsl –list –online)が使えるので、既に有効になっていると勘違いしてしまいそうですが、Windowsの設定できちんと有効にしましょう(有効にしないと、wslコマンドで実行できる機能が制限されます)。
WSLを有効する手順は以下の通りです(Windows 10の画面で説明します)。
「スタート」メニューの「設定」を選択して、「Windowsの設定」画面を表示します。
この画面の検索欄で「windowsの機能」を検索して、「Windowsの機能の有効化または無効化」を呼び出します。

または、「Windowsの設定」画面で「システム」を選択、次に「オプション機能」、次に「Windowsのその他の機能」を選択して、「Windowsの機能の有効化または無効化」を呼び出します。

「Windowsの機能の有効化または無効化」の画面では、「Linux用Windowsサブシステム」をcheckして下さい。

OKをクリックすると、システムに変更が適用されて「PCを再起動する必要があります」というメッセージが表示されるので、PCを再起動しましょう。
Linuxディストリビューションをインストールする
WSL2はLinuxを動作させるための仕組みであるので、動作させるLinuxは別途インストールする必要があります。Windowsでコマンド・プロンプトを起動させて、wslコマンドを実行することでインストールすることができます。
wsl --help
と実行すると、wsl のオプションの説明が表示されます。

インストール可能なディストリビューションを表示するには、以下のコマンドを実行します。
wsl --list --online

うえええ、RHEL系 (Rocky Linux とか Alma Linuxとか)って無いんだ。。。
仕方ない、Ubuntu-22.04 をインストールすることにしました。以下の通り、インストールコマンドを実行します。
wsl --install -d Ubuntu-22.04
すると、管理者権限で実行して良いかとか、Windowsのサービスがなんちゃら、とかそういうダイアログが表示されますが全て「はい」を選択して進めると、インストールが進みます。

インストール後、システムを再起動する必要がある、と言うのでWindowsを再起動します。

Note: このときは、先にWSLの機能を有効にしていなかったので、ここで再起動を求められたのかもしれません。実際にインストールを試して、このメッセージが表示されたら再起動をして下さい。
Linux(Ubuntu)に接続する
Windowsのコマンド・プロンプト、またはPowerShellを起動し、そこから以下のコマンドを実行してUbuntuに接続します。-d オプションで、インストールしたディストリビューションの名前を指定しています。
wsl -d Ubuntu-22.04
Ubuntuの作法に則り、いきなりrootでのログインができないので、「Enter new UNIX username:」で一般ユーザの作成を求めてきますので、自分の好きなユーザ名を入力します。「New password:」と「Retype new password:」でパスワードも求められるのでパスワードを入力しましょう。
すると、Ubuntuにログインすることができます。rootに昇格したい場合は「sudo -s」を実行してください。
ファイルシステムを探索してみると、/ 配下にはLinuxの一般的なディレクトリが作成されていることが分かります。また、df コマンドで構成を確認すると、Windowsの各ドライブが以下のパスでアクセスできることが分かります。
/mnt/c/ (Cドライブ)
/mnt/d/ (Dドライブ)
/mnt/e/ (Eドライブ)
/mnt/l/ (Lドライブ)

Windows上のファイルは、日本語のファイル名も文字化けせずにリスト(ls)することができました。
所感
以前から、WindowsのファイルをUSBストレージにバックアップするスクリプトを作成したいと思っていました。更新時刻の判定とか、ファイル、ディレクトリの判定とか、Windows上でプログラミングするのは嫌だな(単に苦手なだけだけど)と思っていましたが、WSLで起動したLinux上で、perlが使えるので、バックアップスクリプトを作成し、無事にファイルのバックアップをすることができました。
Windowsのファイルシステムが、WSLで起動したLinuxからアクセスできるというのは、とても便利だとおもいました。



コメント