中午无聊,打算装两个Linux玩玩,我选择了Fedora42Arch,这两个系统在WSL中式支持的,但默认安装在C盘,还得再导出导入一次才能换到其他盘,那何必多此一举,直接导入到其他盘即可。下面介绍下本次安装的过程。

系统包准备

打开Fedora下载地址,Fedora官方支持WSL的镜像,所以只需要下载Fedora-WSL-Base-42-1.1.x86_64.tar.xz即可。

打开ArchLinux下载地址,Arch官方没有WSL的镜像,我们下载archlinux-bootstrap-x86_64.tar.zst,然后在任意一个Linux中使用zstd命令将其转换为tar包。以Ubuntu为例

1
2
3
sudo apt install zstd
# 解压 zst 并打包为 tar
zstd -d archlinux-bootstrap-x86_64.tar.zst

ArchLinux默认会比其他发行版多一层目录root.x86_64,所以这个包还需要再处理下才行,不能直接导入。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 创建临时目录
mkdir temp_arch
# 解压到该目录
sudo tar -xvf archlinux-bootstrap-x86_64.tar -C temp_arch
# 重新打包
cd temp_arch/root.x86_64
sudo tar -cvf ../../arch_fixed.tar .

# 清理临时文件
cd ../..
rm -rf temp_arch

# 将其拷贝到Window硬盘中
cp arch_fixed.tar /mnt/e/Downloads

导入Linux系统

分别创建两个目录E:\WSL\Fedora42E:\WSL\Arch,在PowerShell中执行如下:

1
2
3
mkdir e:\WSL\Fedora42

mkdir e:\WSL\Arch

导入系统

1
2
3
4
5
# 导入Fedora42
wsl --import Fedora42 E:\WSL\Fedora42 E:\Downloads\Fedora-WSL-Base-42-1.1.x86_64.tar.xz

# 导入ArchLinux
wsl --import Arch E:\WSL\Arch E:\Downloads\arch_fixed.tar

启动系统

使用wsl命令启动这两个系统,后面的参数就是wsl系统的名称,也就是上一步--import后面的那个名字。

1
2
3
wsl -d Fedora42

wsl -d Arch

默认是root启动,还需要再次配置。

配置WSL系统

接着就是对系统的初始化配置了

配置Fedora42

1.安装基础工具

1
dnf install -y sudo passwd ncurses findutils

2.创建普通用户

1
2
useradd -m -G wheel yourusername
passwd yourusername

3.配置wsl默认使用新建的用户登录

1
2
3
4
5
6
7
8
9
cat <<EOF > /etc/wsl.conf
[boot]
systemd=true
[user]
default=yourusername
[network]
generateHosts = true
generateResolvConf = true
EOF

4.检查dnf状态

1
dnf --version

5.设置源

1
2
3
sudo sed -e 's|^metalink=|#metalink=|g' \
-e 's|^#baseurl=http://download.example/pub/fedora/linux|baseurl=https://mirrors.tuna.tsinghua.edu.cn/fedora|g' \
-i.bak /etc/yum.repos.d/fedora*.repo

6.更新缓存

1
dnf makecache

7.设置并发下载

1
echo "max_parallel_downloads=10" | tee -a /etc/dnf/dnf.conf

8.关闭防火墙

1
2
systemctl stop firewalld
systemctl disable firewalld

9.安装字体

1
dnf install -y google-noto-fonts-common

如果把它当centos使用,可以安装开发工具包

1
2
dnf groupinstall "Development Tools" -y && \
dnf install -y golang java-latest-openjdk-devel nodejs git neofetch htop

为了避免新创建的用户无法使用sudo命令,可以用root执行visudo。找到下面的配置

1
%wheel  ALL=(ALL)       ALL

确认是没备注是的,它可以允许所有属于wheel组的用户执行任何命令。

然后退出Fedroa42,执行wsl --shutdown,再次打开就可以使用刚才配置的用户登陆了。

10.安装fastfetch

1
2
3
sudo dnf install -y fastfetch
# 如果你想每次登录都显示,那就加进去。
echo "fastfetch" >> ~/.bashrc

过程中可能会遇到一个错误No valid source (baseurl, mirrorlist or metalink) found for repository "fedora-cisco-openh264"

这个需要编辑/etc/yum.repos.d/fedora-cisco-openh264.repo

1
sudo vi /etc/yum.repos.d/fedora-cisco-openh264.repo

将里面的 enable=1全部修改为enable=0,然后保存退出

配置Arch

大致和Fedroa42类似,但也有特殊的地方。注意,此时登陆的用户是root

1.初始化pacman-key

1
2
3
pacman-key --init
pacman-key --populate archlinux
pacman -Syu

2.配置源

1
echo "Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/\$repo/os/\$arch" | tee /etc/pacman.d/mirrorlist

然后再次执行

1
2
pacman-key --init
pacman-key --populate archlinux

3.安装基础工具包

archlinux,默认连vi、sudo都没装

1
pacman -S base-devel git vim go

4.创建用户

1
2
useradd -m -G wheel yourusername
passwd yourusername

注意:archlinux的wheel组不能直接执行sudo。

5.配置wsl

1
2
3
4
5
6
cat <<EOF > /etc/wsl.conf
[boot]
systemd=true
[user]
default=yourusername
EOF

6.配置sudo

使用当前用户root,执行visudo,找到%wheel ALL=(ALL:ALL) ALL,将前面的#删掉。

如果忘记执行这一步就重启使用新用户登录,就会提示yourusername is not in the sudoers file.可以在powershell中执行wsl -u root -d Arch,使用root用户登录,然后用root用户修改即可。

7.确认id

1
id -u yourusername

8.设置语言

1
2
3
4
5
vi /etc/locale.gen

# 将下面的注释放开
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8

编译语言包

1
locale-gen

设置全局生效

1
echo "LANG=en_US.UTF-8" > /etc/locale.conf  # 多年经验,还是英文好点

9.安装其他工具包

ArchLinux是高度定制化的,啥都要自己装

1
2
3
4
pacman -S base-devel sudo git wget curl bash-completion net-tools iputils

# 显示系统信息
pacman -S fastfetch

然后退出系统,再重新登录,就是刚才新建的用户了。

配置PowerShell及配色

一般Windows会自动识别,然后自动创建PowerShell的配置,但也是有延迟的,我都是配置完了才识别出来。由于我已经配好了DebianUbuntu,那就直接复制就行,然后改一下名称、图标、启动命令。

ctrl+,打开设置,找到左侧菜单中的配置文件,点击+ 添加新配置文件,然后选择复制,复制一个你配置好的即可。

powershell-new-config

复制后,点击刚才复制的配置,修改一下。

powershell-new-config-02

系统默认会识别出来的,其中Fedroa系统会有自己的图标,ArchLinux没有,使用的默认WSL的图标。再命令行那里,系统识别出来的是C:\WINDOWS\system32\wsl.exe --distribution-id {897ed9c5-dc17-4a23-a17a-45719d59c52b} --cd ~,但其实我更推荐使用-d 系统名称,这样即使删掉在创建,只要名字一样,这个配置就会一直有用。注意这个名字是 --import 后面的这个名字。

不同系统都会有自己独特的配色,例如Ubuntu有个茄子配色,Fedroa是蓝色的,suse是绿色的,下面分享一下我得配色。在PowerShell中,按下快捷键Ctrl + Shift + ,打开Windows Terminal 的 settings.json,在 "schemes" 数组中添加:

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
{
"background": "#002B36",
"black": "#073642",
"blue": "#268BD2",
"brightBlack": "#002B36",
"brightBlue": "#839496",
"brightCyan": "#93A1A1",
"brightGreen": "#586E75",
"brightPurple": "#6C71C4",
"brightRed": "#CB4B16",
"brightWhite": "#FDF6E3",
"brightYellow": "#657B83",
"cursorColor": "#D33682",
"cyan": "#2AA198",
"foreground": "#839496",
"green": "#859900",
"name": "Debian-Official",
"purple": "#D33682",
"red": "#DC322F",
"selectionBackground": "#073642",
"white": "#EEE8D5",
"yellow": "#B58900"
},
{
"background": "#0B1D35",
"black": "#000000",
"blue": "#294172",
"brightBlack": "#676767",
"brightBlue": "#31609A",
"brightCyan": "#51A2DA",
"brightGreen": "#49A62A",
"brightPurple": "#A181BC",
"brightRed": "#F66151",
"brightWhite": "#FFFFFF",
"brightYellow": "#D6BAAD",
"cursorColor": "#51A2DA",
"cyan": "#226A9C",
"foreground": "#D1D1D1",
"green": "#3E7B28",
"name": "Fedora-DeepBlue",
"purple": "#75507B",
"red": "#C01C28",
"selectionBackground": "#1B3456",
"white": "#D1D1D1",
"yellow": "#B58900"
},
{
"background": "#300A24",
"black": "#2E3436",
"blue": "#3465A4",
"brightBlack": "#555753",
"brightBlue": "#729FCF",
"brightCyan": "#34E2E2",
"brightGreen": "#8AE234",
"brightPurple": "#AD7FA8",
"brightRed": "#EF2929",
"brightWhite": "#EEEEEC",
"brightYellow": "#FCE94F",
"cursorColor": "#FFFFFF",
"cyan": "#06989A",
"foreground": "#FFFFFF",
"green": "#4E9A06",
"name": "Ubuntu-Official",
"purple": "#75507B",
"red": "#CC0000",
"selectionBackground": "#B6B6B6",
"white": "#D3D7CF",
"yellow": "#C4A000"
},
{
"name": "Arch-Carbon",
"background": "#121212",
"black": "#1C1C1C",
"blue": "#5FAFD7",
"cyan": "#5FAF87",
"foreground": "#D0D0D0",
"green": "#87AF87",
"purple": "#AF87AF",
"red": "#AF5F5F",
"white": "#E4E4E4",
"yellow": "#D7AF5F",
"cursorColor": "#1793D1"
}

这四个配色,下面就以Fedroa为例看下效果,在PowerShell中,按快捷键Ctrl + ,,打开设置,找到Fedora42的配置文件,在其他设置->外观中选择刚才添加的配置名称Fedora-DeepBlue,然后再次登录查看效果。

powershell-new-config-03

后续再给每个系统安装个oh-my-zsh美化下就好了。

powershell-wsl-oh-my-zsh