WSL 上的“modprobe 保险丝”?

WSL 上的“modprobe 保险丝”?

尝试在 WSL 中使用 veracrypt(控制台)。

我制作了一个卷,似乎工作正常......但是当我尝试安装它时:

Done: 100.000%  Speed: 5.0 MiB/s  Left: 0 s

The VeraCrypt volume has been successfully created.
m17awl@M17A:/media/mike$ veracrypt /mnt/e/test.vc /media/mike/rsync_vc_drive_e/
Enter password for /mnt/e/test.vc:
Enter PIM for /mnt/e/test.vc:
Enter keyfile [none]:
Protect hidden volume (if any)? (y=Yes/n=No) [No]:
Error: fuse: device not found, try 'modprobe fuse' first

NB见过这个问题,但是当我尝试这些命令时,我得到这个:

m17awl@M17A:/media/mike$ modprobe fuse
modprobe: FATAL: Module fuse not found in directory /lib/modules/4.4.0-19041-Microsoft
m17awl@M17A:/media/mike$ modprobe loop
modprobe: FATAL: Module loop not found in directory /lib/modules/4.4.0-19041-Microsoft
m17awl@M17A:/media/mike$ lsmod
libkmod: ERROR ../libkmod/libkmod-module.c:1668 kmod_module_new_from_loaded: could not open /proc/modules: No such file or directory
Error: could not get list of modules: No such file or directory

...显然这些问题可能是 WSL 特有的。我不知道,也从未听说过这些 Linux“模块”(我是低级的,抱歉!)。

作为解决方法,我安装了 W10 版本的 veracrypt 控制台(想要使用控制台版本的目的是我想要从脚本中安装和卸载)。正如记录的那样,这也遇到了问题这里,虽然我设法找到了一种次优的安装方式,这里,这至少有效......

答案1

fuseWSL 1 不支持

WSL 问题 #2869,评论者雷阿尔肯

WSL 上没有 Linux 模块,因为 WSL 中没有 Linux 内核。


fuse被编译成 WSL 2

来自 MSPoweruser 文章Windows 10 版本 1903 和 1909 支持 Windows Linux 子系统 (WSL) 2

WSL 2 中内置完整的 Linux 内核

并从WSL 第 17 期,评论者雷阿尔肯

FUSE 静态编译到 WSL2 内核中。一般来说,modprobe 不适用于 WSL2 设计



信用@史蒂夫·贝内特

答案2

在 WSL 2 中,使用的内核是 Microsoft 定制的。虽然它是在支持模块的情况下编译的,但模块和内核头文件都没有附带,因此,如果您自己不做大量工作来构建自定义模块,实际上不可能将它们加载到内核中。请注意,您的发行版附带的内核模块和标头适用于不同的内核,因此无法工作。

为了给出模块的基本概述,它们本质上是驱动程序,用于支持硬件(真实的或虚拟的)、文件系统、设备和各种其他功能,同时保持主内核映像较小。因此,它们被发行版广泛使用。 Microsoft 不为其内核提供模块,因为环境是众所周知的且静态的,如果将功能编译到内核中,则分发会容易得多。

为了使用 FUSE 文件系统,您需要拥有该/dev/fuse设备。从文档来看,似乎udev可能无法运行来创建设备,因此您可以尝试运行sudo mknod /dev/fuse c 10 229来创建它,然后看看是否有效。据说 FUSE 是可用的,所以这可能会起作用。

相关内容