valshaped / rwfus Goto Github PK
View Code? Open in Web Editor NEWRW OverlayFS for Steam Deck!
License: GNU Lesser General Public License v2.1
RW OverlayFS for Steam Deck!
License: GNU Lesser General Public License v2.1
(deck@steamdeck rwfus)$ ./rwfus --install
This command must be performed as root
Creating overlays for /usr /etc/pacman.d /var/lib/pacman /var/cache/pacman:
1. Generating directories
2. Generating disk image
3. Generating service
4. Storing configuration
5. Copying service to /etc/systemd/system
6. Enabling service unit
Error when enabling service. See /tmp/rwfus.O0vb.log for information.
× rwfusd.service - Rwfus: Carry Pacman across SteamOS updates!
Loaded: loaded (/etc/systemd/system/rwfusd.service; enabled; vendor preset: disabled)
Active: failed (Result: timeout) since Mon 2022-12-05 17:10:58 CST; 24ms ago
Process: 6815 ExecStart=/opt/rwfus/service/rwfusd.sh --start (code=killed, signal=TERM)
Main PID: 6815 (code=killed, signal=TERM)
CPU: 68ms
Log saved to /tmp/rwfus.O0vb.log
(deck@steamdeck rwfus)$ cat /tmp/rwfus.O0vb.log
Rwfus v0.4.0
Carry Pacman across SteamOS updates!
Rwfus directory: /opt/rwfus
Unit Storage directory: /opt/rwfus/service
Systemd directory: /etc/systemd/system
./rwfus --install
Loading config file /etc/opt/rwfus.conf
> Base_Directory: "/opt/rwfus"
> Directories: "/usr /etc/pacman.d /var/lib/pacman /var/cache/pacman"
> Mount_Options: "loop,compress"
Creating overlays for /usr /etc/pacman.d /var/lib/pacman /var/cache/pacman:
1. Generating directories
mkdir: created directory '/opt/rwfus/service'
2. Generating disk image
btrfs-progs v5.16
See http://btrfs.wiki.kernel.org for more information.
NOTE: several default settings have changed in version 5.15, please make sure
this does not affect your deployments:
- DUP for metadata (-m dup)
- enabled no-holes (-O no-holes)
- enabled free-space-tree (-R free-space-tree)
Label: Rwfus
UUID: bd29e6ac-f378-493e-830b-25397c228fea
Node size: 4096
Sector size: 4096
Filesystem size: 8.00GiB
Block group profiles:
Data+Metadata: single 8.00MiB
System: single 4.00MiB
SSD detected: no
Zoned device: no
Incompat features: mixed-bg, extref, skinny-metadata, no-holes
Runtime features: free-space-tree
Checksum: crc32c
Number of devices: 1
Devices:
ID SIZE PATH
1 8.00GiB /opt/rwfus/rwfus.btrfs
mount: /dev/loop1 mounted on /opt/rwfus/mount.
Resize device id 1 (/dev/loop1) from 8.00GiB to max
mkdir: created directory '/opt/rwfus/mount/upper'
mkdir: created directory '/opt/rwfus/mount/upper/usr'
mkdir: created directory '/opt/rwfus/mount/work'
mkdir: created directory '/opt/rwfus/mount/work/usr'
mkdir: created directory '/opt/rwfus/mount/upper/etc-pacman.d'
mkdir: created directory '/opt/rwfus/mount/work/etc-pacman.d'
mkdir: created directory '/opt/rwfus/mount/upper/var-lib-pacman'
mkdir: created directory '/opt/rwfus/mount/work/var-lib-pacman'
mkdir: created directory '/opt/rwfus/mount/upper/var-cache-pacman'
mkdir: created directory '/opt/rwfus/mount/work/var-cache-pacman'
umount: /home/.steamos/offload/opt/rwfus/mount (/dev/loop1) unmounted
3. Generating service
Generating service rwfusd
script /opt/rwfus/service/rwfusd.sh
unit /opt/rwfus/service/rwfusd.service
4. Storing configuration
Storing config file to /etc/opt/rwfus.conf...
-rw-r--r-- 1 root root 574 Dec 5 17:10 /etc/opt/rwfus.conf
5. Copying service to /etc/systemd/system
'/opt/rwfus/service/rwfusd.service' -> '/etc/systemd/system/rwfusd.service'
6. Enabling service unit
Created symlink /etc/systemd/system/multi-user.target.wants/rwfusd.service → /etc/systemd/system/rwfusd.service.
Job for rwfusd.service failed because a timeout was exceeded.
See "systemctl status rwfusd.service" and "journalctl -xeu rwfusd.service" for details.
Error when enabling service. See /tmp/rwfus.O0vb.log for information.
(deck@steamdeck rwfus)$ sudo journalctl -xeu rwfusd.service
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░
░░ A start job for unit rwfusd.service has begun execution.
░░
░░ The job identifier is 4194.
Dec 05 17:10:55 steamdeck rwfusd.sh[6815]: Rwfus v0.4.0
Dec 05 17:10:55 steamdeck rwfusd.sh[6815]: Carry Pacman across SteamOS updates!
Dec 05 17:10:55 steamdeck rwfusd.sh[6815]: /opt/rwfus/service/rwfusd.sh --start --
Dec 05 17:10:55 steamdeck rwfusd.sh[6815]: Loading config file /etc/opt/rwfus.conf
Dec 05 17:10:55 steamdeck rwfusd.sh[6815]: > Base_Directory: "/opt/rwfus"
Dec 05 17:10:55 steamdeck rwfusd.sh[6815]: > Directories: "/usr /etc/pacman.d /var/lib/pacman /var/cache/pacman"
Dec 05 17:10:55 steamdeck rwfusd.sh[6815]: > Mount_Options: "loop,compress"
Dec 05 17:10:55 steamdeck rwfusd.sh[6817]: Created symlink /etc/systemd/system/pacman-cleanup.service → /dev/null.
Dec 05 17:10:56 steamdeck rwfusd.sh[6837]: mount: /dev/loop1 mounted on /opt/rwfus/mount.
Dec 05 17:10:56 steamdeck rwfusd.sh[6857]: Resize device id 1 (/dev/loop1) from 8.00GiB to max
Dec 05 17:10:56 steamdeck rwfusd.sh[6815]: Creating overlay (/opt/rwfus/mount/upper/usr, /opt/rwfus/mount/work/usr) on /usr
Dec 05 17:10:56 steamdeck rwfusd.sh[6860]: mount: overlay mounted on /usr.
Dec 05 17:10:56 steamdeck rwfusd.sh[6815]: Successfully overlaid /opt/rwfus/mount/upper/usr on /usr
Dec 05 17:10:56 steamdeck rwfusd.sh[6815]: Creating overlay (/opt/rwfus/mount/upper/etc-pacman.d, /opt/rwfus/mount/work/etc-pacman.d) on /etc/pacman.d
Dec 05 17:10:56 steamdeck rwfusd.sh[6862]: mount: /etc/pacman.d: wrong fs type, bad option, bad superblock on overlay, missing codepage or helper program, or other error.
Dec 05 17:10:56 steamdeck rwfusd.sh[6815]: /etc/pacman.d not available (error 0). Retrying...
Dec 05 17:10:58 steamdeck systemd[1]: rwfusd.service: start operation timed out. Terminating.
Dec 05 17:10:58 steamdeck systemd[1]: rwfusd.service: Main process exited, code=killed, status=15/TERM
░░ Subject: Unit process exited
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░
(deck@steamdeck rwfus)$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 8G 0 loop /home/.steamos/offload/opt/rwfus/mount
/opt/rwfus/mount
loop1 7:1 0 8G 0 loop /home/.steamos/offload/opt/rwfus/mount
/opt/rwfus/mount
nvme0n1 259:0 0 57.6G 0 disk
├─nvme0n1p1 259:1 0 64M 0 part
├─nvme0n1p2 259:2 0 32M 0 part
├─nvme0n1p3 259:3 0 32M 0 part
├─nvme0n1p4 259:4 0 5G 0 part /
├─nvme0n1p5 259:5 0 5G 0 part
├─nvme0n1p6 259:6 0 256M 0 part /var
├─nvme0n1p7 259:7 0 256M 0 part
└─nvme0n1p8 259:8 0 47G 0 part /var/tmp
/var/log
/var/lib/systemd/coredump
/var/lib/flatpak
/var/lib/docker
/var/cache/pacman
/srv
/root
/opt
/home
Is this possible to run this rootless?
When I ran the instructions on the readme I got:
Failed to connect to bus: Operation not permitted
The closest I have found to a discussion about the rootless capabilities of linux is here:
Bubblewrap is pre-installed on the deck and I think is how Steam OS 3 works.
Having containers and not ever needing root would mean installing anything without even worrying about anything.
I'm on an older Steam OS install where home is non-case folding.
I just updated the repo today when RWFUS was disabled and enabled it and it enabled but through some errors about the mount points being too deep.
Now when I try to go to disable it doesn't actually disable and stays enabled. Will have some text in a second
Running rwfus without any parameters will currently attempt to install rwfus again. This is great for a first install, but it may be undesired behavior if rwfus is already installed.
TODO: If run without options:
sudo $0 --install --logfile "$Logfile" $@
(is this sane?)I install rwfus 0.5.0 for SteamOS 3.5 and a couple boots later the service fails:
Oct 28 15:24:42 steamdeck rwfusd.sh[865]: > Base_Directory: "/opt/rwfus"
Oct 28 15:24:42 steamdeck rwfusd.sh[865]: > Directories: "/usr /etc/pacman.d /var/cache/pacman"
Oct 28 15:24:42 steamdeck rwfusd.sh[865]: > Stop_Units: "var-cache-pacman.mount"
Oct 28 15:24:42 steamdeck rwfusd.sh[865]: > Mask_Units: "pacman-cleanup.service"
Oct 28 15:24:42 steamdeck rwfusd.sh[865]: > Restart_Units: "usr-local.mount"
Oct 28 15:24:42 steamdeck rwfusd.sh[865]: > Mount_Options: "loop,compress"
Oct 28 15:24:42 steamdeck rwfusd.sh[865]: > Systemd_Directory: "/etc/systemd/system"
Oct 28 15:24:42 steamdeck rwfusd.sh[865]: stop var-cache-pacman.mount usr-local.mount
Oct 28 15:24:42 steamdeck rwfusd.sh[865]: mask var-cache-pacman.mount pacman-cleanup.service
Oct 28 15:24:43 steamdeck rwfusd.sh[1095]: mount: /dev/loop0 mounted on /opt/rwfus/mount.
Oct 28 15:24:43 steamdeck rwfusd.sh[1117]: Resize device id 1 (/dev/loop0) from 8.00GiB to max
Oct 28 15:24:43 steamdeck rwfusd.sh[865]: GLibC has been installed inside Rwfus's overlay.
Oct 28 15:24:43 steamdeck rwfusd.sh[865]: Your Deck will likely not survive a SteamOS update.
Oct 28 15:24:43 steamdeck rwfusd.sh[865]: In an attempt to preserve your Deck, Rwfus has not mounted any overlays.
Oct 28 15:24:43 steamdeck rwfusd.sh[865]: This is not a bug. It is an intentional safety measure.
Oct 28 15:24:43 steamdeck rwfusd.sh[865]: The disk, however, has remained mounted, in case you want to remedy this.
Oct 28 15:24:43 steamdeck rwfusd.sh[865]: You may unmount it with rwfus --umount
Oct 28 15:24:43 steamdeck rwfusd.sh[865]: start usr-local.mount
Oct 28 15:24:43 steamdeck systemd[1]: rwfusd.service: Main process exited, code=exited, status=254/n/a
░░ Subject: Unit process exited
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░
░░ An ExecStart= process belonging to unit rwfusd.service has exited.
░░
░░ The process' exit code is 'exited' and its exit status is 254.
Oct 28 15:24:43 steamdeck systemd[1]: rwfusd.service: Failed with result 'exit-code'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░
░░ The unit rwfusd.service has entered the 'failed' state with result 'exit-code'.
Oct 28 15:24:43 steamdeck systemd[1]: Failed to start Rwfus: Carry Pacman across SteamOS updates!.
░░ Subject: A start job for unit rwfusd.service has failed
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░
░░ A start job for unit rwfusd.service has finished with a failure.
░░
░░ The job identifier is 112 and the job result is failed.
I have to uninstall and reinstall rwfus to get it working again. And then after a few boots it stops working again.
The steamos-devmode
script runs the following comments after disabling read-only. I mostly need this in order to restore headers for building packages. When I run this inside rwfus, things work fine until I reboot and then rwfus fails to mount the overlay.
sudo pacman-key --init
sudo pacman-key --populate
sudo pacman -Sy --noconfirm --needed archlinux-keyring
sudo pacman --noconfirm -S $(pacman -Qnkq | cut -d' ' -f1 | sort | uniq)
sudo pacman -S base-devel multilib-devel --needed
Is it possible to reinstall rwfus without breaking it? By that I mean without losing data inside the image.
Use case: I have done the default installation with the default directories, but now I want to add another directory to the image.
Is it possible ? Can I just do rwfus --install /my/other/path
or do I also need to append the default paths also so that I don't lose those paths ? Or is it just not doable for now ? I want to ask before doing anything on my device.
Step to reproduce:
pacman -Sy glibc
I have noticed that a lot of things have stopped working since last night's SteamOS 3.5.5 Update
Seems I cannot re-install anything now either
(This is on top of PACMAN corrupt/Untrusted Keys from publishers of like every major dependency)
(deck@steamdeck rwfus)$ sudo ./rwfus -i
Creating overlays for /usr /etc/pacman.d /var/lib/pacman /var/cache/pacman:
0. Disabling service
As per subject, here is the relevant part of my rwfus.log:
Rwfus v0.5.0.b1
Carry Pacman across SteamOS updates!
Rwfus directory: /opt/rwfus
Unit Storage directory: /opt/rwfus/service
Systemd directory: /etc/systemd/system
./rwfus -I
Loading config file /etc/opt/rwfus.conf
> Version: "0.5.0.b1"
> Base_Directory: "/opt/rwfus"
> Directories: "/usr /etc/pacman.d /var/cache/pacman"
> Stop_Units: "var-cache-pacman.mount"
> Mask_Units: "pacman-cleanup.service"
> Restart_Units: "usr-local.mount polkit.service"
> Mount_Options: "loop,compress"
> Systemd_Directory: "/etc/systemd/system"
Stopping Rwfus
Removed "/etc/systemd/system/multi-user.target.wants/rwfusd.service".
# It's okay if unmounting fails here #
umount: /usr: not mounted.
umount: /etc/pacman.d: not mounted.
umount: /var/cache/pacman: not mounted.
umount: /opt/rwfus/rwfus.btrfs: not mounted.
Adding Rwfus to /home/.steamos/offload/usr/local/bin
'./rwfus_include/config.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/config.sh'
'./rwfus_include/disk.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/disk.sh'
'./rwfus_include/info.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/info.sh'
'./rwfus_include/manage-install.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/manage-install.sh'
'./rwfus_include/service-main.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/service-main.sh'
'./rwfus_include/service.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/service.sh'
'./rwfus_include/testlog.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/testlog.sh'
'./rwfus' -> '/home/.steamos/offload/usr/local/bin/rwfus'
Unmasking and enabling usr-local.mount
Unit usr-local.mount does not exist, proceeding anyway.
Failed to enable unit: Unit file usr-local.mount does not exist.
Restarting Rwfus
Created symlink /etc/systemd/system/multi-user.target.wants/rwfusd.service ? /etc/systemd/system/rwfusd.service.
Done!
However, rwfus is not present in /usr/local/bin:
(deck@steamdeck /)$ rwfus -s
bash: rwfus: command not found
(127)(deck@steamdeck /)$ ls -a /usr/local/bin
. ..
(deck@steamdeck /)$
Reading the log file it looks like this issue may be related to the removal of usr-local.mount as discussed in bug #39
I worked around the issue by adding the rwfus dir to my $PATH in ~/.bash_profile with this line:
export PATH=$PATH:/home/deck/rwfus
Obviously for others the path declaration may need be different depending on where rwfus is installed.
So, I only discovered this now, and I already had packages installed before. Once I ran rwfus -iI
(and everything went well, on the dev
branch, main
just fails), I noticed that all my previous pacman packages were still there. (E.g. visual-studio-code-insiders-bin
which I installed with makepkg
).
Question is: Is this normal behaviour? Does that mean those packages are already safe?
Question 2: Do I need to mount rwfus
on every boot or is that done automatically?
When updating the Deck, Valve swaps out the entire filesystem and pacman dbs for new ones. This very much makes pacman freak out.
TODO: What?
TODO: Why?
TODO: What can we do about it?
So, I'm unbrave enough to simple remove the auto start of steam app at /etc/xdg/autostart/steam.desktop , being afraid KDE will not launch.
Have you tried to remove this and start the deck directly into desktop mode?
Good day. SteamOS just landed and I thought it might be a good time to try out your overlay solution, vs my "reinstall everything with a script after every update" method. Followed the directions to install, but got an error.
Rwfus v0.4.0
Carry Pacman across SteamOS updates!
Rwfus directory: /opt/rwfus
Unit Storage directory: /opt/rwfus/service
Systemd directory: /etc/systemd/system
./rwfus -iI
Loading config file /etc/opt/rwfus.conf
> Base_Directory: "/opt/rwfus"
> Directories: "/usr /etc/pacman.d /var/lib/pacman /var/cache/pacman"
> Mount_Options: "loop,compress"
Creating overlays for /usr /etc/pacman.d /var/lib/pacman /var/cache/pacman:
1. Generating directories
2. Generating disk image
ERROR: /opt/rwfus/rwfus.btrfs appears to contain an existing filesystem (btrfs)
ERROR: use the -f option to force overwrite of /opt/rwfus/rwfus.btrfs
btrfs-progs v6.0
See http://btrfs.wiki.kernel.org for more information.
mount: /dev/loop0 mounted on /opt/rwfus/mount.
Resize device id 1 (/dev/loop0) from 8.00GiB to max
umount: /home/.steamos/offload/opt/rwfus/mount (/dev/loop0) unmounted
3. Generating service
Generating service rwfusd
script /opt/rwfus/service/rwfusd.sh
unit /opt/rwfus/service/rwfusd.service
4. Storing configuration
Storing config file to /etc/opt/rwfus.conf...
-rw-r--r-- 1 root root 574 Dec 22 11:10 /etc/opt/rwfus.conf
5. Copying service to /etc/systemd/system
'/opt/rwfus/service/rwfusd.service' -> '/etc/systemd/system/rwfusd.service'
6. Enabling service unit
7. Setting up pacman
==> Appending keys from archlinux.gpg...
==> Appending keys from holo.gpg...
==> Updating trust database...
gpg: next trustdb check due at 2023-04-21
:: Synchronizing package databases...
jupiter downloading...
holo downloading...
core downloading...
extra downloading...
community downloading...
multilib downloading...
error: failed retrieving file 'jupiter.db' from steamdeck-packages.steamos.cloud : The requested URL returned error: 404
error: failed retrieving file 'holo.db' from steamdeck-packages.steamos.cloud : The requested URL returned error: 404
error: failed retrieving file 'core.db' from steamdeck-packages.steamos.cloud : The requested URL returned error: 404
warning: too many errors from steamdeck-packages.steamos.cloud, skipping for the remainder of this transaction
error: failed retrieving file 'extra.db' from steamdeck-packages.steamos.cloud : The requested URL returned error: 404
error: failed retrieving file 'multilib.db' from steamdeck-packages.steamos.cloud : The requested URL returned error: 404
error: failed retrieving file 'community.db' from steamdeck-packages.steamos.cloud : The requested URL returned error: 404
error: failed to synchronize all databases (failed to retrieve some files)
Failed to set up pacman. See /tmp/rwfus.XXXX.log for details.
Done!
Loading config file /etc/opt/rwfus.conf
Config already loaded
Removed "/etc/systemd/system/multi-user.target.wants/rwfusd.service".
Unit pacman-cleanup.service does not exist, proceeding anyway.
Adding Rwfus to /home/.steamos/offload/usr/local/bin...
'./rwfus_include/config.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/config.sh'
'./rwfus_include/disk.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/disk.sh'
'./rwfus_include/info.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/info.sh'
'./rwfus_include/manage-install.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/manage-install.sh'
'./rwfus_include/service-main.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/service-main.sh'
'./rwfus_include/service.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/service.sh'
'./rwfus_include/testlog.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/testlog.sh'
'./rwfus' -> '/home/.steamos/offload/usr/local/bin/rwfus'
Created symlink /etc/systemd/system/multi-user.target.wants/rwfusd.service → /etc/systemd/system/rwfusd.service.
Done!
404 Errors on getting the package databases after a pacman -Sy. Didn't have this problem before this update or before trying rwfus, so I'm actually unsure if its from the 3.4 update, from rwfus, or if valves servers are actually down. Can you please advise?
When both SteamOS Btrfs and Rwfus are installed, and a user attempts to install one of a number of rootfs-modifying shell scripts or pacman packages, the Deck may fail to boot, claiming not to find an ext4 partition.
When Rwfus is installed, and a user attempts to reinstall or update SteamOS Btrfs, the install script will fail after updating packages and erroneously revert /etc/fstab to stock. After /home has been converted, this is fatal for the Deck, and recovery requires modifying /var/lib/overlay/etc/upper/fstab to mount home as btrfs
Status: Under investigation
Affected projects:
Create a Decky-Loader plugin that:
Under SteamOS 3.4.11, I hope to reinstall plasma like this to get the complete language pack, but after installing rwfus, the installation prompt prompts that /etc
does not have enough space to reinstall plasma.
$ sudo pacman -S plasma
...
error: Partition /etc too full: 11772 blocks needed, 11771 blocks free
error: not enough free disk space
error: failed to commit transaction (not enough free disk space)
Errors occurred, no packages were upgraded.
Every time the Deck reboots, the gnupg keyring Pacman uses for package verification gets totally clobbered by something.
Valve why?
As per the wiki, pacman.conf has IgnorePkg
to prevent upgrading certain packages. If one were to add all the Steam OS default installed packages to this list, would it be safe to run pacman -Su
on the overlay, or is there some other issue that I'm not aware of? Obviously, I'm hesitant to simply fuck around and find out.
Squish the Rwfus basedir (default /home/.rwfus) into a tarball, and unsquish a tarball onto the Rwfus basedir
Syntax:
rwfus --restore /path/to/backup.tar
rwfus --backup /path/to/backup.tar
Hey,
Great project. Was reading the recent changes, and the current code creates a BTRFS formatted disk image file to store all the overlayfs changes. That is a nice solution for users of the default Steam OS formatted home. However, for people using SteamOS BTRFS could it be possible to support using direct subvolumes on the home partition instead. Would you accept a PR for this?
The logfiles contain a lot of information, but most of it is about the generation of unit files, rather than the activation of the unit files
TODO:
Figure out what commands can print more output (i.e. systemctl status)
Print more output
SteamOS 3.5 moved the pacman database from /var/lib/pacman
to /usr/lib/holo/pacmandb
.
3.5 has support for the Nix package manager, which covers most, but not all of Rwfus' use-cases, and is reliable.
Due to Rwfus' continued usage, I've decided to continue supporting it into the future.
Prerelease 0.5.0.b1 has support for SteamOS 3.5, but drops support for SteamOS 3.4 at the moment.
SteamOS 3.5 removes /var/lib/pacman
from the base image, which breaks rwfus' default config.
Since SteamOS 3.5 also adds support for installing the nix
package manager, I'm unsure whether to support Rwfus going forward. Nix has most packages that aren't available as a flatpak, and provides consistent dependency management irrespective of the base system, which absolutely is not the case with Rwfus.
Right now, the user has to pacman-key --init && pacman-key --populate
themselves. We can easily do this in Rwfus, for maximum simplicity.
Not sure what's going on here quite yet. I was intending to use rwfus to allow LatencyFleX and vkBasalt on the Deck and ran into this issue.
A clean install of rwfus with no additional files added to the overlayed fs will cause Wine-TKG and NorthstarProton to crash. Here's a log file via PROTON_LOG=1. This is reproducible and is resolved simply by uninstalling rwfus.
I am using a copy of SteamOS with Phillip Richter's BTRFS payload and no other changes.
I was attempting to install and this error occurred, I have no idea why.
Rwfus v0.4.0
Carry Pacman across SteamOS updates!
Rwfus directory: /opt/rwfus
Unit Storage directory: /opt/rwfus/service
Systemd directory: /etc/systemd/system
./rwfus -iI
Loading config file /etc/opt/rwfus.conf
Base_Directory: "/opt/rwfus"
Directories: "/usr /etc/pacman.d /var/lib/pacman /var/cache/pacman"
Mount_Options: "loop,compress"
Creating overlays for /usr /etc/pacman.d /var/lib/pacman /var/cache/pacman:
mount: /opt/rwfus/mount: /opt/rwfus/rwfus.btrfs is already mounted.
Resize device id 1 (/dev/loop0) from 8.00GiB to max
umount: /home/.steamos/offload/opt/rwfus/mount (/dev/loop0) unmounted
3. Generating service
Generating service rwfusd
script /opt/rwfus/service/rwfusd.sh
unit /opt/rwfus/service/rwfusd.service
4. Storing configuration
Storing config file to /etc/opt/rwfus.conf...
-rw-r--r-- 1 root root 574 Jan 24 20:26 /etc/opt/rwfus.conf
5. Copying service to /etc/systemd/system
'/opt/rwfus/service/rwfusd.service' -> '/etc/systemd/system/rwfusd.service'
6. Enabling service unit
Job for rwfusd.service failed because a timeout was exceeded.
See "systemctl status rwfusd.service" and "journalctl -xeu rwfusd.service" for details.
Error when enabling service. See /tmp/rwfus.QCqL.log for information.
Loading config file /etc/opt/rwfus.conf
Config already loaded
Removed "/etc/systemd/system/multi-user.target.wants/rwfusd.service".
Removed "/etc/systemd/system/pacman-cleanup.service".
Adding Rwfus to /home/.steamos/offload/usr/local/bin...
'./rwfus_include/config.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/config.sh'
'./rwfus_include/disk.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/disk.sh'
'./rwfus_include/info.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/info.sh'
'./rwfus_include/manage-install.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/manage-install.sh'
'./rwfus_include/service-main.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/service-main.sh'
'./rwfus_include/service.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/service.sh'
'./rwfus_include/testlog.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/testlog.sh'
'./rwfus' -> '/home/.steamos/offload/usr/local/bin/rwfus'
Created symlink /etc/systemd/system/multi-user.target.wants/rwfusd.service → /etc/systemd/system/rwfusd.service.
Job for rwfusd.service failed because a timeout was exceeded.
See "systemctl status rwfusd.service" and "journalctl -xeu rwfusd.service" for details.
Error when enabling service. See /tmp/rwfus.QCqL.log for information.
Done!
Hi there, I have a little issue 😅.
I followed the steps on your GitHub Readme to install RWFus on my brand new SteamOS install (SteamOS 3.3.1). But everytime (done multiple reinstalls) the mount systemd targets fail to mount because of a bad option in the mount command. Since I'm a Linux novice and not sure what I should do here I am asking you directly if you know anything.
If you have anything that installs polkit actions in /usr/share/polkit-1/actions/
then polkit.service
needs to be restarted to pick those changes up.
I haven't checked the boot order yet, but it may require a change to the systemctl files as well.
My use case was I tried to install 1Password and have it use system unlock (e.g., polkit) and it wouldn't see the action. Since I just learned about polkit today, this took a while to debug. ;-)
Sometimes you may find yourself testing a newer version of a package already included in the read only root, but then wish to return to the default.
If you pacman -R
the package, it will be gone from the overlay but also from the package database. This means while the files are still present in root, pacman no longer knows they are installed.
How to best remedy this? The only obvious way I see is to use --dbonly
to register the installed stock package in the db. But then I need to make sure that the repos match the stock packages, i.e. edit pacman.conf to match the update channel I'm on.
Actually, does the overlay remember that the files were removed? Then I also need to somehow tell it to restore the files from the lower dir. I have no idea how to do that.
The stock pacman.conf doesn't seem to match the update channel. According to SteamOS settings I'm on "testing" but the repos are configured to be -rel (I deleted pacman.conf from the /etc overlay upper dir to get the stock file). I'm actually not sure which is which. The repo server has -rel, -main, -testing, -debug and -staging, but the update channels are called stable, beta and preview. So I'm kinda stuck.
Query individual unit files' status, by path or unit name,
Syntax:
rwfus --status var-lib-pacman.mount
rwfus --status var-lib-pacman
rwfus --status /var/lib/pacman
Following the instruccions, but I'm still not getting it installed:
❯ sudo rwfus -iI
Creating overlays for /usr /etc/pacman.d /var/lib/pacman /var/cache/pacman:
1. Creating directories...
2. Updating disk image...
3. Generating service...
4. Storing configuration...
5. Copying service to /etc/systemd/system
6. Enabling service unit
7. Setting up pacman...
Done!
● rwfusd.service - Rwfus: Carry Pacman across SteamOS updates!
Loaded: loaded (/etc/systemd/system/rwfusd.service; enabled; preset: disabled)
Active: active (exited) since Thu 2023-03-16 08:43:16 CET; 6s ago
Process: 20611 ExecStart=/opt/rwfus/service/rwfusd.sh --start (code=exited, status=0/SUCCESS)
Main PID: 20611 (code=exited, status=0/SUCCESS)
CPU: 165ms
Stopping Rwfus
Adding Rwfus to /home/.steamos/offload/usr/local/bin
Unmasking and enabling usr-local.mount
Restarting Rwfus
Done!
Log saved to /var/log/rwfus.log
❯ sudo rwfus -t
Enabling test mode.
cf_Base_Directory: ./test/opt/rwfus
cf_Service_Directory: ./test/opt/rwfus/service
cf_Mount_Directory: ./test/opt/rwfus/mount
cf_Upper_Directory: ./test/opt/rwfus/mount/upper
cf_Work_Directory: ./test/opt/rwfus/mount/work
cf_Install_Directory: ./test/home/.steamos/offload/usr/local/bin
cf_Systemd_Directory: ./test/etc/systemd/system
cf_Disk_Image_Path: ./test/opt/rwfus/rwfus.btrfs
cf_Config_File: ./test/etc/opt/rwfus.conf
cf_Logfile: ./test/var/log/rwfus.log
Rwfus is not installed. Install it with `rwfus --install`
Cat the log:
Creating overlays for /usr /etc/pacman.d /var/lib/pacman /var/cache/pacman:
Removed "/etc/systemd/system/multi-user.target.wants/rwfusd.service".
1. Creating directories...
2. Updating disk image...
mount: /dev/loop0 mounted on /opt/rwfus/mount.
Resize device id 1 (/dev/loop0) from 8.00GiB to max
umount: /home/.steamos/offload/opt/rwfus/mount (/dev/loop0) unmounted
3. Generating service...
Generating service rwfusd
script /opt/rwfus/service/rwfusd.sh
unit /opt/rwfus/service/rwfusd.service
4. Storing configuration...
Storing config file to /etc/opt/rwfus.conf...
-rw-r--r-- 1 root root 1144 Mar 16 08:43 /etc/opt/rwfus.conf
5. Copying service to /etc/systemd/system
'/opt/rwfus/service/rwfusd.service' -> '/etc/systemd/system/rwfusd.service'
6. Enabling service unit
Created symlink /etc/systemd/system/multi-user.target.wants/rwfusd.service → /etc/systemd/system/rwfusd.servic
e.
7. Setting up pacman...
==> Appending keys from archlinux.gpg...
==> Appending keys from holo.gpg...
==> Updating trust database...
gpg: next trustdb check due at 2023-04-21
:: Synchronizing package databases...
jupiter-rel downloading...
holo-rel downloading...
core-rel downloading...
extra-rel downloading...
community-rel downloading...
multilib-rel downloading...
Done!
Stopping Rwfus
Removed "/etc/systemd/system/multi-user.target.wants/rwfusd.service".
Adding Rwfus to /home/.steamos/offload/usr/local/bin
'/home/deck/bin/rwfus_include/config.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/config.sh'
'/home/deck/bin/rwfus_include/disk.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/disk.sh'
'/home/deck/bin/rwfus_include/info.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/info.sh'
'/home/deck/bin/rwfus_include/manage-install.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/manage
-install.sh'
'/home/deck/bin/rwfus_include/service-main.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/service-
main.sh'
'/home/deck/bin/rwfus_include/service.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/service.sh'
'/home/deck/bin/rwfus_include/testlog.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/testlog.sh'
removed '/home/.steamos/offload/usr/local/bin/rwfus'
'/home/deck/bin/rwfus' -> '/home/.steamos/offload/usr/local/bin/rwfus'
Unmasking and enabling usr-local.mount
Restarting Rwfus
Created symlink /etc/systemd/system/multi-user.target.wants/rwfusd.service → /etc/systemd/system/rwfusd.servic
e.
Done!
Check for steamos-readonly
status:
❯ sudo steamos-readonly status
enabled
Try to install a package:
❯ sudo pacman -S base-devel --noconfirm
:: There are 26 members in group base-devel:
:: Repository holo-rel
1) archlinux-keyring
:: Repository core-rel
2) autoconf 3) automake 4) binutils 5) bison 6) debugedit 7) fakeroot 8) file 9) findutils
10) flex 11) gawk 12) gcc 13) gettext 14) grep 15) groff 16) gzip 17) libtool 18) m4 19) make
20) pacman 21) patch 22) pkgconf 23) sed 24) sudo 25) texinfo 26) which
Enter a selection (default=all): all
...............
error: Partition /etc too full: 11772 blocks needed, 0 blocks free
error: not enough free disk space
error: failed to commit transaction (not enough free disk space)
Errors occurred, no packages were upgraded.
Error, since overlay has been maxed:
❯ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 7.2G 0 7.2G 0% /dev
tmpfs 7.3G 512K 7.3G 1% /dev/shm
tmpfs 2.9G 11M 2.9G 1% /run
/dev/nvme0n1p4 5.0G 3.7G 1.1G 78% /
/dev/nvme0n1p6 230M 214M 0 100% /var
overlay 230M 214M 0 100% /etc
/dev/nvme0n1p8 464G 29G 436G 7% /home
tmpfs 7.3G 120K 7.3G 1% /tmp
tmpfs 1.5G 192K 1.5G 1% /run/user/1000
pCloud.fs 2.0T 38G 2.0T 2% /home/deck/pCloudDrive
/dev/loop0 8.0G 271M 7.8G 4% /opt/rwfus/mount
overlay 8.0G 271M 7.8G 4% /usr
overlay 8.0G 271M 7.8G 4% /etc/pacman.d
overlay 8.0G 271M 7.8G 4% /var/lib/pacman
overlay 8.0G 271M 7.8G 4% /var/cache/pacman
(1)(deck@steamdeck ~)$ git clone https://github.com/ValShaped/rwfus.git
./rwfus -iI
Cloning into 'rwfus'...
remote: Enumerating objects: 678, done.
remote: Counting objects: 100% (37/37), done.
remote: Compressing objects: 100% (24/24), done.
remote: Total 678 (delta 15), reused 19 (delta 13), pack-reused 641
Receiving objects: 100% (678/678), 965.28 KiB | 2.31 MiB/s, done.
Resolving deltas: 100% (442/442), done.
This command must be performed as root
[sudo] password for deck:
Creating overlays for /usr /etc/pacman.d /var/lib/pacman /var/cache/pacman:
1. Creating directories...
2. Generating disk image...
3. Generating service...
4. Storing configuration...
5. Copying service to /etc/systemd/system
6. Enabling service unit
Error when enabling service. See /var/log/rwfus.log for information.
× rwfusd.service - Rwfus: Carry Pacman across SteamOS updates!
Loaded: loaded (/etc/systemd/system/rwfusd.service; enabled; preset: disabled)
Active: failed (Result: exit-code) since Sat 2024-02-24 19:56:43 AST; 62ms ago
Process: 42492 ExecStart=/opt/rwfus/service/rwfusd.sh --start (code=exited, status=1/FAILURE)
Main PID: 42492 (code=exited, status=1/FAILURE)
CPU: 179ms
Adding Rwfus to /home/.steamos/offload/usr/local/bin
Unmasking and enabling usr-local.mount
Done!
Log saved to /var/log/rwfus.log
(deck@steamdeck rwfus)$ cat /var/log/rwfus.log
Rwfus v0.4.2
Carry Pacman across SteamOS updates!
Rwfus directory: /opt/rwfus
Unit Storage directory: /opt/rwfus/service
Systemd directory: /etc/systemd/system
./rwfus -iI
Loading config file /etc/opt/rwfus.conf
/etc/opt/rwfus.conf not found
Creating overlays for /usr /etc/pacman.d /var/lib/pacman /var/cache/pacman:
1. Creating directories...
mkdir: created directory '/opt/rwfus'
mkdir: created directory '/opt/rwfus/service'
mkdir: created directory '/opt/rwfus/mount'
2. Generating disk image...
btrfs-progs v6.3.1
See https://btrfs.readthedocs.io for more information.
NOTE: several default settings have changed in version 5.15, please make sure
this does not affect your deployments:
- DUP for metadata (-m dup)
- enabled no-holes (-O no-holes)
- enabled free-space-tree (-R free-space-tree)
Label: Rwfus
UUID: 3c9f605c-9fb0-470d-8f8f-9b38bc0949a1
Node size: 4096
Sector size: 4096
Filesystem size: 8.00GiB
Block group profiles:
Data+Metadata: single 8.00MiB
System: single 4.00MiB
SSD detected: no
Zoned device: no
Incompat features: mixed-bg, extref, skinny-metadata, no-holes, free-space-tree
Runtime features: free-space-tree
Checksum: crc32c
Number of devices: 1
Devices:
ID SIZE PATH
1 8.00GiB /opt/rwfus/rwfus.btrfs
mount: /dev/loop0 mounted on /opt/rwfus/mount.
Resize device id 1 (/dev/loop0) from 8.00GiB to max
mkdir: created directory '/opt/rwfus/mount/upper'
mkdir: created directory '/opt/rwfus/mount/upper/usr'
mkdir: created directory '/opt/rwfus/mount/work'
mkdir: created directory '/opt/rwfus/mount/work/usr'
mkdir: created directory '/opt/rwfus/mount/upper/etc-pacman.d'
mkdir: created directory '/opt/rwfus/mount/work/etc-pacman.d'
mkdir: created directory '/opt/rwfus/mount/upper/var-lib-pacman'
mkdir: created directory '/opt/rwfus/mount/work/var-lib-pacman'
mkdir: created directory '/opt/rwfus/mount/upper/var-cache-pacman'
mkdir: created directory '/opt/rwfus/mount/work/var-cache-pacman'
umount: /home/.steamos/offload/opt/rwfus/mount (/dev/loop0) unmounted
3. Generating service...
Generating service rwfusd
script /opt/rwfus/service/rwfusd.sh
unit /opt/rwfus/service/rwfusd.service
4. Storing configuration...
Storing config file to /etc/opt/rwfus.conf...
-rw-r--r-- 1 root root 1067 Feb 24 19:56 /etc/opt/rwfus.conf
5. Copying service to /etc/systemd/system
'/opt/rwfus/service/rwfusd.service' -> '/etc/systemd/system/rwfusd.service'
6. Enabling service unit
Created symlink /etc/systemd/system/multi-user.target.wants/rwfusd.service → /etc/systemd/system/rwfusd.service.
Job for rwfusd.service failed because the control process exited with error code.
See "systemctl status rwfusd.service" and "journalctl -xeu rwfusd.service" for details.
Error when enabling service. See /var/log/rwfus.log for information.
Loading config file /etc/opt/rwfus.conf
> Base_Directory: "/opt/rwfus"
> Directories: "/usr /etc/pacman.d /var/lib/pacman /var/cache/pacman"
> Stop_Units: "var-cache-pacman.mount"
> Mask_Units: "pacman-cleanup.service"
> Restart_Units: "usr-local.mount polkit.service"
> Mount_Options: "loop,compress"
> Systemd_Directory: "/etc/systemd/system"
Adding Rwfus to /home/.steamos/offload/usr/local/bin
cp: cannot create directory '/home/.steamos/offload/usr/local/bin/': No such file or directory
'./rwfus' -> '/home/.steamos/offload/usr/local/bin/'
cp: cannot create regular file '/home/.steamos/offload/usr/local/bin/': No such file or directory
Unmasking and enabling usr-local.mount
Removed "/etc/systemd/system/usr-local.mount".
Failed to enable unit: Unit file usr-local.mount does not exist.
Done!
(deck@steamdeck rwfus)$ ```
I don't really know where else to put this but I just want to notify you that git clone currently downloads the broken 0.4.0 version unless you do git clone --depth=1 --branch v0.4.1-beta1 https://github.com/ValShaped/rwfus.git
and then it clones the correct version.
(deck@steamdeck rootfs)$ mount | grep mmc
/dev/mmcblk0p1 on /run/media/mmcblk0p1 type ext4 (rw,noatime)
Instead of relying on what rwfus does in $HOME
why not allow the overlay files to be on an external device?
So I just upgraded my SteamOS to 3.5 (Preview) and then tried to install rwfus:
(130)(deck@steamdeck rwfus)$ ./rwfus -iI
This command must be performed as root
[sudo] password for deck:
Creating overlays for /usr /etc/pacman.d /var/lib/pacman /var/cache/pacman:
0. Disabling service
1. Creating directories...
2. Updating disk image...
3. Generating service...
4. Storing configuration...
5. Copying service to /etc/systemd/system
6. Enabling service unit
Error when enabling service. See /var/log/rwfus.log for information.
× rwfusd.service - Rwfus: Carry Pacman across SteamOS updates!
Loaded: loaded (/etc/systemd/system/rwfusd.service; enabled; preset: disabled)
Active: failed (Result: exit-code) since Sat 2023-10-07 14:01:46 CEST; 62ms ago
Process: 22908 ExecStart=/opt/rwfus/service/rwfusd.sh --start (code=exited, status=1/FAILURE)
Main PID: 22908 (code=exited, status=1/FAILURE)
CPU: 160ms
Adding Rwfus to /home/.steamos/offload/usr/local/bin
Unmasking and enabling usr-local.mount
Done!
Log saved to /var/log/rwfus.log
Rwfus v0.4.2
Carry Pacman across SteamOS updates!
Rwfus directory: /opt/rwfus
Unit Storage directory: /opt/rwfus/service
Systemd directory: /etc/systemd/system
./rwfus -iI
Loading config file /etc/opt/rwfus.conf
> Base_Directory: "/opt/rwfus"
> Directories: "/usr /etc/pacman.d /var/lib/pacman /var/cache/pacman"
> Stop_Units: "var-cache-pacman.mount"
> Mask_Units: "pacman-cleanup.service"
> Restart_Units: "usr-local.mount"
> Mount_Options: "loop,compress"
> Systemd_Directory: "/etc/systemd/system"
Creating overlays for /usr /etc/pacman.d /var/lib/pacman /var/cache/pacman:
0. Disabling service
Removed "/etc/systemd/system/multi-user.target.wants/rwfusd.service".
# It's okay if unmounting fails here #
umount: /usr: not mounted.
umount: /etc/pacman.d: not mounted.
umount: /var/lib/pacman: no mount point specified.
umount: /var/cache/pacman: not mounted.
umount: /opt/rwfus/rwfus.btrfs: not mounted.
1. Creating directories...
2. Updating disk image...
mount: /dev/loop0 mounted on /opt/rwfus/mount.
Resize device id 1 (/dev/loop0) from 8.00GiB to max
umount: /home/.steamos/offload/opt/rwfus/mount (/dev/loop0) unmounted
3. Generating service...
Generating service rwfusd
script /opt/rwfus/service/rwfusd.sh
unit /opt/rwfus/service/rwfusd.service
4. Storing configuration...
Storing config file to /etc/opt/rwfus.conf...
-rw-r--r-- 1 root root 1052 Oct 7 13:53 /etc/opt/rwfus.conf
5. Copying service to /etc/systemd/system
'/opt/rwfus/service/rwfusd.service' -> '/etc/systemd/system/rwfusd.service'
6. Enabling service unit
Created symlink /etc/systemd/system/multi-user.target.wants/rwfusd.service → /etc/systemd/system/rwfusd.service.
Job for rwfusd.service failed because the control process exited with error code.
See "systemctl status rwfusd.service" and "journalctl -xeu rwfusd.service" for details.
Error when enabling service. See /var/log/rwfus.log for information.
Adding Rwfus to /home/.steamos/offload/usr/local/bin
'./rwfus_include/config.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/config.sh'
'./rwfus_include/disk.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/disk.sh'
'./rwfus_include/info.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/info.sh'
'./rwfus_include/manage-install.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/manage-install.sh'
'./rwfus_include/service-main.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/service-main.sh'
'./rwfus_include/service.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/service.sh'
'./rwfus_include/testlog.sh' -> '/home/.steamos/offload/usr/local/bin/rwfus_include/testlog.sh'
'./rwfus' -> '/home/.steamos/offload/usr/local/bin/rwfus'
Unmasking and enabling usr-local.mount
Unit usr-local.mount does not exist, proceeding anyway.
Failed to enable unit: Unit file usr-local.mount does not exist.
Done!
(deck@steamdeck rwfus)$ systemctl status rwfusd.service
× rwfusd.service - Rwfus: Carry Pacman across SteamOS updates!
Loaded: loaded (/etc/systemd/system/rwfusd.service; enabled; preset: disabled)
Active: failed (Result: exit-code) since Sat 2023-10-07 14:01:46 CEST; 36s ago
Main PID: 22908 (code=exited, status=1/FAILURE)
CPU: 160ms
Oct 07 14:01:46 steamdeck rwfusd.sh[22908]: lowerdir /var/lib/pacman not found. Aborting.
Oct 07 14:01:46 steamdeck rwfusd.sh[23025]: umount: /usr (overlay) unmounted
Oct 07 14:01:46 steamdeck rwfusd.sh[23026]: umount: /etc/pacman.d (overlay) unmounted
Oct 07 14:01:46 steamdeck rwfusd.sh[23027]: umount: /var/lib/pacman: no mount point specified.
Oct 07 14:01:46 steamdeck rwfusd.sh[23028]: umount: /var/cache/pacman: not mounted.
Oct 07 14:01:46 steamdeck rwfusd.sh[23032]: umount: /home/.steamos/offload/opt/rwfus/mount (/dev/loop0) unmounted
Oct 07 14:01:46 steamdeck rwfusd.sh[22908]: start usr-local.mount
Oct 07 14:01:46 steamdeck systemd[1]: rwfusd.service: Main process exited, code=exited, status=1/FAILURE
Oct 07 14:01:46 steamdeck systemd[1]: rwfusd.service: Failed with result 'exit-code'.
Oct 07 14:01:46 steamdeck systemd[1]: Failed to start Rwfus: Carry Pacman across SteamOS updates!.
(3)(deck@steamdeck rwfus)$ journalctl -xeu rwfusd.service
Oct 07 14:01:44 steamdeck rwfusd.sh[22908]: stop var-cache-pacman.mount usr-local.mount
Oct 07 14:01:44 steamdeck rwfusd.sh[22908]: mask var-cache-pacman.mount pacman-cleanup.service
Oct 07 14:01:46 steamdeck rwfusd.sh[22999]: mount: /dev/loop0 mounted on /opt/rwfus/mount.
Oct 07 14:01:46 steamdeck rwfusd.sh[23018]: Resize device id 1 (/dev/loop0) from 8.00GiB to max
Oct 07 14:01:46 steamdeck rwfusd.sh[22908]: Creating overlay (/opt/rwfus/mount/upper/usr, /opt/rwfus/mount/work/usr) on /usr
Oct 07 14:01:46 steamdeck rwfusd.sh[23021]: mount: overlay mounted on /usr.
Oct 07 14:01:46 steamdeck rwfusd.sh[22908]: Successfully overlaid /opt/rwfus/mount/upper/usr on /usr
Oct 07 14:01:46 steamdeck rwfusd.sh[22908]: Creating overlay (/opt/rwfus/mount/upper/etc-pacman.d, /opt/rwfus/mount/work/etc-pacman.d) on /etc/pacman.d
Oct 07 14:01:46 steamdeck rwfusd.sh[23023]: mount: overlay mounted on /etc/pacman.d.
Oct 07 14:01:46 steamdeck rwfusd.sh[22908]: Successfully overlaid /opt/rwfus/mount/upper/etc-pacman.d on /etc/pacman.d
Oct 07 14:01:46 steamdeck rwfusd.sh[22908]: Creating overlay (/opt/rwfus/mount/upper/var-lib-pacman, /opt/rwfus/mount/work/var-lib-pacman) on /var/lib/pacman
Oct 07 14:01:46 steamdeck rwfusd.sh[22908]: lowerdir /var/lib/pacman not found. Aborting.
Oct 07 14:01:46 steamdeck rwfusd.sh[23025]: umount: /usr (overlay) unmounted
Oct 07 14:01:46 steamdeck rwfusd.sh[23026]: umount: /etc/pacman.d (overlay) unmounted
Oct 07 14:01:46 steamdeck rwfusd.sh[23027]: umount: /var/lib/pacman: no mount point specified.
Oct 07 14:01:46 steamdeck rwfusd.sh[23028]: umount: /var/cache/pacman: not mounted.
Oct 07 14:01:46 steamdeck rwfusd.sh[23032]: umount: /home/.steamos/offload/opt/rwfus/mount (/dev/loop0) unmounted
Oct 07 14:01:46 steamdeck rwfusd.sh[22908]: start usr-local.mount
Oct 07 14:01:46 steamdeck systemd[1]: rwfusd.service: Main process exited, code=exited, status=1/FAILURE
░░ Subject: Unit process exited
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░
░░ An ExecStart= process belonging to unit rwfusd.service has exited.
░░
░░ The process' exit code is 'exited' and its exit status is 1.
Oct 07 14:01:46 steamdeck systemd[1]: rwfusd.service: Failed with result 'exit-code'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░
░░ The unit rwfusd.service has entered the 'failed' state with result 'exit-code'.
Oct 07 14:01:46 steamdeck systemd[1]: Failed to start Rwfus: Carry Pacman across SteamOS updates!.
░░ Subject: A start job for unit rwfusd.service has failed
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░
░░ A start job for unit rwfusd.service has finished with a failure.
░░
░░ The job identifier is 5078 and the job result is failed.
As seen in #17, Rwfus sometimes fails to unmount overlays, which causes subsequent mounts to fail.
In practice, this is generally not harmful, but failing systemd units aren't great.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.