在 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"
}
相关推荐
穷人小水滴1 天前
在 VirtualBox 虚拟机中安装 Fedora CoreOS 操作系统
linux·virtualbox·fedora
sukida1004 个月前
BIOS主板(非UEFI)安装fedora42的方法
linux·windows·fedora
云卷风舒5 个月前
Fedora 40 开机启动失败,不重装系统,如何恢复成功 ?(附带恢复过程)
人工智能·claude·fedora
韦胖漫谈IT9 个月前
fedora下使用“软件(flatpak)”安装的Jetbrains Idea无法访问某些路径的解决方法
ide·flatpak·jetbrains·fedora
云卷风舒1 年前
Fedora40使用Timeshift恢复数据后无法启动(解决办法)
linux·debug·fedora
sukida1001 年前
BIOS主板(非UEFI)安装fedora40的方法
linux·运维·windows·fedora
穷人小水滴1 年前
胖喵拼音输入法 (pmim-ibus) 安装说明
开源·flatpak·archlinux·ibus·拼音输入法·gnu/linux·fedora