找回密码
 立即注册
首页 业界区 业界 Fedora 43物理机部署复盘

Fedora 43物理机部署复盘

贡醮 3 小时前
一直很希望尝试一下平铺式桌面,在虚拟机中跟着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加密了的
      1. > manage-bde -status C:
      2. BitLocker 驱动器加密: 配置工具版本 10.0.26100
      3. 版权所有 (C) 2013 Microsoft Corporation。保留所有权利。
      4. 卷 C: [Windows]
      5. [OS 卷]
      6. 大小: 951.64 GB
      7. BitLocker 版本: 2.0
      8. 转换状态: 仅加密了已用空间
      9. 已加密百分比: 100.0%
      10. 加密方法: XTS-AES 128
      11. 保护状态: 保护关闭
      12. 锁定状态: 已解锁
      13. 标识字段: 未知
      14. 密钥保护器: 找不到
      复制代码
    • 如果有恢复密钥,建议先把恢复密钥备份好(作用是在主板/TPM/BIOS变更、启动异常、Windows系统损坏、启动项更改等应急情况下解密硬盘数据)
    • 使用下面的命令彻底解密C盘
      1. manage-bde -off C:
      复制代码
    • 上面的解密命令是一个异步命令,执行完之后需要使用下面的命令查看当前解密进度,直到提示已完全解密为止
      1. > manage-bde -status C:
      2. BitLocker 驱动器加密: 配置工具版本 10.0.26100
      3. 版权所有 (C) 2013 Microsoft Corporation。保留所有权利。
      4. 卷 C: [Windows]
      5. [OS 卷]
      6. 大小: 951.64 GB
      7. BitLocker 版本: 无
      8. 转换状态: 完全解密
      9. 已加密百分比: 0.0%
      10. 加密方法: 无
      11. 保护状态: 保护关闭
      12. 锁定状态: 已解锁
      13. 标识字段: 无
      14. 密钥保护器: 找不到
      复制代码

  • 关闭Windows快速启动

    • 控制面板 → 电源选项 → 选择电源按钮的功能 → 更改当前不可用的设置 → 取消勾选“启用快速启动”
    • 随后重启一次

  • 为Fedora分配安装空间

    • 磁盘管理 → 右键Windows(C → 压缩卷 → 输入想要的容量 →确认
    • 注意上述操作完成后应该多了一块未分配空间,不要执行任何操作(新建卷、格式化、分配盘符等)
      1.png


  • 制作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进行手动分区
      2.png


      • 在我的场景中显示的未知分区有

        • ​nvme0n1p1 260 MiB:Windows的EFI分区
        • ​nvme0n1p2 16 MiB:Windows的保留分区
        • ​nvme0n1p3 651.64 GiB ntfs:Windows的C盘
        • ​nvme0n1p4 1.95 GiB ntfs:Windows恢复分区
        • ​sda 115.59 GiB iso9660:当前使用的启动U盘

      • 选中nvme0n1p1(EFI分区)

        • Mount Point:/boot/efi
        • Desired Capacity、Device Type、File System不动,Reformat、Encrypt不勾选
        • Update Settings

      • 新建/boot

        • 左下角+

          • Mount Point:/boot
          • Desired Capacity:1 GiB​或1024 MiB
          • 确认创建

        • 随后左边会多出一个新选项,选中它后在右边确认

          • Mount Point:/boot
          • Device Type:Standard Partition
          • File System:改成ext4
          • Reformat:可以勾选,这个新分区可以保持格式化
          • Encrypt:不要勾
          • Label:任意,如fedora-boot


      • 新建根分区/

        • 左下角+

          • Mount Point:/boot
          • Desired Capacity:留空(会分配剩余可用空间)
          • 确认创建

        • 选中新建的根分区,在右边确认

          • Mount Point:/
          • Device Type:如果它显示成 Btrfs 相关类型,就保持
          • File System:建议保持 btrfs
          • Encrypt:不勾选
          • Reformat:可以勾选
          • Volume:保持默认fedora_fedora

            • 整个Btrfs卷/池的名字

          • Label:可以留空
          • Name:root

            • 这里设置的是挂载在Btrfs里的子卷名

          • Update Settings


      3.png



  • 安装完成后重启会自动进入GRUB引导,选择启动的系统(Fedora/Windows)
环境配置

  由于我是最小化安装,不带有桌面环境,进入后为命令行界面

  • 一条命令安装DankLinux(太方便啦!)
    1. curl -fsSL https://install.danklinux.com | sh
    复制代码

    • 选择窗口管理器(推荐niri)和终端(我选的ghostty)
    • 安装过程中需要提供用户密码
    • 安装脚本运行完毕后安装DankLinux专属登录界面
      1. sudo dnf copr enable avengemedia/danklinux
      2. 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系统可以直接从官方软件包仓库进行安装
      1. sudo 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目录下后,执行
        1. sudo waydroid init -f
        复制代码
        即可初始化成功
      • waydroid服务状态查看/启动/设置自启动(似乎这并不意味着启动Waydroid里的Android系统,但要启动Android系统需要这个服务),建议直接设置自启动
        1. sudo systemctl status waydroid-container.service
        2. sudo systemctl start waydroid-container.service
        3. sudo systemctl enable waydroid-container.service
        复制代码
      • 在我们的环境下配置完成后直接在App Launcher启动Waydroid即可进入Android系统!
        4.png


    • 网络问题相关配置

      • 似乎刚进入时网络不通,应该是防火墙设置的问题,我们需要开放UDP的53和67端口、启用转发并添加对waydroid网卡的信任。以防出现问题(参考),我这里修改了Waydroid的网络配置文件/usr/lib/waydroid/data/scripts/waydroid-net.sh​,将LXC_USE_NFT​设为false,这里的作用是让Waydroid使用iptables而不是nftables
      • 对于Fedora系统使用firewall-cmd进行配置,其他系统请查询对应命令
        1. firewall-cmd --zone=trusted --add-port=67/udp
        2. firewall-cmd --zone=trusted --add-port=53/udp
        3. firewall-cmd --zone=trusted --add-forward
        4. firewall-cmd --zone=trusted --add-interface=waydroid0
        5. # 持久化
        6. firewall-cmd --runtime-to-permanent
        复制代码

    • 解决arm64 apk安装问题

      • 默认情况下Waydroid只支持本机架构的apk安装,但市面上有很多软件不提供x86架构的安装包,这需要我们为Waydroid安装一个转译层,安装完成后即可无痛安装arm64架构的apk了,这里直接使用社区开发的waydroid_scripts进行一键安装即可
        1. git clone https://github.com/casualsnek/waydroid_script
        2. cd waydroid_script
        3. python3 -m venv venv
        4. venv/bin/pip install -r requirements.txt
        5. # AMD平台下libndk效率较高,Intel平台或许可以尝试libhoudini
        6. sudo venv/bin/python3 main.py install libndk
        复制代码
      • waydroid_scripts还提供很多其它功能,如安装google全家桶、microg、magisk面具、隐藏状态栏等,请参考项目README

    • 拷贝安装包到Waydroid的Download目录下
      1. sudo 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的调用封装
    1. sudo dnf install incus virt-viewer
    2. newgrp incus-admin
    3. sudo usermod -aG incus-admin $USER
    4. sudo systemctl start --now incus.socket incus.service
    5. incus admin init
    复制代码
  • 配置防火墙规则
    1. sudo firewall-cmd --zone=trusted --add-interface=incusbr0 --permanent
    复制代码
  • 配置并启动一个带桌面环境的Ubuntu虚拟机
    1. # 虚拟机初始化
    2. incus init images:ubuntu/24.04/desktop my-ubuntu --vm
    3. incus config set my-ubuntu limits.cpu 4
    4. incus config set my-ubuntu limits.memory 4GiB
    5. # 安装音频驱动(如果启动后出现了音频设备报错)
    6. sudo dnf install qemu-audio-spice qemu-ui-spice-core
    7. # 启动虚拟机(start是让虚拟机跑起来,但不会弹出虚拟机的桌面)
    8. incus start my-ubuntu
    9. # 连接虚拟机桌面(在另一个终端运行)
    10. incus console my-ubuntu --type=vga
    11. # 关闭虚拟机
    12. incus stop my-ubuntu
    复制代码
    5.png

Windows

  在incus中配置Windows虚拟机比Linux虚拟机略复杂一些,主要原因是Windows不自带KVM的VirtIO驱动,会导致进入安装程序后看不到硬盘,网络可能也会有问题。
  (本段内容由AI提供,本人还未实践)这个问题最佳的解决方案应该是使用Distrobuilder重新封装Windows的iso镜像文件,这种方法会自动将VirtIO驱动注入到Windows的安装程序(WinPE)和系统镜像中,进入安装界面后能直接看到incus分配的虚拟硬盘,无需再手动加载驱动。这种方式生成的镜像会预置好incus-agent的基础环境,方便后续通过命令行管理,且在重封装时会针对虚拟化环境做优化。
  本人在Gemini的“误导”下使用的是手动加载驱动的方法注入VirtIO驱动。

  • 安装virtio-win
    1. sudo wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo
    2. sudo dnf install virtio-win
    复制代码
  • 配置Win11虚拟机
    1. incus init win11 --empty --vm
    2. incus config set win11 limits.cpu 4
    3. incus config set win11 limits.memory 8GiB
    4. incus config device override win11 root size=64GiB
    5. incus config set win11 security.secureboot true
    6. incus config set win11 security.csm false # 使用UEFI模式启动
    7. # 解决权限问题?不知道是否必要这样做
    8. sudo mkdir -p /var/lib/incus/iso
    9. sudo mv ~/Downloads/win11.iso /var/lib/incus/iso/
    10. sudo chmod 644 /var/lib/incus/iso/win11.iso
    11. sudo chcon -t svirt_home_t /var/lib/incus/iso/win11.iso
    12. # 添加安装介质与VirtIO驱动
    13. incus config device add win11 install-media disk source=/var/lib/incus/iso/win11.iso boot.priority=10
    14. # 其实有一个直接的命令(如下),但使用这条命令我实操的时候没找到对应驱动
    15. ## incus config device add win11 virtio-drivers disk source=/usr/share/virtio-win/virtio-win.iso
    16. 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驱动支持(否则鼠标会被困在里面!)
    1. # 先把虚拟机关机
    2. incus config unset win11 raw.qemu
    3. incus config device remove win11 install-media
    4. incus config device add win11 virtio-drivers disk source=/usr/share/virtio-win/virtio-win.iso
    5. # 随后开机、连接进入Win后像安装VMware Tool一样安装VirtIO驱动
    复制代码
    6.png


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册