ENOSYS(1)

โœจ ENOSYS(1) โœจ

okay bestie so you know how this whole thing lives in the User Commands section of the manual? yeah. and it's like, the enosys page. let's get into it ๐Ÿ’…


๐ŸŒธ NAME ๐ŸŒธ

enosys โ€” a lil utility that makes syscalls fail with ENOSYS. literally its whole job. iconic.


๐ŸŽ€ SYNOPSIS ๐ŸŽ€

enosys [--syscall|-s syscall] command

๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

so enosys is a simple command that runs a child process where certain syscalls just... fail. with errno set to ENOSYS. not me making your syscalls go poof ๐Ÿ’€

it's giving vibe check for old kernels โ€” you use it to test how an app behaves when syscalls are missing, like what would happen if you were running on an ancient kernel. fr fr.


โœจ OPTIONS โœจ

  • -s, --syscall โ€” the syscall you wanna block with ENOSYS. you can specify this multiple times, no cap. and if you want a different error number or name, just tack it on with a colon. ๐Ÿซถ
  • -i, --ioctl โ€” the ioctl you wanna block with ENOTTY. also stackable, specify it as many times as you want. alternative error number or name? colon. same deal. ๐Ÿ’–
  • -l, --list โ€” list out the syscalls that enosys knows about. a little roster, if you will. ๐Ÿ“‹
  • -m, --list-ioctl โ€” list out the ioctls that enosys knows about. the ioctl roster. โœจ
  • -d, --dump[=file] โ€” dump the seccomp bytecode filter to standard output.

the dump can, for example, be used by setpriv --seccomp-filter. so like, you can hand it off to your other fave tool. ๐ŸŽ

  • -h, --help โ€” show the help text and dip. ๐Ÿ‘‹
  • -V, --version โ€” show the version and dip. ๐Ÿ‘‘

๐ŸŒˆ EXAMPLES ๐ŸŒˆ

# fail syscall "fallocate" with ENOSYS
enosys -s fallocate ...

# fail syscall "fallocate" with ENOMEM
enosys -s fallocate:ENOMEM ...

# fail syscall "fallocate" with value 12/ENOMEM
enosys -s fallocate:12 ...

# fail ioctl FIOCLEX with ENOTTY
enosys -i FIOCLEX ...

# fail ioctl FIOCLEX with ENOMEM
enosys -i FIOCLEX:ENOMEM ...

# fail ioctl FIOCLEX with value 12/ENOMEM
enosys -i FIOCLEX:12 ...

see the pattern? colon = "actually, fail it with this instead". the way that's so clean ๐Ÿ˜ญ


๐Ÿ’œ EXIT STATUS ๐Ÿ’œ

enosys exits with the status code of the process it executed. periodt. but these two values have special meanings, so pay attention bestie:

  1. 1 โ€” internal error. something inside went wrong. ๐Ÿ™ˆ
  2. 2 โ€” the system does not provide the necessary functionality. like, the machine literally can't do the thing. ๐Ÿ’€

๐Ÿ‘‘ AUTHORS ๐Ÿ‘‘

Thomas WeiรŸschuh <thomas@t-8ch.de> โ€” shoutout to the main character who wrote this ๐Ÿซถ


๐ŸŒŸ SEE ALSO ๐ŸŒŸ

syscall(2)


๐Ÿ“ REPORTING BUGS ๐Ÿ“

found a bug? for bug reports, use the issue tracker: <https://github.com/util-linux/util-linux/issues>. go tell them, they wanna know ๐Ÿ’Œ


๐Ÿงš AVAILABILITY ๐Ÿงš

the enosys command is part of the util-linux package, which can be downloaded from the Linux Kernel Archive: <https://www.kernel.org/pub/linux/utils/util-linux/>. go grab it bestie ๐Ÿ›๏ธ


and that's the whole page, no notes ๐Ÿ’– this was util-linux 2.42.4, dated 2026-09-21 โ€” mwah, slay, bye ๐Ÿ‘‘โœจ

๐Ÿ“ฆ where this page comes from
  • arch rolling: util-linux 2.42.4-1 ยท BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause-UC AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-or-later AND ISC AND LGPL-2.1-or-later AND LicenseRef-PublicDomain
  • ๐Ÿ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms