Ubuntu 24.04 LTSをWindows 11上で動かす その11 wsl.confによる設定

Ubuntu
スポンサーリンク

前回はWindowsにフリーのXサーバを導入してWSLのGUIアプリを使う方法を紹介しました。

今回はwsl.confによる設定を紹介したいと思います。

スポンサーリンク

wsl.confファイル

WSL2には起動したLinuxディストリビューションの動作を制御するためのwsl.confファイルが定義されています。Microsoftによる紹介は下記になります。

WSL での詳細設定の構成
Linux 用 Windows サブシステム で複数の Linux ディストリビューションを実行するときに設定を構成するために使用される wsl.conf ファイルと .wslconfig ファイルのガイド。

WSL2全体の動作を設定する「.wslconfigファイル」もありますが、今回はこちらのファイルは使用しません。

このwsl.confファイルを設定したいLinuxディストリビューションの/etc以下に存在します。

デフォルトの内容は次のようになっています。

[boot]
systemd=true

これはsystemdを有効にするための設定で、デフォルトでsystemdが有効になっていることがわかります。

スポンサーリンク

サーバの自動起動

以前のWSL2ではsystemdが利用できなかったため、sshサーバーやリモートデスクトップ接続のためのxrdpの起動をwsl.confで行う必要がありました。

しかし、最近のWSL2では上述の通りwsl.confでsystemdが有効になっています。したがって、systemdの設定で必要なサービスを有効にしておけば自動起動するようになります。

sudo systemctl enable ssh
sudo systemctl start ssh
sudo systemctl enable xrdp
sudo systemctl start xrdp

このようにしておけば、起動直後からSSHサーバーとxrdpが起動している状態となるので、すぐにSSH接続あるいはリモートデスクトップ接続が可能になります。

systemdがWSL2で使えるようになったのは「Windows11バージョン22H2」の頃からのようですが、ユーザにとっては大きな改善だったのではないかと思います。

ネットワークドライブの自動マウント

WSL2からNASにアクセスするためにはネットワークドライブをマウントしておきたいところですが、WSL2ではデフォルトではネットワークドライブはマウントされません。

そのため手動でマウントする必要があります。

Ubuntu 24.04 LTSをWindows 11上で動かす その5 SSHで接続する
今回はWindows Subsystem for Linux 2上のUbuntuにSSHサーバを導入して、SSHで接続できるようにします。WindowsからWSL2へはlocalhostを指定するとフォワーディングされるのでIPアドレスを気にせずにSSH接続できます。これで使い慣れたターミナルソフトPuTTYを使ってWSL2を操作できるようになります。ただ、手動でSSHサーバを起動しておく必要があるのが面倒な点です。

頻繁にネットワークドライブにアクセスするのであれば、WSLの起動時に自動でマウントしておきたいところです。このためには、実はこの設定は「/etc/fstab」というファイルを設定する必要があります。

たとえば「x:」に割り当てたネットワークドライブを「/mnt/x」にマウントしたい場合は次のような行をfstabに追加します。

X:\     /mnt/x  drvfs   rw,noatime,uid=1000,gid=1000,umask=022,fmask=111        0       0

fstabの修正にはルート権限が必要なので、suコマンドを使って修正しましょう。

次にwsl.confファイルに次の設定を追加しましょう。

[automount]
enabled = true
mountFsTab = true

実はこれがデフォルトの設定なのでwsl.confファイルを作らなくても/etc/fstabを設定しておけばネットワークドライブの自動マウントはできます。

設定が終わったらいったんWSL2を終了したのち、再度起動してみましょう。

PowerShellで「wsl –shutdown」を実行するとWSL2を強制終了できます。

再起動後、mountコマンドを実行してみてfstabに記載したドライブがマウントされていれば成功です。

$ mount
・・・
S:\ on /mnt/s type 9p (rw,noatime,dirsync,aname=drvfs;path=S:\;uid=1000;gid=1000;umask=022;fmask=111;symlinkroot=/mnt/,mmap,access=client,msize=65536,trans=fd,rfd=3,wfd=3)
・・・

Windowsのドライブを自動マウントしない

さきほどの設定とは若干矛盾してしまいますが、WindowsのドライブがWSL2から見えてほしくないという方もいると思います。

というのも、WSL2からWindowsのドライブが見えてしまうと、WSL2上の誤操作でWindowsのファイルを消してしまう危険性があるからです。

必要なとき手動でマウントし、用事が終わったらアンマウントする運用の方が安全かもしれません。

このような運用にする場合はwsl.confの内容を

[automount]
enabled = false
mountFsTab = false

としてください。

「enabled」を「false」とすることでSSD/HDDのドライブの自動マウントが無効化され、「mountFsTab」を「false」とすることで/etc/fstabの内容を無視する(=ネットワークドライブのマウント設定が無視される)様になります。

ただし、副作用としてWSL2のLinuxからWindowsのコマンドが実行できなくなります(Windows側のドライブが見えないので当然ですが・・・)。

安全性と相互運用性のトレードオフになりますので、自分の運用方針に合わせて自動マウントするかどうかを決めてください。

なお、このようにするとcドライブなどのマウントが面倒になります。そのような場合は、fstabファイルに

C:\ /mnt/c  drvfs   defaults    0   0

と記載しておくと

sudo mount /mnt/c

でマウントできるようになります。

ホスト名の変更

デフォルトではWSLのホスト名はWindowsのホスト名と一致します。

WindowsとWSLは同じPCで動いているのでホスト名が一致してもおかしくはないのですが、別々のOSなのでホスト名も違うほうが混乱しないと思います。

また、WSL2で2つ以上のディストリビューションをインストールした場合は、同じホスト名のLinux環境ができてしまい、ますます混乱してしまいます。

そこで「wsl.conf」ファイルを使ってWSLに独自のホスト名を設定しましょう。

ホスト名をたとえば「ubuntu」とするには次のようにします。

[network]
hostname = ubuntu
generateHosts = true

設定が終わったらいったんWSL2を終了したのち、再度起動してみましょう。

ホスト名を確かめるには次のコマンドを実行します。

$ hostname
ubuntu

これでホスト名がwsl.confで指定したものになっていることがわかります。

まとめ

今回はWSL2の設定ファイルであるwsl.confを使った設定を紹介しました。

wsl.confには色々設定項目がありますがデフォルトのままでもほとんど問題なく使用できます。ただ、ホスト名は変更しておいたほうがわかりやすい気がします。

次回はWSL2に外部のPCから接続してみます。

コメント

タイトルとURLをコピーしました