我有一个现有的带有 Windows 11 和 Arch Linux 的 Dualboot-Setup,由 grub 管理。
是否可以在 Windows 中将我的 Arch 系统用作 WSL?
$ lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1
|
|-nvme0n1p1
| vfat FAT32 73A8-FF43 451.3M 12% /boot
|-nvme0n1p2
| swap 1 23fe1eb0-971a-455f-bb80-301c0eb7eed5 [SWAP]
|-nvme0n1p3
| ext4 1.0 702789b8-6895-4117-98f3-56908ea027d0 180.4G 3% /
`-nvme0n1p4
ext4 1.0 9ac9ebb5-c604-4d89-875d-89590ff43db6 672G 0% /home
nvme1n1
|
|-nvme1n1p1
| vfat FAT32 SYSTEM
| BABE-8522
|-nvme1n1p2
|
|-nvme1n1p3
| ntfs Windows
| EC0AC1070AC0CFAE 402.8G 15% /windows
`-nvme1n1p4
ntfs WinRE_DRV
0EFEC19BFEC17C09
据我所知,目前还没有一种方法可以从最初未被 WSL“初始化”的驱动器中实际引导WSL 实例。
不过,至少有两种可能的解决方法。两者都需要 Windows 11,或者至少需要 Windows 10 的开发人员/内部人员版本。
如果您只是想从不同的 WSL2 实例中访问 Arch 分区上的文件,那么应该相当简单。您可以使用此处记录的 Microsoft 说明安装现有物理分区。
如果您真的想在 WSL2 下使用这些 Arch 分区,那么这会稍微复杂一些,但通过将其设置为
chroot
在单独的 WSL2 实例下访问仍然可能是可行的。这有几个巨大的警告:
如果这是您要走的路线,那么您需要:
根据用于挂载分区磁盘的相同 WSL2 文档挂载必要的 Linux 分区。
创建一个最小的“引导”WSL2 实例。如果这是一个长期的解决方案,那么我可能会选择 Alpine 作为它的基础发行版,因为它非常“精简”,但从一些更“全功能”开始可能是最简单的(在框)喜欢Ubuntu。过去,我曾将现有的 Ubuntu 发行版用于类似
chroot
的用途。为 chroot 创建一个目录。
sudo mount --bind
(绑定挂载)将挂载的分区从它们的默认位置(通常/mnt/wsl
)移动到适当的位置(即 chroot 目录本身用于 rootfs 分区,以及其中的主目录,当然,用于/home
分区)。最棘手的部分是让 chroot 可以使用所有 WSL 特殊安装和套接字。我之前已经按照此处记录的方式完成了此操作,对于 Arch 来说应该是类似的。也就是说,请确保记录您所做的任何更改,以便在需要更改回使用它们进行双启动时可以“退出”。
/init
WSL 通常会通过其流程为您设置大部分内容,但chroot
您需要手动完成。涉及的目录、文件和套接字至少是:/mnt/wsl
:包括resolv.conf
由 WSL 生成的用于 Windows 网络的/etc/resolv.conf
: 需要符号链接到生成的版本。/mnt/wslg
:用于与运行图形应用程序的 WSLg Weston 发行版通信mnt/wslg/.X11-unix/
(X插口)/run/WSL
: 与 Windows 互操作/dev
/proc
/dev/pts
/sys
/binfmt_misc
: 用于运行 Windows.exe
的