SteamOS
SteamOS copied to clipboard
Failed services on Steam Deck
Your system information
- Steam client version: 1661822214
- SteamOS version: 3.3.1
- Opted into Steam client beta?: Yes (Steam Deck with Preview enabled)
- Opted into SteamOS beta?: Yes (Steam Deck with Preview enabled)
- Have you checked for updates in Settings > System?: Yes
Please describe your issue in as much detail as possible:
No services should be failed. I "Switched to Desktop Mode" and I get these failed services:
(deck@steamdeck ~)$ systemctl --failed
UNIT LOAD ACTIVE SUB DESCRIPTION
● grub-recordfail.service loaded failed failed Record successful boot for GRUB
● shadow.service loaded failed failed Verify integrity of password and group files
● steamos-finish-oobe-migration.service loaded failed failed Finish migration from OOBE build
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
3 loaded units listed.
(deck@steamdeck ~)$
Steps for reproducing this issue:
- Switch to Desktop Mode (Steam Deck)
systemctl --failed
Notes by docwhat
-
grub-recordfail.serviceis failing because it is trying to write to/boot/grub/grubenv. It is trying to unset anyrecordfailbeing set bygrub-editenv. Since the partition is readonly, this isn't a problem. You cansystemctl disable --now grub-recordfail.serviceto prevent this error in the future. -
shadow.serviceis failing because the directory/var/lib/ntpis missing. It's checking/etc/passwdand is making sure all the home directories exist. Either remove ntpd or created the directory. -
steamos-finish-oobe-migration.serviceis incorrectly failing. Thebashscript/usr/lib/steamos/steamos-finish-oobe-migrationhas this line:# Shouldn't have been invoked if $old_home isn't here or is a symlink. [[ -d $old_home && ! -L $old_home ]] || die "'$old_home' does not exist or is not a folder, nothing to migrate"It should read:
# Shouldn't have been invoked if $old_home isn't here or is a symlink. if [[ -d $old_home && ! -L $old_home ]]; then warn "'$old_home' does not exist or is not a folder, nothing to migrate" exit 0 fi
Loving the Steam Deck so far!
steamos-finish-oobe-migration.service is incorrectly failing. The bash script /usr/lib/steamos/steamos-finish-oobe-migration has this line:
# Shouldn't have been invoked if $old_home isn't here or is a symlink.[[ -d $old_home && ! -L $old_home ]] || die "'$old_home' does not exist or is not a folder, nothing to migrate"
What's wrong with this? It works fine for me here.
It shouldn't be using die which exits with a non-zero exit code and causes systemctl --failed to show that service as failing.
If the $old_home is a symlink to a directory then that means the script has run at some point in the past and completed successfully or it never needed migration. There is no error, this is a good thing.
The correct response is to log a warn or an info and exit with an exit code of 0 to tell systemd that the service is happy.
Ah, I see, I think that the problem is that the service shouldn't run in the first place.
ConditionPathIsDirectory=/home/doorstop is not enough because this check follows symbolic links. Because of that the doorstop -> deck symlink doesn't prevent the service from running, and it fails as you point out.
Thanks!
steamos-finish-oobe-migration.service can be fixed by adding another condition:
--- /usr/lib/systemd/system/steamos-finish-oobe-migration.service
+++ /usr/lib/systemd/system/steamos-finish-oobe-migration.service
@@ -16,6 +16,7 @@
Before=multi-user.target
Before=steamos-create-homedir.service
ConditionPathIsDirectory=/home/doorstop
+ConditionPathIsSymbolicLink=!/home/doorstop
[Service]
Type=oneshot
Yes, that fix is correct :slightly_smiling_face:
Just to clarify, these issues are being handled and will be fixed in a future release.
These services should be working fine now. We can close this issue.