2023-9-23 14:40 /
硬件环境:ASUS-B550m  AMD-5600X  Intel-ARC-750

基于各种原因,需要在一个电脑上同时使用Windows11/ArchLinux,Windows11用来日常娱乐;Linux用来学习折腾,同时又希望互相隔离,各系统充分利用硬件性能。于是采用了外挂Ventoy固态盘(USB 3.1 gen2) + 引导本地固态硬盘上的ArchLinux镜像方式,完美满足需求。过程中遇到了个别问题,搜索发现相关的资料比较少,就此记录。

本来基于Hyper-v的虚拟机可以解决的,不过虚拟机的桌面分辨率最大只能到1080p,为了使用linux下利用显卡,必须选择内核较新的Linux(比如Arch),而且GPU直通限制颇大,其他虚拟机有类似的问题


过程就是正常的Linux to Go流程,ArchLinux + KDE(wayland)+ zsh、vtoyboot依次安装,生成vdi
格式的镜像,使用VentoyVlnk生成该镜像的链接文件存放于外挂固态盘的根目录,然后就可以重启电脑进入启动菜单,此时遇到第一个坑。

1. 无法启动
ventoy选中镜像后提示
No bootfile found for UEFI!
Maybe the image does not support X64 UEFI
虚拟机启动没有问题,检查发现
/EFI/BOOT/BOOTx64.EFI
文件不存在,执行
sudo cp /efi/EFI/arch/grubx64.efi /efi/EFI/boot/grubx64.efi 
重启后问题解决,不过根据以下UEFI引导顺序介绍也未能得出该问题产生的原因,明明都在efi目录下而且虚拟机启动也无问题。
在UEFI系统中,启动过程中的引导顺序是由UEFI固件决定的。通常情况下,UEFI固件会搜索EFI系统分区(通常是一个FAT32格式的分区)中的EFI目录,然后根据一定的算法选择合适的引导程序进行启动。如果在EFI目录下同时存在grubx64.efi和bootx64.efi这两个文件,UEFI固件会根据它们的文件名、文件路径和文件大小等信息进行排序,然后选择一个更优先的文件进行启动。这个过程可能因UEFI固件的版本和厂商而有所不同,一般情况下,grubx64.efi会比bootx64.efi优先启动,因为它是一个功能更强大的引导管理器,能够列出可用的操作系统和内核,并提供更多的启动选项。不过,如果用户希望通过bootx64.efi启动操作系统的安装程序或其他引导管理器,可以将bootx64.efi文件命名为更优先的文件名,这样就可以让它优先启动了。
知乎上有人提到反复验证后,怀疑是cfdisk的问题,改用fdisk就没问题,恰巧我安装的时候也用了cfdisk.


2. 声音时有时无

网上的解决方案都无效,后来发现是pulseaudio和pipewire和冲突,任意卸载一个后解决。