一直很希望尝试一下平铺式桌面,在虚拟机中跟着up主Reaper_6的视频Fedora 颜值拉满:Niri+ Dank Material Shell 一步到位体验了一下,感觉窗口管理确实要比堆叠桌面高效得多了。终究还是不满足于仅在VM中使用,最终决定把个人的主力环境部署成这个组合。中间遇到了很多坑,也借助LLM解决了不少的问题,这里做一个大概完成后的复盘。由于整个过程较为分散,跌跌撞撞,基本没有留下太多截图,总体通过个人印象与bash命令历史等来记录一下过程中的问题与大概的解决方案,已经尽量详实。
环境
笔记本:联想小新Pro 14 2023款
- CPU: AMD锐龙7 7840HS(核显)
- 内存: 32GB
- 系统:Win11(为运行wsl已开启Hyper-V虚拟化)
Fedora 43系统安装
-
关闭硬盘的BitLocker加密保护
-
由于之前是Windows11系统,默认情况下硬盘应该已经被BitLocker加密初始化了,要安装双系统,应该先将硬盘内容解密,以免出现相关问题
-
由于我只有一个1T的硬盘,全部分给了Windows的C盘,所以可以使用下面的命令查看BitLocker状态,可以看到硬盘上已经被BitLocker加密了的
cmd> manage-bde -status C: BitLocker 驱动器加密: 配置工具版本 10.0.26100 版权所有 (C) 2013 Microsoft Corporation。保留所有权利。 卷 C: [Windows] [OS 卷] 大小: 951.64 GB BitLocker 版本: 2.0 转换状态: 仅加密了已用空间 已加密百分比: 100.0% 加密方法: XTS-AES 128 保护状态: 保护关闭 锁定状态: 已解锁 标识字段: 未知 密钥保护器: 找不到 -
如果有恢复密钥,建议先把恢复密钥备份好(作用是在主板/TPM/BIOS变更、启动异常、Windows系统损坏、启动项更改等应急情况下解密硬盘数据)
-
使用下面的命令彻底解密C盘
cmdmanage-bde -off C: -
上面的解密命令是一个异步命令,执行完之后需要使用下面的命令查看当前解密进度,直到提示已完全解密为止
cmd> manage-bde -status C: BitLocker 驱动器加密: 配置工具版本 10.0.26100 版权所有 (C) 2013 Microsoft Corporation。保留所有权利。 卷 C: [Windows] [OS 卷] 大小: 951.64 GB BitLocker 版本: 无 转换状态: 完全解密 已加密百分比: 0.0% 加密方法: 无 保护状态: 保护关闭 锁定状态: 已解锁 标识字段: 无 密钥保护器: 找不到
-
-
关闭Windows快速启动
- 控制面板 → 电源选项 → 选择电源按钮的功能 → 更改当前不可用的设置 → 取消勾选"启用快速启动"
- 随后重启一次
-
为Fedora分配安装空间
-
磁盘管理 → 右键Windows(C:) → 压缩卷 → 输入想要的容量 →确认
-
注意上述操作完成后应该多了一块未分配空间,不要执行任何操作(新建卷、格式化、分配盘符等)

-
-
制作Fedora 43启动U盘
!WARNING
制作启动盘会清空U盘数据,建议使用空U盘或提前备份数据
- Fedora Media Writer,易用性很高且是官方推荐的启动盘制作工具
- 因为我想要比较定制化、节省空间的安装,所以我选择的是
Fedora Everything 43 Network Install这个镜像,可以在安装时选择要安装哪些软件包 - 选择iso镜像(这里也提供选从网络下载的选项) → 选择U盘 → 刻录
- 刻录完之后建议就弹出U盘,因为在某些情况下Windows可能会写入额外的元数据,导致后续在引导过程中的Test this media在4.8%进度时误报FAIL(参考)
-
使用启动U盘安装Fedora 43
-
重启后按Fn+F12进入临时启动设备选择,选择Test this media & Install Fedora 43
-
检查通过后就会进入Fedora的安装界面
-
最小化安装:Base Environment选择
Fedora Custom Operating System,Additional software全不选 -
这里最可能有问题的是INSTALLATION DESTINATION这里,由于我们按是双系统来安装的,所以需要挂载Windows的EFI分区,为保险起见我没有选择Automatic,选择Custom进行手动分区

-
在我的场景中显示的未知分区有
nvme0n1p1260 MiB:Windows的EFI分区nvme0n1p216 MiB:Windows的保留分区nvme0n1p3651.64 GiB ntfs:Windows的C盘nvme0n1p41.95 GiB ntfs:Windows恢复分区sda115.59 GiB iso9660:当前使用的启动U盘
-
选中
nvme0n1p1(EFI分区)- Mount Point:
/boot/efi - Desired Capacity、Device Type、File System不动,Reformat、Encrypt不勾选
- Update Settings
- Mount Point:
-
新建
/boot-
左下角
+- Mount Point:
/boot - Desired Capacity:
1 GiB或1024 MiB - 确认创建
- Mount Point:
-
随后左边会多出一个新选项,选中它后在右边确认
- Mount Point:
/boot - Device Type:
Standard Partition - File System:改成
ext4 - Reformat:可以勾选,这个新分区可以保持格式化
- Encrypt:不要勾
- Label:任意,如
fedora-boot
- Mount Point:
-
-
新建根分区
/-
左下角
+- Mount Point:
/boot - Desired Capacity:留空(会分配剩余可用空间)
- 确认创建
- Mount Point:
-
选中新建的根分区,在右边确认
-
Mount Point:
/ -
Device Type:如果它显示成 Btrfs 相关类型,就保持
-
File System:建议保持
btrfs -
Encrypt:不勾选
-
Reformat:可以勾选
-
Volume:保持默认
fedora_fedora- 整个Btrfs卷/池的名字
-
Label:可以留空
-
Name:
root- 这里设置的是挂载在Btrfs里的子卷名
-
Update Settings
-
-

-
-
-
安装完成后重启会自动进入GRUB引导,选择启动的系统(Fedora/Windows)
环境配置
由于我是最小化安装,不带有桌面环境,进入后为命令行界面
-
一条命令安装DankLinux(太方便啦!)
bashcurl -fsSL https://install.danklinux.com | sh-
选择窗口管理器(推荐niri)和终端(我选的ghostty)
-
安装过程中需要提供用户密码
-
安装脚本运行完毕后安装DankLinux专属登录界面
bashsudo dnf copr enable avengemedia/danklinux sudo dnf install dms-greeter -
重启即可进入niri桌面环境
-
System Check中出现缺少的包自行安装补齐即可
-
Android on Linux?Waydroid!
-
既然已经使用Linux系统了,Android其实也是一个定制化的Linux衍生系统,那么理论上来讲在Linux中运行Android应该比Windows更加原生和高效,通过询问LLM,我了解到Waydroid这个方案,应该是Linux中无感运行Android软件的最终解决方案
Waydroid:一种基于容器的启动完整Android系统的方法,在运行Wayland桌面环境的常规GNU/Linux系统上
-
Waydroid安装
-
具体应参考官方安装文档,对于Fedora系统可以直接从官方软件包仓库进行安装
bashsudo dnf install waydroid -
初始化------下载安装lineage系统(参考)
-
在国内网络环境下不建议直接运行Waydroid的可视化界面进行初始化,网络原因可能导致镜像下载失败
-
选择手动下载lineage的system和vendor镜像(在官方的SourceForge页面下载),注意一定要选择与本机架构相同的镜像版本(例如本机为
x86_64),本人选择的镜像文件分别为- lineage-20.0-20260312-MAINLINE-waydroid_x86_64-vendor.zip
- lineage-20.0-20260312-VANILLA-waydroid_x86_64-system.zip
-
解压上述镜像文件后应该为一个
system.img一个vendor.img,两个文件都放到/usr/share/waydroid-extra/images目录下后,执行bashsudo waydroid init -f即可初始化成功
-
waydroid服务状态查看/启动/设置自启动(似乎这并不意味着启动Waydroid里的Android系统,但要启动Android系统需要这个服务),建议直接设置自启动
bashsudo systemctl status waydroid-container.service sudo systemctl start waydroid-container.service sudo systemctl enable waydroid-container.service -
在我们的环境下配置完成后直接在App Launcher启动Waydroid即可进入Android系统!

-
-
网络问题相关配置
-
似乎刚进入时网络不通,应该是防火墙设置的问题,我们需要开放UDP的53和67端口、启用转发并添加对waydroid网卡的信任。以防出现问题(参考),我这里修改了Waydroid的网络配置文件
/usr/lib/waydroid/data/scripts/waydroid-net.sh,将LXC_USE_NFT设为false,这里的作用是让Waydroid使用iptables而不是nftables -
对于Fedora系统使用firewall-cmd进行配置,其他系统请查询对应命令
bashfirewall-cmd --zone=trusted --add-port=67/udp firewall-cmd --zone=trusted --add-port=53/udp firewall-cmd --zone=trusted --add-forward firewall-cmd --zone=trusted --add-interface=waydroid0 # 持久化 firewall-cmd --runtime-to-permanent
-
-
解决arm64 apk安装问题
-
默认情况下Waydroid只支持本机架构的apk安装,但市面上有很多软件不提供x86架构的安装包,这需要我们为Waydroid安装一个转译层,安装完成后即可无痛安装arm64架构的apk了,这里直接使用社区开发的waydroid_scripts进行一键安装即可
bashgit clone https://github.com/casualsnek/waydroid_script cd waydroid_script python3 -m venv venv venv/bin/pip install -r requirements.txt # AMD平台下libndk效率较高,Intel平台或许可以尝试libhoudini sudo venv/bin/python3 main.py install libndk -
waydroid_scripts还提供很多其它功能,如安装google全家桶、microg、magisk面具、隐藏状态栏等,请参考项目README
-
-
拷贝安装包到Waydroid的Download目录下
bashsudo cp ~/Downloads/xxx.apk ~/.local/share/waydroid/data/media/0/Download
-
虚拟机?脱离VMware生态,拥抱KVM+QEMU
-
Linux下的虚拟化,最出名的尤属KVM+QEMU这个原生级方案,通过LLM了解到Incus这个容器/虚拟机管理器,可以通过命令行的形式非常便捷地进行容器与虚拟机管理
-
安装Incus(可参考官方安装文档)
virt-viewer是一个用于显示虚拟机图形界面的轻量级客户端。通过SPICE或VNC协议连接到由QEMU/KVM启动的虚拟机窗口,后续的incus console命令就是对virt-viewer的调用封装
bashsudo dnf install incus virt-viewer newgrp incus-admin sudo usermod -aG incus-admin $USER sudo systemctl start --now incus.socket incus.service incus admin init -
配置防火墙规则
bashsudo firewall-cmd --zone=trusted --add-interface=incusbr0 --permanent -
配置并启动一个带桌面环境的Ubuntu虚拟机
bash# 虚拟机初始化 incus init images:ubuntu/24.04/desktop my-ubuntu --vm incus config set my-ubuntu limits.cpu 4 incus config set my-ubuntu limits.memory 4GiB # 安装音频驱动(如果启动后出现了音频设备报错) sudo dnf install qemu-audio-spice qemu-ui-spice-core # 启动虚拟机(start是让虚拟机跑起来,但不会弹出虚拟机的桌面) incus start my-ubuntu # 连接虚拟机桌面(在另一个终端运行) incus console my-ubuntu --type=vga # 关闭虚拟机 incus stop my-ubuntu
Windows
在incus中配置Windows虚拟机比Linux虚拟机略复杂一些,主要原因是Windows不自带KVM的VirtIO驱动,会导致进入安装程序后看不到硬盘,网络可能也会有问题。
++(本段内容由AI提供,本人还未实践)++ 这个问题最佳的解决方案应该是使用Distrobuilder重新封装Windows的iso镜像文件,这种方法会自动将VirtIO驱动注入到Windows的安装程序(WinPE)和系统镜像中,进入安装界面后能直接看到incus分配的虚拟硬盘,无需再手动加载驱动。这种方式生成的镜像会预置好incus-agent的基础环境,方便后续通过命令行管理,且在重封装时会针对虚拟化环境做优化。
本人在Gemini的"误导"下使用的是手动加载驱动的方法注入VirtIO驱动。
-
安装virtio-win
bashsudo wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo sudo dnf install virtio-win -
配置Win11虚拟机
bashincus init win11 --empty --vm incus config set win11 limits.cpu 4 incus config set win11 limits.memory 8GiB incus config device override win11 root size=64GiB incus config set win11 security.secureboot true incus config set win11 security.csm false # 使用UEFI模式启动 # 解决权限问题?不知道是否必要这样做 sudo mkdir -p /var/lib/incus/iso sudo mv ~/Downloads/win11.iso /var/lib/incus/iso/ sudo chmod 644 /var/lib/incus/iso/win11.iso sudo chcon -t svirt_home_t /var/lib/incus/iso/win11.iso # 添加安装介质与VirtIO驱动 incus config device add win11 install-media disk source=/var/lib/incus/iso/win11.iso boot.priority=10 # 其实有一个直接的命令(如下),但使用这条命令我实操的时候没找到对应驱动 ## incus config device add win11 virtio-drivers disk source=/usr/share/virtio-win/virtio-win.iso incus config set win11 raw.qemu -- "-drive file=/usr/share/virtio-win/virtio-win.iso,index=3,media=cdrom,if=ide" -
安装Win11虚拟机
-
通过
raw.qemu挂载了virtio-win.iso后,在安装界面的"你想将Windows安装在哪里?"窗口(此时是一片空白),需要点击"加载驱动程序"(Load driver),然后按以下路径寻找:-
viostor →w11 →amd64- 解释:
viostor 是块设备存储驱动, w11 对应Windows 11, amd64 是64位架构。
- 解释:
-
-
随后就可以正常进行Win系统的安装了
-
-
在Win11虚拟机中安装VirtIO驱动支持(否则鼠标会被困在里面!)
bash# 先把虚拟机关机 incus config unset win11 raw.qemu incus config device remove win11 install-media incus config device add win11 virtio-drivers disk source=/usr/share/virtio-win/virtio-win.iso # 随后开机、连接进入Win后像安装VMware Tool一样安装VirtIO驱动