Linux 覆盖了 windows-linux-subsystem 上的 /etc/hosts

Linux 覆盖了 windows-linux-subsystem 上的 /etc/hosts

我在 Windows Linux 子系统中遇到主机名解析问题,因此我删除了 /etc/hosts 并编写了新版本。该解决方案解决了我的问题,但每次重启后系统都会开始用某个默认版本覆盖 /etc/hosts,因此我需要一次又一次地设置主机。是否可以设置 Linux 子系统,以便它复制原始 Windows 主机文件或至少不删除已写入的文件?

答案1

sudo vim /etc/wsl.conf

添加以下两行:

[network]
generateHosts = False

参考:https://devblogs.microsoft.com/commandline/automatically-configuring-wsl/

答案2

我在 Windows 下使用 Ubuntu 16.04.5 LTS 作为 Linux 子系统。Ubuntu 下的 /etc/hosts 文件显示

#This file is automatically generated by WSL based on the Windows hosts file:
#%WINDIR%\System32\drivers\etc\hosts. Modifications to this file will be overwritten.

因此我只是改变了#%WINDIR%\System32\drivers\etc\hosts一下。

答案3

您的问题在这里解决: https://github.com/Microsoft/BashOnWindows/issues/398

为了防止 WSL 在每次 bash 启动时自动生成 /etc/hosts 文件,需要删除 /etc/hosts 中的以下注释行:

# This file was automatically generated by WSL. To prevent automatic generation of this file, remove this line.

答案4

我必须chattr +i 对该文件进行上述操作,因为即使我按照说明将这两行添加到该文件后,该文件仍然不断被覆盖/etc/wsl.conf

注意 - 请记住您需要chattr -i能够再次从任何地方编辑该文件。

相关内容