Fedora 43物理机部署复盘
<blockquote><p>一直很希望尝试一下平铺式桌面,在虚拟机中跟着up主Reaper_6的视频Fedora 颜值拉满:Niri+ Dank Material Shell 一步到位体验了一下,感觉窗口管理确实要比堆叠桌面高效得多了。终究还是不满足于仅在VM中使用,最终决定把个人的主力环境部署成这个组合。中间遇到了很多坑,也借助LLM解决了不少的问题,这里做一个大概完成后的复盘。由于整个过程较为分散,跌跌撞撞,基本没有留下太多截图,总体通过个人印象与bash命令历史等来记录一下过程中的问题与大概的解决方案,已经尽量详实。</p>
</blockquote>
<h2 id="环境">环境</h2>
<p> 笔记本:联想小新Pro 14 2023款</p>
<ul>
<li>CPU: AMD锐龙7 7840HS(核显)</li>
<li>内存: 32GB</li>
<li>系统:Win11(为运行wsl已开启Hyper-V虚拟化)</li>
</ul>
<h2 id="fedora-43系统安装">Fedora 43系统安装</h2>
<ul>
<li>
<p>关闭硬盘的BitLocker加密保护</p>
<ul>
<li>
<p>由于之前是Windows11系统,默认情况下硬盘应该已经被BitLocker加密初始化了,要安装双系统,应该先将硬盘内容解密,以免出现相关问题</p>
</li>
<li>
<p>由于我只有一个1T的硬盘,全部分给了Windows的C盘,所以可以使用下面的命令查看BitLocker状态,可以看到硬盘上已经被BitLocker加密了的</p>
<pre><code class="language-cmd">> manage-bde -status C:
BitLocker 驱动器加密: 配置工具版本 10.0.26100
版权所有 (C) 2013 Microsoft Corporation。保留所有权利。
卷 C:
大小: 951.64 GB
BitLocker 版本: 2.0
转换状态: 仅加密了已用空间
已加密百分比: 100.0%
加密方法: XTS-AES 128
保护状态: 保护关闭
锁定状态: 已解锁
标识字段: 未知
密钥保护器: 找不到
</code></pre>
</li>
<li>
<p>如果有恢复密钥,建议先把恢复密钥备份好(作用是在主板/TPM/BIOS变更、启动异常、Windows系统损坏、启动项更改等应急情况下解密硬盘数据)</p>
</li>
<li>
<p>使用下面的命令彻底解密C盘</p>
<pre><code class="language-cmd">manage-bde -off C:
</code></pre>
</li>
<li>
<p>上面的解密命令是一个异步命令,执行完之后需要使用下面的命令查看当前解密进度,直到提示已完全解密为止</p>
<pre><code class="language-cmd">> manage-bde -status C:
BitLocker 驱动器加密: 配置工具版本 10.0.26100
版权所有 (C) 2013 Microsoft Corporation。保留所有权利。
卷 C:
大小: 951.64 GB
BitLocker 版本: 无
转换状态: 完全解密
已加密百分比: 0.0%
加密方法: 无
保护状态: 保护关闭
锁定状态: 已解锁
标识字段: 无
密钥保护器: 找不到
</code></pre>
</li>
</ul>
</li>
<li>
<p>关闭Windows快速启动</p>
<ul>
<li>控制面板 → 电源选项 → 选择电源按钮的功能 → 更改当前不可用的设置 → 取消勾选“启用快速启动”</li>
<li>随后重启一次</li>
</ul>
</li>
<li>
<p>为Fedora分配安装空间</p>
<ul>
<li>
<p>磁盘管理 → 右键Windows(C:) → 压缩卷 → 输入想要的容量 →确认</p>
</li>
<li>
<p>注意上述操作完成后应该多了一块未分配空间,不要执行任何操作(新建卷、格式化、分配盘符等)</p>
<p><img src="https://img2024.cnblogs.com/blog/2918638/202604/2918638-20260404111426975-751931043.png" alt="图片" loading="lazy"></p>
</li>
</ul>
</li>
<li>
<p>制作Fedora 43启动U盘</p>
<blockquote>
<p>[!WARNING]<br>
制作启动盘会清空U盘数据,建议使用空U盘或提前备份数据</p>
</blockquote>
<ul>
<li>Fedora Media Writer,易用性很高且是官方推荐的启动盘制作工具</li>
<li>因为我想要比较定制化、节省空间的安装,所以我选择的是<code>Fedora Everything 43 Network Install</code>这个镜像,可以在安装时选择要安装哪些软件包</li>
<li>选择iso镜像(这里也提供选从网络下载的选项) → 选择U盘 → 刻录</li>
<li>刻录完之后建议就弹出U盘,因为在某些情况下Windows可能会写入额外的元数据,导致后续在引导过程中的Test this media在4.8%进度时误报FAIL(参考)</li>
</ul>
</li>
<li>
<p>使用启动U盘安装Fedora 43</p>
<ul>
<li>
<p>重启后按Fn+F12进入临时启动设备选择,选择Test this media & Install Fedora 43</p>
</li>
<li>
<p>检查通过后就会进入Fedora的安装界面</p>
</li>
<li>
<p>最小化安装:Base Environment选择<code>Fedora Custom Operating System</code>,Additional software全不选</p>
</li>
<li>
<p>这里最可能有问题的是INSTALLATION DESTINATION这里,由于我们按是双系统来安装的,所以需要挂载Windows的EFI分区,为保险起见我没有选择Automatic,选择Custom进行手动分区</p>
<p><img src="https://img2024.cnblogs.com/blog/2918638/202604/2918638-20260404111449483-1829100001.png" alt="图片" loading="lazy"></p>
<ul>
<li>
<p>在我的场景中显示的未知分区有</p>
<ul>
<li><code>nvme0n1p1</code> 260 MiB:Windows的EFI分区</li>
<li><code>nvme0n1p2</code> 16 MiB:Windows的保留分区</li>
<li><code>nvme0n1p3</code> 651.64 GiB ntfs:Windows的C盘</li>
<li><code>nvme0n1p4</code> 1.95 GiB ntfs:Windows恢复分区</li>
<li><code>sda</code> 115.59 GiB iso9660:当前使用的启动U盘</li>
</ul>
</li>
<li>
<p>选中<code>nvme0n1p1</code>(EFI分区)</p>
<ul>
<li>Mount Point:<code>/boot/efi</code></li>
<li>Desired Capacity、Device Type、File System不动,Reformat、Encrypt不勾选</li>
<li>Update Settings</li>
</ul>
</li>
<li>
<p>新建<code>/boot</code></p>
<ul>
<li>
<p>左下角<code>+</code></p>
<ul>
<li>Mount Point:<code>/boot</code></li>
<li>Desired Capacity:<code>1 GiB</code>或<code>1024 MiB</code></li>
<li>确认创建</li>
</ul>
</li>
<li>
<p>随后左边会多出一个新选项,选中它后在右边确认</p>
<ul>
<li>Mount Point:<code>/boot</code></li>
<li>Device Type:<code>Standard Partition</code></li>
<li>File System:改成<code>ext4</code></li>
<li>Reformat:可以勾选,这个新分区可以保持格式化</li>
<li>Encrypt:不要勾</li>
<li>Label:任意,如<code>fedora-boot</code></li>
</ul>
</li>
</ul>
</li>
<li>
<p>新建根分区<code>/</code></p>
<ul>
<li>
<p>左下角<code>+</code></p>
<ul>
<li>Mount Point:<code>/boot</code></li>
<li>Desired Capacity:留空(会分配剩余可用空间)</li>
<li>确认创建</li>
</ul>
</li>
<li>
<p>选中新建的根分区,在右边确认</p>
<ul>
<li>
<p>Mount Point:<code>/</code></p>
</li>
<li>
<p>Device Type:如果它显示成 Btrfs 相关类型,就保持</p>
</li>
<li>
<p>File System:建议保持 <code>btrfs</code></p>
</li>
<li>
<p>Encrypt:不勾选</p>
</li>
<li>
<p>Reformat:可以勾选</p>
</li>
<li>
<p>Volume:保持默认<code>fedora_fedora</code></p>
<ul>
<li>整个Btrfs卷/池的名字</li>
</ul>
</li>
<li>
<p>Label:可以留空</p>
</li>
<li>
<p>Name:<code>root</code></p>
<ul>
<li>这里设置的是挂载在Btrfs里的子卷名</li>
</ul>
</li>
<li>
<p>Update Settings</p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><img src="https://img2024.cnblogs.com/blog/2918638/202604/2918638-20260404111558544-328614030.png" alt="图片" loading="lazy"></p>
</li>
</ul>
</li>
<li>
<p>安装完成后重启会自动进入GRUB引导,选择启动的系统(Fedora/Windows)</p>
</li>
</ul>
<h2 id="环境配置">环境配置</h2>
<p> 由于我是最小化安装,不带有桌面环境,进入后为命令行界面</p>
<ul>
<li>
<p>一条命令安装DankLinux(太方便啦!)</p>
<pre><code class="language-bash">curl -fsSL https://install.danklinux.com | sh
</code></pre>
<ul>
<li>
<p>选择窗口管理器(推荐niri)和终端(我选的ghostty)</p>
</li>
<li>
<p>安装过程中需要提供用户密码</p>
</li>
<li>
<p>安装脚本运行完毕后安装DankLinux专属登录界面</p>
<pre><code class="language-bash">sudo dnf copr enable avengemedia/danklinux
sudo dnf install dms-greeter
</code></pre>
</li>
<li>
<p>重启即可进入niri桌面环境</p>
</li>
<li>
<p>System Check中出现缺少的包自行安装补齐即可</p>
</li>
</ul>
</li>
</ul>
<h2 id="android-on-linuxwaydroid">Android on Linux?Waydroid!</h2>
<ul>
<li>
<p>既然已经使用Linux系统了,Android其实也是一个定制化的Linux衍生系统,那么理论上来讲在Linux中运行Android应该比Windows更加原生和高效,通过询问LLM,我了解到Waydroid这个方案,应该是Linux中无感运行Android软件的最终解决方案</p>
<blockquote>
<p>Waydroid:一种基于容器的启动完整Android系统的方法,在运行Wayland桌面环境的常规GNU/Linux系统上</p>
</blockquote>
</li>
<li>
<p>Waydroid安装</p>
<ul>
<li>
<p>具体应参考官方安装文档,对于Fedora系统可以直接从官方软件包仓库进行安装</p>
<pre><code class="language-bash">sudo dnf install waydroid
</code></pre>
</li>
<li>
<p>初始化——下载安装lineage系统(参考)</p>
<ul>
<li>
<p>在国内网络环境下不建议直接运行Waydroid的可视化界面进行初始化,网络原因可能导致镜像下载失败</p>
</li>
<li>
<p>选择手动下载lineage的system和vendor镜像(在官方的SourceForge页面下载),注意一定要选择与本机架构相同的镜像版本(例如本机为<code>x86_64</code>),本人选择的镜像文件分别为</p>
<ul>
<li>lineage-20.0-20260312-MAINLINE-waydroid_x86_64-vendor.zip</li>
<li>lineage-20.0-20260312-VANILLA-waydroid_x86_64-system.zip</li>
</ul>
</li>
<li>
<p>解压上述镜像文件后应该为一个<code>system.img</code>一个<code>vendor.img</code>,两个文件都放到<code>/usr/share/waydroid-extra/images</code>目录下后,执行</p>
<pre><code class="language-bash">sudo waydroid init -f
</code></pre>
<p>即可初始化成功</p>
</li>
<li>
<p>waydroid服务状态查看/启动/设置自启动(似乎这并不意味着启动Waydroid里的Android系统,但要启动Android系统需要这个服务),建议直接设置自启动</p>
<pre><code class="language-bash">sudo systemctl status waydroid-container.service
sudo systemctl start waydroid-container.service
sudo systemctl enable waydroid-container.service
</code></pre>
</li>
<li>
<p>在我们的环境下配置完成后直接在App Launcher启动Waydroid即可进入Android系统!</p>
<p><img src="https://img2024.cnblogs.com/blog/2918638/202604/2918638-20260404111625689-1266339659.png" alt="图片" loading="lazy"></p>
</li>
</ul>
</li>
<li>
<p>网络问题相关配置</p>
<ul>
<li>
<p>似乎刚进入时网络不通,应该是防火墙设置的问题,我们需要开放UDP的53和67端口、启用转发并添加对waydroid网卡的信任。以防出现问题(参考),我这里修改了Waydroid的网络配置文件<code>/usr/lib/waydroid/data/scripts/waydroid-net.sh</code>,将<code>LXC_USE_NFT</code>设为<code>false</code>,这里的作用是让Waydroid使用iptables而不是nftables</p>
</li>
<li>
<p>对于Fedora系统使用firewall-cmd进行配置,其他系统请查询对应命令</p>
<pre><code class="language-bash">firewall-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
</code></pre>
</li>
</ul>
</li>
<li>
<p>解决arm64 apk安装问题</p>
<ul>
<li>
<p>默认情况下Waydroid只支持本机架构的apk安装,但市面上有很多软件不提供x86架构的安装包,这需要我们为Waydroid安装一个转译层,安装完成后即可无痛安装arm64架构的apk了,这里直接使用社区开发的waydroid_scripts进行一键安装即可</p>
<pre><code class="language-bash">git 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
</code></pre>
</li>
<li>
<p>waydroid_scripts还提供很多其它功能,如安装google全家桶、microg、magisk面具、隐藏状态栏等,请参考项目README</p>
</li>
</ul>
</li>
<li>
<p>拷贝安装包到Waydroid的Download目录下</p>
<pre><code class="language-bash">sudo cp ~/Downloads/xxx.apk ~/.local/share/waydroid/data/media/0/Download
</code></pre>
</li>
</ul>
</li>
</ul>
<h2 id="虚拟机脱离vmware生态拥抱kvmqemu">虚拟机?脱离VMware生态,拥抱KVM+QEMU</h2>
<ul>
<li>
<p>Linux下的虚拟化,最出名的尤属KVM+QEMU这个原生级方案,通过LLM了解到Incus这个容器/虚拟机管理器,可以通过命令行的形式非常便捷地进行容器与虚拟机管理</p>
</li>
<li>
<p>安装Incus(可参考官方安装文档)</p>
<blockquote>
<p>virt-viewer是一个用于显示虚拟机图形界面的轻量级客户端。通过SPICE或VNC协议连接到由QEMU/KVM启动的虚拟机窗口,后续的incus console命令就是对virt-viewer的调用封装</p>
</blockquote>
<pre><code class="language-bash">sudo 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
</code></pre>
</li>
<li>
<p>配置防火墙规则</p>
<pre><code class="language-bash">sudo firewall-cmd --zone=trusted --add-interface=incusbr0 --permanent
</code></pre>
</li>
<li>
<p>配置并启动一个带桌面环境的Ubuntu虚拟机</p>
<pre><code class="language-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
</code></pre>
<p><img src="https://img2024.cnblogs.com/blog/2918638/202604/2918638-20260404111653093-1570166101.png" alt="1775272609961339855" loading="lazy"></p>
</li>
</ul>
<h3 id="windows">Windows</h3>
<p> 在incus中配置Windows虚拟机比Linux虚拟机略复杂一些,主要原因是Windows不自带KVM的VirtIO驱动,会导致进入安装程序后看不到硬盘,网络可能也会有问题。</p>
<p> <u>(本段内容由AI提供,本人还未实践)</u>这个问题最佳的解决方案应该是使用Distrobuilder重新封装Windows的iso镜像文件,这种方法会自动将VirtIO驱动注入到Windows的安装程序(WinPE)和系统镜像中,进入安装界面后能直接看到incus分配的虚拟硬盘,无需再手动加载驱动。这种方式生成的镜像会预置好<code>incus-agent</code>的基础环境,方便后续通过命令行管理,且在重封装时会针对虚拟化环境做优化。</p>
<p> 本人在Gemini的“误导”下使用的是手动加载驱动的方法注入VirtIO驱动。</p>
<ul>
<li>
<p>安装virtio-win</p>
<pre><code class="language-bash">sudo wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo
sudo dnf install virtio-win
</code></pre>
</li>
<li>
<p>配置Win11虚拟机</p>
<pre><code class="language-bash">incus 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"
</code></pre>
</li>
<li>
<p>安装Win11虚拟机</p>
<ul>
<li>
<p>通过<code>raw.qemu</code>挂载了<code>virtio-win.iso</code>后,在安装界面的“你想将Windows安装在哪里?”窗口(此时是一片空白),需要点击“加载驱动程序”(Load driver),然后按以下路径寻找:</p>
<ul>
<li>
<p><code>viostor</code> → <code>w11</code> → <code>amd64</code></p>
<ul>
<li><em>解释:</em><em><code>viostor</code></em><em>是块设备存储驱动,</em><em><code>w11</code></em><em>对应Windows 11,</em><em><code>amd64</code></em><em>是64位架构。</em></li>
</ul>
</li>
</ul>
</li>
<li>
<p>随后就可以正常进行Win系统的安装了</p>
</li>
</ul>
</li>
<li>
<p>在Win11虚拟机中安装VirtIO驱动支持(否则鼠标会被困在里面!)</p>
<pre><code class="language-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驱动
</code></pre>
<p><img src="https://img2024.cnblogs.com/blog/2918638/202604/2918638-20260404111715338-1825968884.png" alt="图片" loading="lazy"></p>
</li>
</ul><br><br>
来源:https://www.cnblogs.com/lentikr/p/19820568/260403_fedora_setup
頁:
[1]