前職ではWindowsのターミナル環境はPowerShellやGit Bashを使っていたのですが、今の会社に入ってWindows10のPCを支給されてからWSL(Windows Subsystem for Linux)を使うようになりました。当初はベータ版ということでインストールもいろいろ面倒だったのですが、WSL2になって超ラクチンになりました。
wslコマンドでインストール
PowerShell上でwslコマンドを使ってインストールします。
以前はWindowsストアからインストールしたいディストリビューションを選んでいましたが、wslコマンドではオプション指定でディストリビューションを選択します。どんなディストリビューションがあるかはwsl –list –onlineで確認できます。
PS C:\Users\ANONYMOUS> wsl --list --online
インストールできる有効なディストリビューションの一覧を次に示します。
'wsl --install -d <Distro>' を使用してインストールします。
NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
openSUSE-42 openSUSE Leap 42
SLES-12 SUSE Linux Enterprise Server v12
Ubuntu-16.04 Ubuntu 16.04 LTS
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Code language: PHP (php)
Debianあるね。よしよし。
デフォルトで入るのはDebian9なので、/etc/apt/sources.listを修正してアップグレードしましょう。Debian11へは2回に分ける必要があります。
以下のようにsources.listを書き換えて、都度apt update、apt upgrade、apt dist-upgradeを実行します。
- Debian10:stretchからbusterに書き換え
- Debian11:busterからbullseyeに書き換え
なおbullseyeではセキュリティ関連のパラメータ表記が変わっているので、最終的にはこうなります。
deb http://deb.debian.org/debian bullseye main
deb http://deb.debian.org/debian bullseye-updates main
deb http://security.debian.org/debian-security/ bullseye-security main
Code language: JavaScript (javascript)
LAMP環境を構築する
MySQLが使えたり、phpが動くWebサーバーが使えると便利なので環境を整えます。インストール手順はLAMPでWebサーバーを立てるの内容と同じ。
WSLではsystemctlコマンドが使えないので、デーモンの起動はserviceコマンドを使います。普通のLinuxと違ってrootがサービスを立ち上げる仕組みがないようなので、.bashrcに以下を追記してデーモンを自動起動します。
sudo service mysql start
sudo service apache2 start
sudo service php7.4-fpm start
sudo service cron start
Code language: CSS (css)
最初のsudoでパスワードの入力が求められますが、以降のコマンドはそのまま通ります。最後のcronデーモンを動かしておけば、WSLが立ち上がっている間はcronも有効になります。
とはいえ、これらはあまり使わなくなったので現在は止めてしまっています。
Windowsとの橋渡し
Windows11のエクスプローラ上にLinuxフォルダが現れます。その下にはディストリビューションごとのフォルダができていて、ここがそれぞれのルートファイルシステム。
なのでホームディレクトリまでは若干深いです。ショートカットを作るのがいいかな。
ちなみにWSL2はVM上で動くので、これらのフォルダはネットワークフォルダ同様、コンテキストメニューを表示すると警告が表示されてうざいです。
逆にLinuxからWindowsファイルシステムへのアクセスは/mnt以下にあります。マイドキュメントなどは/mnt/c/Users/ユーザー名/Documentsにあるので、シンボリックリンクなど張ると良いでしょう。
ちなみにNTFSにはunixのパーミッション情報を設定できないので、公開鍵ファイルなどパーミッション設定の必要なファイルは置かない方がいいです。
WSLではWindowsコマンドが使えます。パスを通す必要がありますが、WSLに入っていなかったarpコマンドなどはDOSコマンドをエイリアスで使うことができました。
alias arp='/mnt/c/Windows/System32/arp.exe'
Code language: JavaScript (javascript)
この辺はなかなか便利ですね。