Acknowledgement: 本文为链接里的教程的简明中文版本,last accessed 2023年2月3日。
Disclaimer:本文主要为翻译,在个别地方添加了原文没有细讲的操作细节,在个别地方添加了译者的操作心得。在安装完rEFInd后想要重新安装Windows系统小节前译者都通过操作验证了正确性。读者因为操作对于自己SteamDeck的损坏与译者无关。
前言
折腾steam deck双系统折腾得痛苦不堪,陆续经历了bios打不开steamOS卡在加载画面(一个圈一个弧),长按电源+音量(+/-)连bios都打不开直接进windows两个阶段,就在准备写安装盘重装的时候,这个东西救了我狗命!!!
安装流程
(选)更新BIOS
SteamOS
- 进入SteamOS桌面模式
- 打开Konsole
- 按顺序输入指令
git clone https://github.com/jlobue10/SteamDeck_rEFInd/ cd SteamDeck_rEFInd chmod +x bios_update_SteamOS_prep.sh ./bios_update_SteamOS_prep.sh
Windows
- 如果已经按照添加一个Windows任务,始终将rEFInd作为最高引导优先级添加了任务,则首先禁用这个任务:右键任务选择禁用。
- 删除启动程序设置:以管理员身份打开Powershell,运行
bios_install_prep.ps1
脚本。 - 下载DeckFlash_Win.7z,下载最新的Steam Deck BIOS。将
.fd
BIOS文件放在与解压缩的InsydeH2O文件夹相同的目录中,并确保它是其中唯一的BIOS更新文件。 - 运行
H2OFFT-Wx64.exe
,点击确定安装.fd
文件。 - 重启电脑,进入Windows,重启第一步中禁用的任务并手动重新运行该任务一次。
该方法也可以用于降级BIOS。
安装rEFInd
正文开始
- 首先,确保按照进不去SteamOS中的步骤1-4走可以看到你的SteamOS和Win的启动文件分别位于:
/esp/efi/steamos/steamcl.efi
和/esp/efi/Microsoft/Boot/bootmgfw.efi
位置。 - 进入SteamOS桌面模式(启动SteamOS,按STEAM键->电源->桌面模式)
- 打开Konsole
- 按顺序输入指令:(如果上文克隆过仓库就不用克隆了)
或者,基于pacman的安装遇到问题,可以采用无pacman安装方法。git clone https://github.com/jlobue10/SteamDeck_rEFInd/ cd SteamDeck_rEFInd chmod +x SteamDeck_rEFInd_install.sh ./SteamDeck_rEFInd_install.sh
chmod +x refind_install_no_pacman.sh ./refind_install_no_pacman.sh
- (选)启动,rEFInd界面启动后后5秒钟自动进入默认系统(SteamOS)。修改
refind.conf
文件可以调整等待时间。如果值为-1则自动启动默认系统,除非在预启动阶段按下了任意按键或者触摸了触摸板。 - 选择操作系统:使用右边的触控板和R2按钮,或者十字键和A按钮。
理论上这样就可以了,但是仍然会出现开机时直接进入Windows系统的问题。因此增加下面一节,如果进入了Windows系统则唤起rEFInd。
添加一个Windows任务,始终将rEFInd作为最高引导优先级
- 进入Windows系统
- 将github_repo/Windows/bootsequence-rEFInd-first.ps1保存到本地
- 打开任务调度器(Win+R运行taskschd.msc)
- 右键单击任务计划程序库,新建文件夹。
- 然后选择该文件夹。点击“创建基本任务”,起名,点击下一步。
- 触发器:选择“当前用户登录时”,点击下一步。
- 操作:选择“启动程序”选中并单击“,点击下一步”。
- 启动程序:在“程序或脚本”文本框中输入或浏览选择位置:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
。在“添加参数(可选)”文本框中输入:-executionpolicy bypass -file C:\你在第二步保存文件的位置\bootsequence-rEFInd-first.ps1
。点击下一步。 - 勾选“当单击“完成”时,打开此任务属性的对话框”,点击完成。
- 属性对话框:常规页面:选择“不管用户是否登录都要运行”,勾选“不储存密码”,勾选“使用最高权限运行”,勾选“隐藏”,将配置选择为“Windows 10”。
- 属性对话框:条件页面:取消勾选“只有在计算机使用交流电源时才启动此任务”。点击确定关闭窗口。
其它步骤
进不去SteamOS
Acknowledgement: 方法来自链接,last accessed 2023年2月1日。
请尝试以下操作,其它的阴间小众情况笔者暂时没有遇到
- Steam Deck处于关机状态
- 同时按住【电源键】和【音量+】
- 选择“Boot from file”按钮
- 逐层选择菜单:esp/efi/steamos/steamcl.efi(备注:第一层菜单可能非常长,看开头是esp即可,在笔者这里是第一个)
- 等待SteamOS启动
其它阴间小众情况
- 按上述步骤操作反而进了windows
安装完rEFInd后想要重新安装Windows系统
- 进入SteamOS桌面模式
- 打开Konsole
- 禁用rEFInd的EFI引导项
记录rEFInd的引导项,用其替换下面的XXXX。efibootmgr
sudo efibootmgr -b XXXX -A
- 重新启用Windows EFI引导项。将以下命令中的YYYY替换为Windows EFI引导项
sudo efibootmgr -b YYYY -a
- 重装Windows
如果成功安装后重新运行该脚本,该脚本稍后将再次禁用Windows EFI引导项。
注:从SteamOS 3.4更新开始,这些命令可能需要从SteamOS恢复镜像启动(才能成功)。
禁用Windows EFI条目
- 使用Windows中的easyufi
- 使用SteamOS恢复映像中的命令行:运行efibootmgr并记录Windows EFI条目的引导编号,并用该编号替换下面命令中的XXXX:
sudo efibootmgr -b XXXX -A
恢复丢失的EFI项
在SteamOS运行脚本。该脚本检测是否缺少任何一个EFI条目,并且只重新添加缺少的条目(不创建副本)。
引导到Windows时显示损坏
以管理员身份,在cmd运行bcdedit.exe -set {globalsettings} highestmode on
或
以管理员身份,在Powershell运行bcdedit /set "{globalsettings}" highestmode on
SD卡Windows说明
这一段译者没有运行,仅进行翻译作为参考。
更新后的refind.conf文件现在有一个手动节(stanza)用于Micro SD卡Windows启动选项。通过在“Windows”节(stanza)中添加禁用行,确保禁用了其他“Windows”启动选项。我们需要对Windows SD进行2次编辑
需要对“Windows SD卡”节(stanza)进行2次编辑,以使Micro SD卡Windows从rEFInd正确启动。
- 使用KDE分区管理器来找出Micro - SD卡的EFI系统分区UUID:
- 用您的UUID替换
refind.conf
文件中volume REPLACE_THIS_WITH_SD_CARD_EFI_PARTITION_UUID
这一行中全大写的字符串(即保留volume
)。 - 删除节(stanza)末的禁用行。
启动时有必要按下一个键以避免引导时检查磁盘。如果没有按这个中断键,屏幕可能看起来已经损坏,直到磁盘检查完成,Windows继续启动。
禁用和/或卸载rEFInd
将XXXX换成rEFInd EFI条目
- 禁用rEFInd EFI条目:
sudo efibootmgr -b XXXX -A
- 删除rEFInd EFI条目:
sudo efibootmgr -b XXXX -B
- 卸载pacman安装的rEFInd包携带的包和文件:
sudo steamos-readonly disable # 接下来的两个命令可能没有必要,但它们也不会造成任何伤害 sudo pacman-key --init sudo pacman-key --populate archlinux # 下面的命令删除pacman refind包 yes | sudo pacman -R refind sudo steamos-readonly enable
由于非pacman安装的脚本文件只占用5GB根分区上非常小的空间(不占用/home分区上的任何游戏空间),所以原文没有做详细介绍。
- 从/esp分区中删除rEFInd目录(要预先警告,如果在这里犯错误,删除/esp分区上的错误文件或文件夹可能会使你的Steam Deck无法启动,需要恢复映像。这是一个公平的警告,我不承担任何用户错误的责任。)运行指令:
sudo rm -rf /esp/efi/refind/