在 WSL 上安装 Fedora

console 复制代码
➜  ~ screenfetch
           /:-------------:\          polaris@IBN-5100
        :-------------------::        OS: Fedora (on the Windows Subsystem for Linux)
      :-----------/shhOHbmp---:\      Kernel: x86_64 Linux 5.15.167.4-microsoft-standard-WSL2
    /-----------omMMMNNNMMD  ---:     Uptime: 1h 32m
   :-----------sMMMMNMNMP.    ---:    Packages: 755
  :-----------:MMMdP-------    ---\   Shell: zsh 5.9
 ,------------:MMMd--------    ---:   Resolution: No X Server
 :------------:MMMd-------    .---:   WM:
 :----    oNMMMMMMMMMNho     .----:   GTK Theme:  [GTK3]
 :--     .+shhhMMMmhhy++   .------/   Disk: 1.1T / 3.1T (35%)
 :-    -------:MMMd--------------:    CPU: 12th Gen Intel Core i5-12500 @ 12x 2.995GHz
 :-   --------/MMMd-------------;     RAM: 694MiB / 15869MiB
 :-    ------/hMMMy------------:
 :-- :dMNdhhdNMMNo------------;
 :---:sdNMMMMNds:------------:
 :------:://:-------------::
 :---------------------://

由于 Windows 商店中并没有 Fedora 官方提供的 WSL 发行版安装包,我不得不手动安装一份 Fedora Linux。因此这里记录一下安装过程,有个参考。

Fedora 已有计划对 WSL 2 提供官方支持fedoraproject.org/wiki/Change...,预计会在 Fedora 42 中提供。

准备工作

关于如何安装 WSL、设置 WSL 默认版本为 WSL 2,此处不再赘述,请看微软的文档。

Fedora Container Base 仓库里选择 41 分支, 并且下载 x86_64 架构的 rootfs tarball。假设其被存放在 D:\fedora.tar

同时要设置一个 Fedora 的安装路径,此处我设为:C:/Apps/wsl/Fedora

安装 Fedora 并进行必要的设置

安装并启动 Fedora WSL

首先,导入 Fedora 的 rootfs:

console 复制代码
PS C:\Apps\wsl\Fedora> wsl --import Fedora . D:\fedora.tar
PS C:\Apps\wsl\Fedora> wsl -d Fedora
[root@HOSTNAME Fedora]#

发行版侧 WSL 配置

这里我们先打开 systemd 支持并禁用互操作。编辑 /etc/wsl.conf

ini 复制代码
[boot]
systemd=true

[interop]
appendWindowsPath=false

配置 DNF 安装行为

为了缩减 Fedora Container Base 的体积,DNF 安装软件包时不会一并安装手册,但我们日常使用还是需要查手册的。同时 DNF 默认会安装弱依赖项,类似于一并安装 APT 系的建议安装的软件包,显然这不是我们想要的行为。因此,编辑 /etc/dnf/dnf.conf

ini 复制代码
[main]
#tsflags=nodocs
install_weak_deps=False

配置软件源

虽然 Fedora 支持 Metalink,可以自行发现并使用合适的软件源,但考虑到网络因素,Metalink 未必能正常工作,又或者因为代理工具设置不当导致 Metalink 误判,仍旧建议手动设置国内软件源,以 USTC 提供的 Fedora 源为例,只需要在终端内执行:

console 复制代码
# sed -e 's|^metalink=|#metalink=|g' \
         -e 's|^#baseurl=http://download.example/pub/fedora/linux|baseurl=https://mirrors.ustc.edu.cn/fedora|g' \
         -i.bak \
         /etc/yum.repos.d/fedora.repo \
         /etc/yum.repos.d/fedora-updates.repo

然后运行 dnf makecache 即可。

重新安装软件包

先将现有的软件包重新安装一遍来补充手册文件和修正 rootfs 中的粘滞位:

console 复制代码
# for pkg in $(dnf rq --installed --qf "%{name}\n"); do sudo dnf reinstall -y $pkg; done

耐心等待命令跑完。

安装软件包、调整设置

Fedora 提供了一组核心软件包,可以直接用 DNF 安装(此处移除了显然毫无用处的 plymouth):

console 复制代码
# dnf install -y @core
# dnf remove -y plymouth

配置 locale

Fedora Container Base 只包括最基本的 C.UTF-8 这样的 locale。要配置更多的 locale,例如 en-US.UTF-8

console 复制代码
# dnf install -y glibc-locale-source glibc-langpack-en langpacks-en
# localedef --force -f UTF-8 -i en_US en_US.UTF-8

然后更改 /etc/locale.conf:

shell 复制代码
LANG="en_US.UTF-8"

添加新用户

创建新用户,并且加入 sudoers(同时给 root 用户改密码):

console 复制代码
# useradd -m -G wheel USERNAME
# passwd USERNAME
# passwd root

为了让 WSL 在启动时自动使用这个用户而非 root,编辑 /etc/wsl.conf

ini 复制代码
[boot]
systemd=true

[interop]
appendWindowsPath=false

[user]
default=USERNAME

设置 Fedora 为默认 WSL 发行版

在 Windows 侧的终端内依次执行:

console 复制代码
PS > wsl -t Fedora
PS > wsl -s Fedora
PS > wsl Fedora
[USERNAME@HOSTNAME ~]$ uname -a
Linux HOSTNAME 5.15.167.4-microsoft-standard-WSL2 #1 SMP Tue Nov 5 00:21:55 UTC 2024 x86_64 GNU/Linux

搞定!但还有一件事...

如果你在使用 Windows Terminal,那么在重新启动终端应用后会发现下拉菜单多了一个 Fedora 的启动项。 但是它的图标是 Linux 🐧,或者是 WSL 的图标,而不是 Fedora 的 logo。这是因为默认情况下,启动项 使用的就是 WSL 程序的图标。好在 Windows Terminal 允许我们从网络地址获取图标,所以在 Fedora 的 启动项设置里的"图标"一栏填入:https://fedoraproject.org/favicon.ico,对应的 JSON 如下:

json 复制代码
{
    "guid": "{34ca07e9-c6ab-4038-b75a-37648cdac022}",
    "hidden": false,
    "icon": "https://fedoraproject.org/favicon.ico",
    "name": "Fedora",
    "source": "Microsoft.WSL"
}
相关推荐
韦胖漫谈IT3 个月前
fedora下使用“软件(flatpak)”安装的Jetbrains Idea无法访问某些路径的解决方法
ide·flatpak·jetbrains·fedora
云卷风舒5 个月前
Fedora40使用Timeshift恢复数据后无法启动(解决办法)
linux·debug·fedora
sukida10010 个月前
BIOS主板(非UEFI)安装fedora40的方法
linux·运维·windows·fedora
穷人小水滴10 个月前
胖喵拼音输入法 (pmim-ibus) 安装说明
开源·flatpak·archlinux·ibus·拼音输入法·gnu/linux·fedora