ASUS ROG Ally 双引导

ASUS ROG Ally 双引导

Asus Rog Ally 默认使用 Windows 11 Home,但同时它也是一个普通的 PC,因此可以运行 Linux。该简易教程将会描述一个在内部 NVME 驱动器上实现双引导的方法。该教程的目标是实现 ChimeraOS 与 Windows 系统的双引导。

准备工作

  • USB Hub,或者扩展坞,推荐使用支持 PD 充电的扩展坞
  • 两个 USB 驱动器
  • 有线网络(推荐)
  • 有线键盘鼠标

准备镜像

Step 1

由于 ChimeraOS 的安装器并不支持同一个驱动器的双引导,因此需要先将它安装到一个独立设备中,随后复制到内部驱动器,一旦完成,该系统可以被正常的引导和更新。

该步骤需要使用两个驱动器,其中一个写入安装镜像,另一个作为安装目标。可以使用 etcher 或者 rufus 的 dd 模式写入安装镜像。

将写入安装镜像的 USB 驱动器,和目标 USB 驱动器同时接入扩展坞的 USB 接口,按住音量 - 和开机按钮打开 Rog Ally 的电源并进入 BIOS 设置界面。在 Boot Menu 中选择镜像所在的 USB 驱动器。镜像启动后将会进入安装界面。如果此时你的扩展坞有有线网络连接并且被安装镜像识别,则会直接进入安装步骤。否则需要设置无线网络用来下载系统镜像。

如果由于 MT7922e 驱动的问题,网卡没有正常启动,则可以通过长按电源按钮(大约10秒)直到电池指示灯熄灭,完成一次电源循环,重复上述步骤则可进入 WIFI 设置。连接完成后选择 Quit 则会回到安装界面。

目前 unstable 的镜像中需要选择 Advanced Install Install ChimeraOS with advanced options. 并在菜单中启用 Use Firmware Overrides DSDT/EDID (使用空格标记该选项)。接着等待系统安装完成。

安装完成后可以启动到该系统以检查安装是否正常。确认无误后可以关闭系统电源。

Step 2

在这个步骤,我们将需要把安装好的系统转移到内置的 NVME 驱动器中。因此该步骤使用一个 Linux Live CD 新建引导分区和数据分区,并复制所有的文件。

首先在安装镜像的 USB 驱动器中使用相同方法写入一个 Linux Live CD 的镜像。将该 USB 驱动器与安装好 ChimeraOS 的 USB 驱动器同时接入扩展坞的 USB 接口,按住音量 - 和开机按钮打开 Rog Ally 的电源并进入 BIOS 设置界面。在 Boot Menu 中选择 Live CD 所在的 USB 驱动器。以 Ubuntu 23.04 Desktop 为例,选择 Try Ubuntu 进入桌面。启动命令行。

首先查看当前分区表,可以从输出中找到头部分区结束的位置,Number 则代表分区号。假设安装 Windows 已分配的分区为 1-5,则新建的分区应该为引导分区6和数据分区7。请根据实际数据计算/替换数值。

sudo parted /dev/nvme0n1 print

下面的内容假设你的 NVME 驱动器的分区尾部有空余空间,头部已使用 8761MB 空间,那么我们可以通过如下指令新建一个 512MB 的 ESP 分区,并将后续空间分配为数据存储空间。

sudo parted /dev/nvme0n1 mkpart ESP fat32 8761MB 9298MB name 6 frzr_efi
sudo parted /dev/nvme0n1 set 6 boot on
sudo parted /dev/nvme0n1 mkpart primary btrfs 9298MB 100% name 7 frzr_root

接着新建两个挂载点

sudo mkdir /mnt/{source,target}

首先复制引导分区的内容

sudo mount /dev/sda1 /mnt/source
sudo mount /dev/nvme0n1p6 /mnt/target
sudo rsync -avP /mnt/source/* /mnt/target
sudo umount /mnt/source
sudo umount /mnt/target

然后复制数据分区的内容

挂载分区

sudo mount /dev/sda2 /mnt/source
sudo mount /dev/nvme0n1p7 /mnt/target

为数据盘创建 btrfs 快照用于转移数据. 注意: 镜像路径 chimeraos-43_7787158 取决于安装时的版本,可能会发生变化可以通过 ls /mnt/source/deployments/获取正确名称。

sudo btrfs subvolume snapshot /mnt/source/var /mnt/source/var.snapshot
sudo btrfs subvolume snapshot /mnt/source/home /mnt/source/home.snapshot
sudo btrfs subvolume snapshot /mnt/source/deployments/chimeraos-43_7787158 /mnt/source/chimeraos-43_7787158.snapshot
sudo btrfs subvolume snapshot /mnt/source/var/lib/portables /mnt/source/var-portables.snapshot
sudo btrfs subvolume snapshot /mnt/source/var/lib/machines /mnt/source/var-machines.snapshot
sudo btrfs subvolume snapshot /mnt/source/var/tmp /mnt/source/var-tmp.snapshot</code>

sudo btrfs subvolume snapshot -r /mnt/source/var.snapshot /mnt/source/var.readonly
sudo btrfs subvolume snapshot -r /mnt/source/home.snapshot /mnt/source/home.readonly
sudo btrfs subvolume snapshot -r /mnt/source/chimeraos-43_7787158.snapshot /mnt/source/chimeraos-43_7787158.readonly
sudo btrfs subvolume snapshot -r /mnt/source/var-portables.snapshot /mnt/source/var-portables.readonly
sudo btrfs subvolume snapshot -r /mnt/source/var-machines.snapshot /mnt/source/var-machines.readonly
sudo btrfs subvolume snapshot -r /mnt/source/var-tmp.snapshot /mnt/source/var-tmp.readonly

转移数据

sudo btrfs send /mnt/source/var.readonly | sudo btrfs receive /mnt/target/
sudo btrfs send /mnt/source/home.readonly | sudo btrfs receive /mnt/target/
sudo btrfs send /mnt/source/chimeraos-43_7787158.readonly | sudo btrfs receive /mnt/target/
sudo btrfs send /mnt/source/var-portables.readonly | sudo btrfs receive /mnt/target/
sudo btrfs send /mnt/source/var-machines.readonly | sudo btrfs receive /mnt/target/
sudo btrfs send /mnt/source/var-tmp.readonly | sudo btrfs receive /mnt/target/</code>

mkdir /mnt/target/deployments
sudo btrfs subvolume snapshot /mnt/target/var.readonly /mnt/target/var
sudo btrfs subvolume snapshot /mnt/target/home.readonly /mnt/target/home
sudo btrfs subvolume snapshot -r /mnt/target/chimeraos-43_7787158.readonly /mnt/target/deployments/chimeraos-43_430a76b
sudo btrfs subvolume snapshot /mnt/target/var-portables.readonly /mnt/target/var/lib/portables
sudo btrfs subvolume snapshot /mnt/target/var-machines.readonly /mnt/target/var/lib/machines
sudo btrfs subvolume snapshot /mnt/target/var-tmp.readonly /mnt/target/var/tmp

cp -r /mnt/source/{boot,etc,.etc,source} /mnt/target

删除快照

sudo btrfs subvolume delete /mnt/target/var.readonly
sudo btrfs subvolume delete /mnt/target/home.readonly
sudo btrfs subvolume delete /mnt/target/chimeraos-43_7787158.readonly
sudo btrfs subvolume delete /mnt/target/var-portables.readonly
sudo btrfs subvolume delete /mnt/target/var-machines.readonly
sudo btrfs subvolume delete /mnt/target/var-tmp.readonly</code>

sudo btrfs subvolume delete /mnt/source/var.readonly
sudo btrfs subvolume delete /mnt/source/home.readonly
sudo btrfs subvolume delete /mnt/source/chimeraos-43_7787158.readonly
sudo btrfs subvolume delete /mnt/source/var-portables.readonly
sudo btrfs subvolume delete /mnt/source/var-machines.readonly
sudo btrfs subvolume delete /mnt/source/var-tmp.readonly

卸除挂载

sudo umount /mnt/source
sudo umount /mnt/target

关闭 Live CD,并拔除 USB 驱动器。按住音量 - 和开机按钮打开 Rog Ally 的电源并进入 BIOS 设置界面。在 Boot Menu 中选择 Linux。不出意外的话,你将会进入ChimeraOS。

至此使用内置 NVME 驱动器实现的双引导已经实现。

Step 3

这一步将会使用 rEFInd 替代 ChimeraOS 的引导,实现在 rEFInd 界面选择引导的系统。目前 Rog Ally 的 BIOS 还不支持 rEFInd 界面下直接使用手柄控制,但如果后续完成了与 Steamdeck 相同的功能,则可以在 rEFInd 界面不借助键鼠选择引导的系统。

安装 rEFInd

sudo frzr-unlock
sudo pacman -S refind
sudo refind-install

重启系统后,就可以在 BIOS 设置中找到 rEFInd 启动项,将它设为首选启动项。之后就可以不通过 BIOS 切换所需启动的系统。

总结

上述内容简单描述了如何在内置的 NVME 驱动器中实现 Windows 和 ChimeraOS 的双引导。并通过 rEFInd 增强了双引导的可用性。

ChimeraOS 使用 frzr 引导,并使用 Label 识别系统分区,因此系统所在 btrfs 分区必须使用 Label frzr_root 而引导分区则使用 frzr_efi 作为 Label。只要在磁盘不出现第二个相同 Label 的分区,即可正常工作。

注意:ChimeraOS 正式发布支持 Rog Ally 的版本时,我将修改本教程并相应地包含一些屏幕截图。

EFS, IT, Linux
上一篇文章
使用 GitLab CI 构建 Windows 版 qBittorrent
下一篇文章
Tailscale 组网笔记

2条评论. Leave new

  • rog ally 安裝refind並且可以正確引導 但不支持ally本身的手把控制refind選單 這方面問題是否有解呢

    回复
    • 我给 ASUS 支持部门发过邮件,他们回复是要求已经提交给 BIOS 团队,但是没法告诉我什么时候有这个功能。目前实际上还是要键鼠,或者进一次 BIOS 界面,然后就可以用 Gamepad 了,没有特别完美的方案。参考 Steam Deck 应该是 BIOS 方面的问题。

      回复

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Fill out this field
Fill out this field
请输入有效的邮箱地址。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

keyboard_arrow_up