WSLを使用しているとホストネームがWindowsの端末名になってしまうのですが、自分みたいに説明が画面キャプチャを貼ったりしていると、あんまり見せたくないなと思うこともあります🤔そこでWSLのディストリビューションのhostname
を変更を考えるのですが、一般的なhostname
の変更手順では永続化できないという現象が発生します🙄
今回はその対策のメモとなります。特に以前のディストリビューションには名前をつけられるようになったのに、それがホストネームに反映されてないとちょっと気持ちが悪いですよね。
参考
問題点
WSLでホストネームを変更したいが、hostname
コマンドや/etc/hostname
の編集だけでは、再起動時に元に戻ってしまう。
一般的な手順(今回はこれでは永続化されない)
# 以下ではwsl --shutdownを行った場合ではもとに戻る $ hostname newhostname # ファイルを編集でhostnameの変更は可能だが、再起動するとこのファイルの変更が無効になる。 $ sudo nano /etc/hostname
この原因は?
実は、WSLは再起動時にWindowsホストからホストネームを継承するため、通常のLinuxの変更手順では永続化されないのです。
解決方法
wsl.conf
を編集することで変更の永続化が行われます。というか、再起動時にWindowsホストからホストネームの継承時に、このファイルの値が設定に反映されます。
1. wsl.confファイルを編集
$ sudo nano /etc/wsl.conf
2. wsl.confファイルに以下の内容を追加
ホストネームをMyUbuntu
にする場合は以下のようになります。
- ⚠️
# generateHosts = false
は不要です。入っていたらコメントアウトしてください - ⚠️入っていると
sudo
コマンドの実行が遅くなります
[network] hostname = newhostname # generateHosts = false
変更箇所
3. PowerShellに戻り、WSLを再起動
PS> wsl --shutdown PS> wsl -d ディストリビューション名
再起動するとホストネームが変わっています
おわりに
変更してsudo
コマンドの実行が遅くなってかなり焦りましたが、起動時に/etc/hosts
が自動生成されることでこの現象が発生するようです。手動で修正もできますが、wsl.conf
の修正が簡単に解消します。