mirror of
https://github.com/token2/snapd.git
synced 2026-03-13 11:15:47 -07:00
While squashfs is always read-only, when mount creates the required loop device, it does not know that squashfs is a read-only filesystem. This causes the loop devices for snaps mounted in the initramfs to be be writable. Since the snaps are stored on `/run/mnt/data`, it means the `/run/mnt/data` cannot be remounted read-only. There is a mount cycle now in Ubuntu Core where `/run/mnt/data` cannot be unmounted because it contains the snap for the Core snap which is mounted as root. After switching to the shutdown ramfs, then systemd tries again to umount the remaining file systems as well as the root file system. At this point, it still cannot umount `/run/mnt/data`, so `systemd-shutdown` tries to remount read-only. But since the loop device for the Core snap that cannot be unmounted is still writable, then `/run/mnt/data` cannnot be remounted read-only. This results in Ubuntu Core not properly unmounting `/run/mnt/data`. This can be seen in the screen or serial console right before powering off or rebooting: ``` Failed to remount '/oldroot/run/mnt/data' read-only: Device or resource busy ``` With this fix, this error disappears. While other errors about unmounting are still here, it is safer because everything is read-only.