如何配置 Windows Subsystem for Linux 2 (WSL2) 以使用 fstab 自动挂载 Windows 网络文件共享?

She*_*tes 11 linux mount cifs windows-10 windows-subsystem-for-linux

我正在尝试使用在 Windows 10 的 Linux 子系统上运行的 Debian 10 Linux 发行版来挂载 Windows 共享 (SMB/CIFS),并使用 fstab 在启动时自动挂载。我的软件规格是

\n
OS: Windows 10 Pro 21H2\nOS Build: 19044.1526\n    \nWindows Subsystem for Linux 2 (WSL2)\nDistribution: Debian 10.11\n
Run Code Online (Sandbox Code Playgroud)\n

根据 Microsoft 的以下文章,您可以创建一个文本文件来/etc/wsl.conf存储 WSL2 的用户配置设置。

\n

https://docs.microsoft.com/en-us/windows/wsl/wsl-config

\n

我开始使用wsl.conf将mountFsTab键设置为 true。这应该确保 WSL 处理 fstab 文件。我知道该设置应该无关紧要,因为它默认为 true,但我想确保它设置为 true。我的wsl.conf文件当前如下所示:

\n
# Automatically mount Windows drive when the distribution is launched. \n[automount]\n# Automatically mount the fixed drives (C:) under /mnt.\nenabled = false\n# Sets the `/etc/fstab` file to be processed when a WSL distribution is launched.\nmountFsTab = true\n        \n# Network host settings that enable the DNS server used by WSL 2. This example changes the hostname, sets generateHosts to false, preventing WSL from the default behavior of auto-generating /etc/hosts, and sets generateResolvConf to false, preventing WSL from auto-generating /etc/resolv.conf, so that you can create your own (ie. nameserver 1.1.1.1).\n[network] \nhostname = JTI-ITL05-DEBIAN\n
Run Code Online (Sandbox Code Playgroud)\n

主机确实更改成功。但是,即使将mountFsTab键设置为 true,在 Debian WSL2 实例启动时也不会应用fstab file\xe2\x80\x99s 挂载。为了测试fstab文件,我首先尝试运行以下命令。

\n
Sudo mount -a\n
Run Code Online (Sandbox Code Playgroud)\n

该命令成功安装了我在/etc/fstab. 以下是我的fstab条目的示例,用于说明使用 Microsoft 为 WSL 创建的DrvFs文件系统插件的结构。

\n
#file system                    dir            type    options                         dump    pass\n\\\\\\\\domain.com\\\\share\\\\path     /mnt/mountdir  drvfs   defaults,uid=1000,gid=1000      0       0\nC:                              /mnt/c         drvfs   defaults,uid=1000,gid=1000      0       0\n
Run Code Online (Sandbox Code Playgroud)\n

为了测试 fstab 的处理,我添加了一行来挂载本地设备(Windows 中的驱动器 C)。挂载本地设备的线路,WSL2实例启动时挂载成功。指向 Windows 网络共享的另一行在启动时不会安装,但我可以在实例启动到终端 CLI 后安装它。我可以使用wsl命令关闭实例并重新启动它来确认结果。启动时正在处理 fstab 文件。

\n

我没有\xe2\x80\x99 看到相关的日志文件来/var/log检查错误。到目前为止,我的所有测试都未能在 WSL2 Debian 启动时获取 fstab 文件来挂载 Windows 网络共享。

\n

如何让 WSL2 实例自动挂载 fstab 文件中找到的 Windows 网络共享?

\n

She*_*tes 6

事实证明我确实设置正确。要回答最初的问题,请按照以下过程将 Windows Subsystem for Linux 2 (WSL2) 配置为使用 fstab 自动挂载 Windows 网络文件共享。

  1. 在终端中打开 WSL2。
  2. 创建一个目录来挂载文件共享。/mnt/mountdir
  3. 创建一个名为“fstab”的文件。/etc/fstab
  4. 将以下行添加到“fstab”文件中。
\\\\domain.com\\share\\path    /mnt/mountdir    drvfs defaults,uid=1000,gid=1000    0    0
Run Code Online (Sandbox Code Playgroud)

使用网络上的 Windows 共享填写共享路径。

我设置了一台运行 Windows 10 的新笔记本电脑,按照上述过程进行操作,并确认在 WSL2 实例启动时安装了 Windows 共享。我不确定最初的问题是什么。这似乎与 Windows 10 操作系统损坏有关。如果我能找到问题的原始原因,我会更新我的答案。