The motivation of the implementation is to allow any foreign guest OSes
with systemd v259+ to boot using systemd-nspawn(1), otherwise any
systemd service requiring importing credentials will fail, including
journald, D-Bus service and getty. We used to work around this issue by
patching systemd to retry the clone() without CLONE_NEWNS, which is not
and can not be implemented in QEMU user emulation.
mount(8) from util-linux worked prior to this patch because it will
fallback to the old mount(2) syscall if fsmount(8) series of syscalls
is not available.
Tested good on an x86-64 host, with:
- an AOSC OS mips64r6el guest, which boots successfully with full systemd
support using systemd-nspawn(1).
- a Gentoo ppc (big endian) guest, which boots successfully with full
systemd support, using systemd-nspawn(1).
Changes from v1:
* Add missing guard for FSCONFIG_CMD_CREATE_EXCL in strace.c, since it is
only available since 6.6.
* Fix some wording issues in the cover letter.
Xinhui Yang (2):
linux-user: implement fsmount(2) series of syscalls
linux-user/strace: add fsmount series of syscalls
linux-user/strace.c | 105 +++++++++++++++++++++++++++++++++++++++++
linux-user/strace.list | 15 ++++++
linux-user/syscall.c | 81 +++++++++++++++++++++++++++++++
3 files changed, 201 insertions(+)
--
2.52.0