文章

wsl安装archlinux

wsl安装archlinux

[原文链接](Windows10/11 wsl2 安装 ArchLinux 子系统 - RioTian - 博客园](https://www.cnblogs.com/RioTian/p/17965184)

安装 ArchLinux 子系统

最小 ArchLinux 安装

首先,需要确保你的系统已经安装并打开wsl2功能。详见官方文档

Github上的ArchWSL项目已经帮我们把ArchLinux集成好了,可以到下载页面下载最新的Arch.zip文件:下载页面。

下载好之后,解压其中的文件到你需要存放ArchLinux的路径,例如D:\soft\wsl2\。随后执行目录下的Arch.exe文件,安装程序会自动将ArchLinux安装到同目录下面,并配置好wsl。

安装完成之后,打开终端,应该可以看到刚装好的ArchLinux系统:

1
2
3
4
5
6
7
$ wsl --list

适用于 Linux 的 Windows 子系统分发:

Ubuntu (默认)

Arch

可以看到我的电脑上除了ArchLinux之外还有别的子系统,你可以保留它们,也可以使用下面的命令卸载:

1
$ wsl --unregister Ubuntu

如有需要,使用下面命令将ArchLinux设为默认系统:

1
$ wsl --set-default Arch

使用下面的命令就可以进入ArchLinux了(如果你把ArchLinux设为默认系统了,则可以省略参数):

1
$ wsl -d Arch

进入系统之后,会做一些配置,结束之后就可以进入bash shell了。


安装较完整的ArchLinux并更改安装位置

  • 使用wsl2或Microsoft Store安装archlinux
  • 查看已安装的 WSL 发行版 wsl -l -v
  • 导出 WSL 发行版到备份文件 wsl --export Ubuntu "D:\wsl\ubuntu_backup.tar"
  • 卸载当前 WSL 发行版 wsl --unregister Ubuntu
  • 重新导入 WSL 到新路径 wsl --import Ubuntu "D:\wsl\ubuntu" "D:\wsl\ubuntu_backup.tar" --version 2
  • 设置默认用户(如果之前有用户) ubuntu config --default-user your_username

进入系统

命令:wsl -d <自定义WSL系统名称>

比如:wsl -d archlinux

配置源

在这里我们就进入了archlinux内部,然后以下操作在archlinux中进行

删除/etc/resolv.conf文件

执行命令

1
rm /etc/resolv.conf

重新启动Archlinux

1
exit

执行上述命令后会退出arch,回到powershell,然后在powershell中执行

1
wsl --shutdown <名字>

比如:

1
wsl --shutdown archLinux

然后再次进入Arch

1
wsl -d archLinux

在Arch中执行

1
2
3
cd /etc/

explorer.exe .

注意后面的点,执行这条命令后会用windows的文件管理器打开/etc目录,然后找到pacman.conf,解除SigLevel = Optional TrustAll的注释,添加下面两行

1
2
3
4
5
[archlinuxcn]

Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
#Server = https://mirrors.aliyun.com/archlinuxcn/$arch

  • SigLevel = Optional TrustAll 是为了避免执行 pacman -S archlinuxcn-keyring 时遇到【签名是勉强信任】的情况
  • archlinux是由 Arch Linux 中文社区驱动的非官方软件仓库

然后进入下一级目录pacman.d,编辑里面的mirrolist文件,将China中的Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch注释去掉,然后回到Arch,执行

1
2
3
4
5
6
7
8
9
pacman -Syyu

pacman-key --init

pacman-key --populate

pacman -S archlinuxcn-keyring

pacman -S base base-devel vim git wget

如果执行pacman -Syy报:failed retrieving file ‘extra.db’ from 欢迎访问网易开源镜像站 : transfer closed with 560974 bytes remaining to read

则回到上一步mirrolist文件,将China的源中163中的源加上注释。

然后别忘了给当前的root设置密码

1
passwd

下述可不操作。

然后新建一个普通用户

1
2
3
useradd -m -G wheel -s /bin/bash <用户名>

passwd <用户名>

将文件/etc/sudoers中的wheel ALL=(ALL) ALL那一行前面的注释去掉

1
vim /etc/sudoers

查看当前用户id

1
id -u <用户名>

wslconfig配置

版本需求 OS: ≥ Windows 11 22H2(Build 22621.2359+)
WSLg/WSL2: Windows Subsystem for Linux 2.0.0+

配置参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[wsl2]                      # 核心配置

autoProxy=true             # 是否强制 WSL2/WSLg 子系统使用 Windows 代理设置(请根据实际需要启用)

dnsTunneling=true          # WSL2/WSLg DNS 代理隧道,以便由 Windows 代理转发 DNS 请求(请根据实际需要启用)

firewall=true               # WSL2/WSLg 子系统的 Windows 防火墙集成,以便 Hyper-V 或者 Windows 筛选平台(WFP)能过滤子系统流量(请根据实际需要启用)

guiApplications=true        # 启用 WSLg GUI 图形化程序支持

ipv6=true                   # 启用 IPv6 网络支持

#localhostForwarding=true    # 启用 localhost 网络转发支持(新版已不支持在 mirrored 模式下使用,会自动忽略,所以无需注释掉,只是启用会有条烦人的警告而已)

memory=8GB                  # 限制 WSL2/WSLg 子系统的最大内存占用

nestedVirtualization=true   # 启用 WSL2/WSLg 子系统嵌套虚拟化功能支持

networkingMode=mirrored     # 启用镜像网络特性支持

#pageReporting=true          # 启用 WSL2/WSLg 子系统页面文件通报,以便 Windows 回收已分配但未使用的内存

processors=16                # 设置 WSL2/WSLg 子系统的逻辑 CPU 核心数为 8(最大肯定没法超过硬件的物理逻辑核心数)

vmIdleTimeout=-1            # WSL2 VM 实例空闲超时关闭时间,-1 为永不关闭,根据参数说明,目前似乎仅适用于 Win11+

  

[experimental]                  # 实验性功能(按照过往经验,若后续转正,则是配置在上面的 [wsl2] 选节)

autoMemoryReclaim=gradual       # 启用空闲内存自动缓慢回收,其它选项:dropcache / disabled(立即/禁用)

hostAddressLoopback=true        # 启用 WSL2/WSLg 子系统和 Windows 宿主之间的本地回环互通支持

sparseVhd=true                  # 启用 WSL2/WSLg 子系统虚拟硬盘空间自动回收

bestEffortDnsParsing=true       # 和 dnsTunneling 配合使用,Windows 将从 DNS 请求中提取问题并尝试解决该问题,从而忽略未知记录(请根据实际需要启用)

#useWindowsDnsCache=false        # 和 dnsTunneling 配合使用,决定是否使用 Windows DNS 缓存池(新版已移除此实验性功能,未能转正)

#ignoredPorts=3306               # 见:https://learn.microsoft.com/zh-cn/windows/wsl/wsl-config#experimental-settings
本文由作者按照 CC BY 4.0 进行授权