UbuntuをWindows11上で動かす その11: wsl.confによる設定

UbuntuをWindows11上で動かす その11: wsl.confによる設定 Ubuntu
スポンサーリンク

 前回はWindows11に導入したWSL2(Ubuntu)でWSLgという仕組みを使ってLinuxのGUIを実行する方法を紹介しました。

これでだいぶ環境が整ってきたので、今回はwsl.confという設定ファイルを使って、いろいろ自動化したいと思います。

スポンサーリンク

WSL2の起動時の行いたい設定

このブログではWSL2(Ubuntu)を導入していろいろ調査・設定してきました。

その中でいつも起動時に有効にしたい設定がいくつかあります。

まずはネットワークドライブのマウントです。

UbuntuをWindows11上で動かす その6: NASのファイルを利用する
今回はWindows Subsystem for Linux (WSL2)からNASの共有フォルダにアクセスする方法を紹介します。WSL2ではFUSEが利用できるため様々な方法でNASにアクセスすることができますが、結局Windowsにネットワークドライブとして認識させdrvfsでマウントしてしまうのがお手軽な方法となりそうです。

私の場合はよく使うデータをNASにおいてあるので、ネットワークドライブにはWSL2からもアクセスする可能性もあり、自動的にマウントしておきたいところです。

次はSSHサーバの起動です。

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

WSL2はWindows Terminalで操作することもできますが、SSHを使って接続すると使い慣れたSSHクライアントを使えるので便利です。

最後はリモートデスクトップ接続のためのxrdpの起動です。

UbuntuをWindows11上で動かす その9: GUIを使う(リモートデスクトップ編)
今回はWindows Subsystem for Linux(WSL2)を使って導入したUbuntuにリモートデスクトップで接続できるようにしてみます。モートデスクトップを使うとWindows側に特別なソフトを入れる必要がありません。WSL2でデスクトップ画面を使いたい方は、Xサーバー(VnXsrv)を使うよりリモートデスクトップの方がお手軽だと思います。

WSL2はWSLgという仕組みでLinuxのGUIアプリをWindows上に表示させることはできますが、Linuxのデスクトップ環境をのものを表示させることはできません。

Linuxのデスクトップ環境を利用する場合はWSL2でxrdpを起動させておき、Windowsからはリモートデスクトップで接続する形になります。

WSL2の起動後にこれらの設定を手動でやっても良いのですが、できれば自動で行いたいところです。

スポンサーリンク

wsl.confファイル

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

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

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

このwsl.confファイルを設定したいLinuxディストリビューションの/etc以下に作成すると、様々な動作を変更することができます。

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

まずはネットワークドライブのマウントが自動化されるような設定をしていきます。

実はこの設定はwsl.confファイルだけでなく/etcにあるfstabというファイルを設定する必要があります。

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

x:	/mnt/x	drvfs	defaults	0 0

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

xドライブ以外にもマウントしたいネットワークドライブがある場合は、同様な行を追加していきましょう。

続いてwsl.confファイルを/etcディレクトリに作成します。

初期状態ではwsl.confファイルはないので、新たにファイルを作成することになります。

また作成にはルート権限が必要ですので、適宜suコマンドを使ってください。

wsl.confファイルの内容は次のようにします。

[automount]
enabled = true
mountFsTab = true

実はこれがデフォルトの設定なのでwsl.confファイルを作らなくてもネットワークドライブの自動マウントができるのですが、のちのち必要なのでwsl.confファイルを作っておきました。

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

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

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

$ mount
/dev/sdc on / type ext4 (rw,relatime,discard,errors=remount-ro,data=ordered)
・・・
drvfs on /mnt/x type 9p (rw,relatime,dirsync,aname=drvfs;path=s:;symlinkroot=/mnt/,mmap,access=client,msize=262144,trans=virtio)

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

とするだけでcドライブのマウントが可能になります。

SSHサーバとxrdpの自動起動

SSHサーバとxrdpの自動起動は同時にやってしまいます。この設定はwsl.confのみで実現可能です。

wsl.confファイルに次の行を追加してください。

ついでにcronも動くようにしておきましょう。

[boot]
command = "service ssh start ; service xrdp start ; service cron start"

wsl.confの修正が終わったらWSL2を終了してから再度立ち上げます。

WSL2が起動したら実行中のプロセスを調べてみましょう。

$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   2016  1344 ?        Sl   23:47   0:00 /init
root        17  0.0  0.0   2112   344 ?        Ss   23:47   0:00 /init
root        18  0.1  0.0   2112   352 ?        S    23:47   0:00 /init
root        28  0.0  0.0  12180  3012 ?        Ss   23:47   0:00 sshd: /usr/sbin/sshd [listener] 0 of 10-100 startups
root        53  0.0  0.0  11200   504 ?        S    23:47   0:00 /usr/sbin/xrdp-sesman
xrdp        59  0.0  0.0  11492   612 ?        S    23:47   0:00 /usr/sbin/xrdp
root        76  0.0  0.0   3820  2092 ?        Ss   22:44   0:00 /usr/sbin/cron
・・・

「sshd」「xrdp」「cron」が起動していれば設定成功です。もちろん、「dbus」などが必要であれば、同様にcommandに起動するコマンドを追加していけばOKです。

まとめ

今回はwsl.confというファイルを使って、WSL2の起動時にネットワークドライブの自動マウントと、sshサーバ・xrdpに自動起動を設定しました。

WSL2ではsystemdが動いていないため起動時の自動起動は面倒かと思ったのですが、この設定フィアルで簡単に行うことができました。WSL2で動かしておきたいサービスがある方は活用して見てください。

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

コメント

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