> Is that something that KDE can address internally by detecting ENOSYS and falling back to another option? Yes, it should be possible for them to force disable renameat2 (requires Linux 3.16), getentropy (requires Linux 3.17), and statx (requires Linux 4.11). https://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/global/minimum-linux_p.h?id=7148dfc67ff20c1c625d203aa47b574b3aaa5db1#n77 https://phabricator.kde.org/R257:a029f2957e947f6e32fe8a595edb0ac553654e90 Then it would require Linux 2.6.28 [1] or rather Linux 3.2 [2a][2b][2c], since you use glibc 2.27, which is still fine, because both EL7 and Ubuntu 14.04 LTS have newer kernels: - RHEL 7: Linux 3.10 - Ubuntu 14.04 LTS: Linux 3.13 Snaps support RHEL since version 7.6, Ubuntu since version 14.04, and Debian since version 9. [1] https://github.com/flathub/flathub/issues/805#issuecomment-453004369 https://bugs.kde.org/show_bug.cgi?id=403042#c2 [2a] https://www.sourceware.org/ml/libc-alpha/2016-08/msg00212.html Originally posted by Adhemerval Zanella: > The GNU C Library version 2.24 is now available > (...) > The minimum Linux kernel version that this version of the GNU C Library can be used with is 3.2, except on i[4567]86 and x86_64, where Linux kernel version 2.6.32 or later suffices (on architectures that already required kernel versions more recent than 3.2, those requirements remain unchanged). [2b] https://sourceware.org/ml/libc-alpha/2017-08/msg00010.html Originally posted by Siddhesh Poyarekar: > The GNU C Library version 2.26 is now available > (...) > Linux kernel 3.2 or later is required at runtime, on all architectures supported by that kernel. (This is a change from version 2.25 only for x86-32 and x86-64.) [2c] https://paste.ubuntu.com/p/mYn78gPGGf/ Fortunately, glibc 2.30 from Ubuntu 19.10 still requires Linux 3.2. http://mirrors.kernel.org/ubuntu/pool/main/g/glibc/libc6_2.30-0ubuntu3_amd64.deb ``` $ find lib/x86_64-linux-gnu/ -print0 2>/dev/null | xargs -0 -I{} file '{}' | grep -Z 'for GNU/Linux ' | sort -z -fuV lib/x86_64-linux-gnu/libnss_nisplus-2.30.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=d559cd4fecb3e9ec6034929433232fe9cf9bf2df, for GNU/Linux 3.2.0, stripped lib/x86_64-linux-gnu/libcrypt-2.30.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=74cd3b111e7f7dccd596228a37b5ae1d3e6a794a, for GNU/Linux 3.2.0, stripped lib/x86_64-linux-gnu/libresolv-2.30.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=ff5d93702a4017d41249ce54a6c14f813a8db423, for GNU/Linux 3.2.0, stripped lib/x86_64-linux-gnu/libpcprofile.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=ed69d66144b257737a64127896e95180f6815e72, for GNU/Linux 3.2.0, stripped lib/x86_64-linux-gnu/libmemusage.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=23d60bb0613a7cb0563f64807166a54c554de0b6, for GNU/Linux 3.2.0, stripped lib/x86_64-linux-gnu/libc-2.30.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), BuildID[sha1]=75e3e2d9596aae251330ae7ef3f91a847fc62641, for GNU/Linux 3.2.0, stripped lib/x86_64-linux-gnu/libSegFault.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=3bf8ae72550e3c53e3d9116562fc56979a5a4081, for GNU/Linux 3.2.0, stripped lib/x86_64-linux-gnu/librt-2.30.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=d0f294e039c6e5de8a1e6ea04dba789ff95ae218, for GNU/Linux 3.2.0, stripped lib/x86_64-linux-gnu/libBrokenLocale-2.30.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=f4991f571357cf4afb3b6ef9b6d54d72445f0991, for GNU/Linux 3.2.0, stripped lib/x86_64-linux-gnu/libnsl-2.30.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=83e1504c4089fd82229005d650e55b934a93c0ec, for GNU/Linux 3.2.0, stripped lib/x86_64-linux-gnu/libnss_files-2.30.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=8633f0eda56e18c053586bb832b9277eb22a00da, for GNU/Linux 3.2.0, stripped lib/x86_64-linux-gnu/libutil-2.30.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=d1827de3df144706cee2ca4ef03c74faf50061bc, for GNU/Linux 3.2.0, stripped lib/x86_64-linux-gnu/libm-2.30.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=52276261b9ecfdbda554a1986593638de377966a, for GNU/Linux 3.2.0, stripped lib/x86_64-linux-gnu/libanl-2.30.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=d45ab76d941abcf989069496a17633619a477b76, for GNU/Linux 3.2.0, stripped lib/x86_64-linux-gnu/libmvec-2.30.so: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=47f7af5db1f6ed23d19a9d11d1d4240c63fecf4b, for GNU/Linux 3.2.0, stripped lib/x86_64-linux-gnu/libpthread-2.30.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), BuildID[sha1]=7c74e0d0efaacdcf08ab6c3c171534c89d9f637d, for GNU/Linux 3.2.0, not stripped lib/x86_64-linux-gnu/libnss_hesiod-2.30.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=38f57f4d2d8e56540901c6fe6b989d07af9756d7, for GNU/Linux 3.2.0, stripped lib/x86_64-linux-gnu/libnss_dns-2.30.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=8f23a6e00ef8cfcbfe09270b19fc118c5e124fd0, for GNU/Linux 3.2.0, stripped lib/x86_64-linux-gnu/libthread_db-1.0.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=0f96c3f70a8a92c99c035592a8c499daddebff8e, for GNU/Linux 3.2.0, stripped lib/x86_64-linux-gnu/libnss_nis-2.30.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=199d51b3cea58e6d8555a464cb6c42de9e8ae1da, for GNU/Linux 3.2.0, stripped lib/x86_64-linux-gnu/libdl-2.30.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=570a2ae18adb1b696a7097f9fc3049c5d56c4f73, for GNU/Linux 3.2.0, stripped lib/x86_64-linux-gnu/libnss_compat-2.30.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=fcbe255db86c7acbef90fcdde675a67d80adf432, for GNU/Linux 3.2.0, stripped ``` Let's hope this won't change in Ubuntu 20.04 LTS. > Is there something we can improve on the snapd side? When we hit a similar problem last year in flatpak, I proposed to add an option to determine kernel requirements. https://github.com/flatpak/flatpak/issues/2551#issue-397366787 The flatpak creator pointed out that we should check rather for symbols/features, because some kernels may be highly modified, as it is in EL. https://github.com/flatpak/flatpak/issues/2551#issuecomment-456002791 > Kernel requirements are tricky things. Generally the dependency is not on a specific version but on some feature/behaviour, and those are often backported to enterprise kernel without bumping the kernel version. You can also perform some additional verification for runtimes and apps, to make sure that they won't require Linux > 3.2. Maybe CI that runs apps (and runtimes) on old kernels would help us to prevent problems like this in the future. This was originally proposed by Matthias Clasen from Fedora Silverblue. Anyway, without additional checks, we can hit this problem again in the future (e.g. core20, core22, core24, etc).