Simple rEFInd install script for the Steam Deck (with GUI customization)
翻译准备中
其他C++ · ShellGitHub @jlobue10自行安装运营者未确认
试用过了吗? 点一下就好,无需登录。
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
安装型项目无需部署域名也可验证。个人仓库可通过 GitHub 登录验证,组织仓库可使用上方的仓库验证文件。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗An easy rEFInd boot manager setup for the Steam Deck, for dual booting SteamOS alongside Windows (internal NVMe or micro SD card), other Linux distros, Batocera, and Ventoy.
Please feel free to donate and support me at the following link. Donations are not required, nor are they expected. I will continue to work on this repository and potential future variations, with or without donations.
Make sure your sudo password is set and you are connected to the internet, then run this from a terminal in desktop mode:
curl -L https://github.com/jlobue10/SteamDeck_rEFInd/raw/main/install-GUI.sh | bash
The installer stages everything into ~/.local/SteamDeck_rEFInd/, installs the latest GUI release package, and creates a desktop shortcut.
pacman is available as a fallback if the Sourceforge download has issues. If you already have a working rEFInd install, you can skip this step.~/.local/SteamDeck_rEFInd/GUI/refind.conf, which you can inspect or hand-edit. If you change the background or icon images, click Create Config again so the new files get staged.sudo password if the rule is missing).Additional buttons and options:
bootnext-refind systemd service (SteamOS updates can otherwise reorder or drop the rEFInd entry); the buttons pop up an xterm that asks for the sudo password and shows the service status when done. In the Windows app they toggle the equivalent scheduled task (SteamDeck_rEFInd_bootnext), which sets rEFInd as the next boot at each Windows logon — replacing the old "Dual Boot Fix" zip.~/.local/SteamDeck_rEFInd/backgrounds/ and installs it as the rEFInd background. Add or remove PNGs in that folder as you like. If you turn it off and want a fixed background again, redo Create Config + Install Config.VTOYEFI partition label (not both concurrently).Custom images: backgrounds should be 1,280x800 PNG files and icons square PNGs — ideally matching the Boot Icon Size you pick in the GUI (128x128 for the default; 256 and 512 versions of the Steam and Windows icons are included for the larger sizes). Other sizes still work, just scaled. PNG is required because other formats are hit and miss with rEFInd.
Everything the GUI installs to the ESP is first staged as plain files under ~/.local/SteamDeck_rEFInd/ (%LOCALAPPDATA%\SteamDeck_rEFInd for the Windows app). Editing those files by hand is supported — the install buttons copy whatever is there:
GUI/refind.conf — generated by Create Config. You can tweak or extend it (extra stanzas, rEFInd options the GUI doesn't expose) before pressing Install Config, which installs it exactly as edited — along with GUI/active_theme.conf when a theme is selected. Pressing Create Config again regenerates the file, so keep a copy of manual edits you want to re-apply.GUI/background.png and GUI/os_icon1.png … os_icon4.png — the staged copies of the selected background and icons. Replacing these files directly (PNG only) works just as well as picking them in the GUI; Install Config installs whatever is staged.backgrounds/ — the pool the background randomizer draws from on each boot; add or remove PNGs as you like.themes/<name>/ — the tree Install Themes copies to the ESP (every folder containing a theme.conf counts). You can edit a bundled theme — swap its icons, tweak its theme.conf — or drop in a new one, then press Install Themes again to install it as-is.Automated since 2.0.0 — just make sure the SD card is inserted when you click Create Config; the Windows-on-SD entry and its partition GUID are detected and resolved automatically.
If you ever need to do it manually, edit /esp/efi/refind/refind.conf with sudo, and in the "Windows SD card" stanza set volume to the SD card ESP's partition UUID (find it with lsblk -o NAME,PARTUUID or KDE Partition Manager) and remove the disabled line. Add disabled to the internal "Windows" stanza if you don't want both shown.
For quick config changes from Game Mode, set up the Plasma Nested Session and add its shortcut to Steam. Launch the nested session, run the GUI, install your changes, then use the 'Return to Gaming Mode' desktop shortcut to exit.
The repo ships a set of community rEFInd themes under themes/. A theme restyles the whole boot menu at once — background, OS/tool icons, selection highlights, and (for some themes) fonts — by way of the theme's own theme.conf, which supersedes the matching settings in the generated refind.conf.
How it works: when a theme is selected, Create Config appends a single stable line to the end of the generated config — include themes/active_theme.conf — and stages active_theme.conf (a copy of the chosen theme's theme.conf) next to it. Switching themes just replaces that one file; refind.conf itself never changes per theme.
Using themes from the GUI:
Random to have one picked for you at Create Config time; None keeps the classic look). Then Create Config and Install Config as usual.themes/ tree to the ESP (EFI/refind/themes/, about 12 MB). Needed once before an installed config's theme can render, and again only if the shipped themes change or you add your own. If the selected theme's files are not on the ESP yet, Install Config says so — until they are, rEFInd falls back to its own default banner (the rEFInd logo, stretched over the screen) instead of the theme.rEFInd_theme_randomizer systemd service on SteamOS, a scheduled task running at each Windows logon in the Windows app): it copies a random theme's theme.conf over themes/active_theme.conf on the ESP. It only acts when the live refind.conf contains the theme include line, so it is inert while the Theme dropdown is None.Note: if both the background randomizer and the theme randomizer are enabled, the theme's banner wins — a theme's theme.conf sets its own banner, which supersedes the randomized background.png.
All theming credit goes to the original theme authors. These themes are redistributed here (unmodified apart from folder-name normalization) purely for install convenience; please star/support the upstream repos.
| Theme | Author | Upstream | License |
|---|---|---|---|
| BlackCatMuzzle | Scorpi-ON (XIIIMICT) | https://github.com/XIIIMICT/BlackCatMuzzle-rEFInd | MIT |
| Matrix-rEFInd | Yannis Vierkötter (Yannis4444) | https://github.com/Yannis4444/Matrix-rEFInd | MIT |
| rEFInd-fallout | awanwar | https://github.com/awanwar/rEFInd-fallout | MIT |
| rEFInd-glassy | Pr0cella | https://github.com/Pr0cella/rEFInd-glassy | No stated theme license (its LICENSE file covers only the bundled Nimbus font, AGPL-3.0) — redistributed with attribution* |
| rEFInd-mountain | Chris Alves (Chrisae9) | https://github.com/Chrisae9/rEFInd-mountain | MIT |
| Starwars-rEFInd | thilakshan2003 | https://github.com/thilakshan2003/Starwars-rEFInd | No license file — redistributed with attribution* |
| wave | zeeshan933 | https://github.com/zeeshan933/Refind-Themes | No license file — redistributed with attribution* |
* These themes carry no explicit redistribution license; they are included with full attribution and links to the originals, and will be removed immediately at the original author's request.
More themes to explore (installable manually the same way — drop a folder holding a theme.conf under themes/, then press Install Themes; the folder name does not have to match the themes/<name>/... paths inside the theme.conf, a theme unpacked as <name>-master works as it is):
The GUI also builds and runs on Windows (Qt6), so you can configure and install rEFInd from the Windows side of a dual-boot Deck. Download SteamDeck_rEFInd-<version>-setup.exe from the Releases page. The installer requests Administrator access so executable code and privileged helpers can be protected under Program Files; mutable configuration stays in %LOCALAPPDATA%\SteamDeck_rEFInd. Release builds are code-signed — see the code signing policy below and Windows/GUI/SIGNING.md.
The Sysd On/Off, Rand BG On/Off, and Theme Rand On/Off buttons work in the Windows app too: each toggles a Windows scheduled task that runs at logon and does what the matching systemd service does on SteamOS (set rEFInd as the next boot, randomize the background, randomize the theme). The installer also offers an optional checkbox — off by default — to enable the "keep rEFInd first" bootnext task right away.
Free code signing provided by SignPath.io, certificate by SignPath Foundation.
The Windows release binaries — SteamDeck_rEFInd.exe, SteamDeck_rEFInd_helper.exe, the bundled windows\*.ps1 scripts, and the SteamDeck_rEFInd-<version>-setup.exe installer — are Authenticode-signed with a certificate issued to this project by SignPath Foundation. Signing happens only inside this repository's GitHub Actions release workflow, from the source at a tagged commit; nothing is signed on a developer machine. The Qt and MinGW runtime DLLs bundled with the app are upstream MSYS2 builds and ship unsigned. Details, including the exact artifact configurations SignPath applies, are in Windows/GUI/SIGNING.md.
Team roles. This is a single-maintainer project; every role is held by @jlobue10:
Privacy policy. This program will not transfer any information to other networked systems unless specifically requested by the user. The only network access is user-initiated: Check For Update (in the About dialog) fetches this repository's VERSION file from GitHub, and Install rEFInd downloads rEFInd from SourceForge and the UsbXbox360Dxe / TouchI2cDxe UEFI drivers from GitHub. No telemetry is collected, and the optional at-logon scheduled tasks work entirely offline. Those downloads are subject to GitHub's privacy statement and SourceForge's privacy policy.
The script method assumes valid EFI boot files exist at /esp/efi/steamos/steamcl.efi (SteamOS) and /esp/efi/Microsoft/Boot/bootmgfw.efi (Windows) — which is the case after a typical dual boot setup. You can verify by holding Volume Up + Power, choosing "Boot from file", and selecting each manually; if either doesn't boot correctly, don't proceed unless you know how to point the refind.conf boot stanzas at your correct EFI files.
If you want custom icons (square PNGs, 128x128 at the default icon size) or a custom background (1,280x800 PNG), swap the files and update refind.conf to match before running the installation script.
From a SteamOS command line in desktop mode:
git clone https://github.com/jlobue10/SteamDeck_rEFInd/
cd SteamDeck_rEFInd
chmod +x SteamDeck_rEFInd_install.sh
./SteamDeck_rEFInd_install.sh
If the pacman repositories are having issues, run this instead for a pacman-free installation (rEFInd downloaded from Sourceforge):
chmod +x refind_install_no_pacman.sh
./refind_install_no_pacman.sh
Afterwards rEFInd is set up with SteamOS as the default OS. The timeout in refind.conf (default 5 seconds) is how long the menu waits before booting the default; -1 boots the default immediately unless a button or trackpad is touched during power-on. Select an OS with the right trackpad + R2, or the D-Pad + A button.
The supplied config uses manual boot stanzas on purpose, to control the icon order left to right. For everything else the config supports, see the rEFInd documentation.
This is one of the most commonly missed steps. Without it, Windows re-inserts itself at the top of the boot order and you never see the rEFInd menu. Two ways to fix it:
Option 1 — disable the Windows EFI entry (from SteamOS desktop mode; the installers also do this automatically):
1. Open "Konsole"
2. type: efibootmgr
## Take note of the Windows EFI four digit number and replace the XXXX in the following commands with that number.
## An active entry shows a '*' after BootXXXX; disabling removes the '*'.
3. type: sudo efibootmgr -b XXXX -A
Current SteamOS (3.9) note:
efibootmgron SteamOS 3.9 cannot rewrite an existing boot entry in place, so step 3 fails even withsudo(creating and deleting entries still works — only the active/inactive toggle is affected). Temporarily loosening the permissions of the entry's NVRAM file works around it:sudo chmod 666 /sys/firmware/efi/efivars/BootXXXX-8be4df61-93ca-11d2-aa0d-00e098032b8c sudo efibootmgr -b XXXX -A sudo chmod 644 /sys/firmware/efi/efivars/BootXXXX-8be4df61-93ca-11d2-aa0d-00e098032b8cThe install/uninstall scripts and the
bootnext-refindservice apply this workaround automatically (and no longer touch entries that are already in the requested state). Booting the SteamOS recovery USB or another live Linux also still works if you prefer not to do this on the installed system.
Option 2 — enable the Windows-side bootnext task (use this especially if option 1 gives a Boot entry not found error). Instead of disabling the Windows entry, a scheduled task sets rEFInd as the next boot every time Windows runs. If you use the Windows app, just click Sysd On there (or tick the "keep rEFInd first" checkbox when installing it) — that registers the task with no extra downloads. The legacy standalone route still works too: while booted into Windows, download this folder and run its batch script as an administrator (video from Deck Wizard, time code 17:57); the app's Sysd On/Off supersedes and replaces that task if you later install the GUI.
bootnext-refind.service failing with status=203/EXEC after a SteamOS update — since SteamOS 3.6 an OS update resets /etc except for keep-listed paths: the service and its enablement survived, but /etc/SteamDeck_rEFInd/ (the script it runs, the GUI's helper) and the passwordless-config sudoers rule did not, so the unit and the randomizers failed and Install Config asked to "reinstall to repair" (#232). Current installers register those paths in /etc/atomic-update.conf.d/SteamDeck_rEFInd.conf so they persist. If you installed before that fix, re-run the GUI install command from this README once; it restores the files and adds the keep-list drop-in. Check with sudo systemctl status bootnext-refind.service; if the unit itself is missing or disabled, recopy systemd/bootnext-refind.service to /etc/systemd/system/ and run sudo systemctl enable --now bootnext-refind.service (the GUI's Sysd On/Off buttons also handle this).sudo efibootmgr -b YYYY -a (YYYY = the Windows entry number; on SteamOS 3.9 use the chmod workaround from the dual boot fix above if the command fails). Disable it again afterwards (see the dual boot fix above).bootnext-refind.service shows "failed ... could not activate ... entry" — older versions of restore_EFI_entries.sh ran efibootmgr -b XXXX -a on every boot, which always fails on SteamOS 3.9 (see the note in the dual boot fix section) even when the entries are healthy and already active. Fixed in the current script: update by re-running the GUI install command from this README, then sudo systemctl restart bootnext-refind.service to clear the failed state.EFI/Linux (for example Fedora with kernel-install layout=uki) as one Boot Option per distro. Its menu entry boots the newest kernel, and older kernels sit in that entry's submenu (F2, Insert or Tab in the boot menu). UKI file names change with every kernel update of that Linux system, and SteamOS can't see those updates. Install on that Linux system: its kernel-install hook re-points these entries in the installed automatically. Otherwise, run Create Config and Install Config here again after it updates its kernel.Run the uninstall script (staged by the GUI install; also available in this repo under scripts/):
~/.local/SteamDeck_rEFInd/scripts/uninstall_rEFInd.sh
It disables the bootnext-refind and background-randomizer services first (otherwise the boot entry would be recreated on the next boot), deletes the rEFInd boot entries that target the Deck's ESP (a rEFInd installed from the Windows side, e.g. on an SD card, is detected and left alone), re-activates the Windows boot entry, removes EFI/refind and EFI/Xbox360 from /esp plus /boot/refind_linux.conf, and removes the pacman refind package. Flags:
--keep-esp-files — undo only the services and boot entries; keep rEFInd's files on /esp--remove-app — also remove the SteamDeck_rEFInd GUI package, ~/.local/SteamDeck_rEFInd, and the desktop shortcutsOn the Windows side, uninstalling "SteamDeck rEFInd GUI" from Settings > Apps asks whether to also remove rEFInd itself and then performs the equivalent cleanup automatically.
rEFInd_GUI is this project's sibling for laptops, desktops, and other handhelds (ASUS ROG Ally/Ally X, Legion Go, and more), with generic Linux + Windows dual boot support and secure boot guidance.
Video tutorial by Deck Wizard — worth a watch before posting an issue.
The GUI follows the system language and currently ships translations for 20 languages alongside English —
German, Dutch, Spanish, French, Italian, Portuguese, Russian, Ukrainian, Turkish,
Japanese, Korean, Simplified Chinese, Vietnamese, Indonesian, Hindi,
Bengali, Sicilian, Arabic, Persian (Farsi), and Urdu (right-to-left layout included
for Arabic, Persian, and Urdu) (untranslated strings fall back to
English). Translation contributions are welcome — see the contributor guide in
I18N_AUDIT.md: add a SteamDeck_rEFInd_<lang>.ts file under
GUI/src/, list it in CMakeLists.txt, and translate it with Qt Linguist.
Special thanks to DeckWizard for extensive testing and feedback.
Special thanks to Reddit user ChewyYui for solving the annoying Windows graphical glitch and helping to figure out the SteamOS splash screen setting from the SteamOS manual boot stanza.
Credit to GitHub user CryoByte33 (maker of steam-deck-utilities) for zenity additions to my own code.
Also thank you to GitHub user YoshiAye for the updated background that I made default for the GUI installation.
This project (and its sibling rEFInd_GUI) is only intended to simplify the installation and configuration of the rEFInd boot manager. All credit for the rEFInd boot manager itself goes to Roderick W. Smith (rodsbooks.com/refind); rEFInd performs all of the complicated bootloader tasks.
If you have an idea for code, script, or GUI improvement, please reach out to me. I am all for making this repository as good as possible. If you are going to use some aspect of my code for your own design, please give some credit or acknowledgment for the original code.
refind.confbcdedit.exe -set {globalsettings} highestmode on (PowerShell: bcdedit /set "{globalsettings}" highestmode on). It prevents the issue entirely.ldd $(command -v SteamDeck_rEFInd) shows libQt5Widgets), install the Qt5 integration (plasma5-integration, where the distro still ships it) — or just update.