[edge] mount from util-linux 2.39 requires mount_setattr syscall to boot successfully
Weekly edge test failed after upgrading util-linux: openrc setup failed early when mounting /proc:
* Mounting /proc ...mount: /proc: mount(2) system call failed: Function not implemented.
dmesg(1) may have more information after failed mount system call.
dmesg obviously doesn't have anything to say about it, the failing command is this one:
mount -n -t proc -o noexec,nosuid,nodev proc /proc
mount works when not specifying any of noexec/nosuid/nodev, running with strace it fails when using mount_setattr, which is not available on our kernel:
mount_setattr(4, "", AT_EMPTY_PATH, {attr_set=MOUNT_ATTR_NOSUID|MOUNT_ATTR_NODEV|MOUNT_ATTR_NOEXEC, attr_clr=0, propagation=0 /* MS_??? */, userns_fd=0}, 32) = -1 ENOSYS (Function not implemented
The syscall was added in linux 5.12, which is old enough but unfortunately we're not at the leisure of upgrading the kernel easily (currently running 5.10), and even if we were it'd require some planning with most of our current users never following up on the upgrade (welcome to embedded); so let's try to keep compatibility for a bit longer :P
There's not much to do alpine-side right now, the issue is already tracked upstream:
The problem being that they currently decide if they should fallback to the old API at compile time and not runtime.
There's a fix ready under review:
I'm a bit busy this week, but will prepare a backport/update after it's been merged, or next week, whichever comes first.