WSL2修改主机名

参考:WSL 修改 hostname_wsl修改主机名-博客 和 How to change the hostname of Ubuntu running in Windows WSL

如果想在不修改windows主机名的情况下,在WSL中修改主机名,可以使用WSL的配置文件。

sudo vim /etc/wsl.conf

添加如下配置

[network]
hostname = <hostname>
generateHosts = false

其中hostname修改为你想要的主机名,generateHosts选项代表不自动生成hosts文件(我的理解是不要自动重置)。

随后修改/etc/hosts文件,默认情况下,该文件应该长下面这样

# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateHosts = false
127.0.0.1       localhost
127.0.1.1       my-old-hostname.localdomain      my-old-hostname
192.168.0.138   host.docker.internal
192.168.0.138   gateway.docker.internal
127.0.0.1       kubernetes.docker.internal

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouter

你需要做的是将文件中my-old-hostname修改为你刚刚更新的新用户名,其他内容不动。在我的电脑上第一个my-old-hostname后面只有一个点,不带localdomain

127.0.1.1       new-hostname.localdomain      new-hostname

回到windows的命令行中重启wsl即可生效。

wsl --shutdown 虚拟机名称

初次修改后我遇到了这个sudo切换的错误,这是因为你的/etc/hosts没有正常修改为新的hostname,请检查修改是否正确。

❯ sudo su -
sudo: unable to resolve host wsl-ubuntu: Name or service not known