Linux Compatibility

"We don't break user space."

--- Linus Torvalds

Asterinas is dedicated to maintaining compatibility with the Linux ABI, ensuring that applications and administrative tools designed for Linux can seamlessly operate within Asterinas. While we prioritize compatibility, it is important to note that Asterinas does not, nor will it in the future, support the loading of Linux kernel modules.

System Calls

At the time of writing, Asterinas implements 177 out of the 336 system calls provided by Linux on x86-64 architecture.

NumbersNamesIs Implemented
0read
1write
2open
3close
4stat
5fstat
6lstat
7poll
8lseek
9mmap
10mprotect
11munmap
12brk
13rt_sigaction
14rt_sigprocmask
15rt_sigreturn
16ioctl
17pread64
18pwrite64
19readv
20writev
21access
22pipe
23select
24sched_yield
25mremap
26msync
27mincore
28madvise
29shmget
30shmat
31shmctl
32dup
33dup2
34pause
35nanosleep
36getitimer
37alarm
38setitimer
39getpid
40sendfile
41socket
42connect
43accept
44sendto
45recvfrom
46sendmsg
47recvmsg
48shutdown
49bind
50listen
51getsockname
52getpeername
53socketpair
54setsockopt
55getsockopt
56clone
57fork
58vfork
59execve
60exit
61wait4
62kill
63uname
64semget
65semop
66semctl
67shmdt
68msgget
69msgsnd
70msgrcv
71msgctl
72fcntl
73flock
74fsync
75fdatasync
76truncate
77ftruncate
78getdents
79getcwd
80chdir
81fchdir
82rename
83mkdir
84rmdir
85creat
86link
87unlink
88symlink
89readlink
90chmod
91fchmod
92chown
93fchown
94lchown
95umask
96gettimeofday
97getrlimit
98getrusage
99sysinfo
100times
101ptrace
102getuid
103syslog
104getgid
105setuid
106setgid
107geteuid
108getegid
109setpgid
110getppid
111getpgrp
112setsid
113setreuid
114setregid
115getgroups
116setgroups
117setresuid
118getresuid
119setresgid
120getresgid
121getpgid
122setfsuid
123setfsgid
124getsid
125capget
126capset
127rt_sigpending
128rt_sigtimedwait
129rt_sigqueueinfo
130rt_sigsuspend
131sigaltstack
132utime
133mknod
134uselib
135personality
136ustat
137statfs
138fstatfs
139sysfs
140getpriority
141setpriority
142sched_setparam
143sched_getparam
144sched_setscheduler
145sched_getscheduler
146sched_get_priority_max
147sched_get_priority_min
148sched_rr_get_interval
149mlock
150munlock
151mlockall
152munlockall
153vhangup
154modify_ldt
155pivot_root
156_sysctl
157prctl
158arch_prctl
159adjtimex
160setrlimit
161chroot
162sync
163acct
164settimeofday
165mount
166umount2
167swapon
168swapoff
169reboot
170sethostname
171setdomainname
172iopl
173ioperm
174create_module
175init_module
176delete_module
177get_kernel_syms
178query_module
179quotactl
180nfsservctl
181getpmsg
182putpmsg
183afs_syscall
184tuxcall
185security
186gettid
187readahead
188setxattr
189lsetxattr
190fsetxattr
191getxattr
192lgetxattr
193fgetxattr
194listxattr
195llistxattr
196flistxattr
197removexattr
198lremovexattr
199fremovexattr
200tkill
201time
202futex
203sched_setaffinity
204sched_getaffinity
205set_thread_area
206io_setup
207io_destroy
208io_getevents
209io_submit
210io_cancel
211get_thread_area
212lookup_dcookie
213epoll_create
214epoll_ctl_old
215epoll_wait_old
216remap_file_pages
217getdents64
218set_tid_address
219restart_syscall
220semtimedop
221fadvise64
222timer_create
223timer_settime
224timer_gettime
225timer_getoverrun
226timer_delete
227clock_settime
228clock_gettime
229clock_getres
230clock_nanosleep
231exit_group
232epoll_wait
233epoll_ctl
234tgkill
235utimes
236vserver
237mbind
238set_mempolicy
239get_mempolicy
240mq_open
241mq_unlink
242mq_timedsend
243mq_timedreceive
244mq_notify
245mq_getsetattr
246kexec_load
247waitid
248add_key
249request_key
250keyctl
251ioprio_set
252ioprio_get
253inotify_init
254inotify_add_watch
255inotify_rm_watch
256migrate_pages
257openat
258mkdirat
259mknodat
260fchownat
261futimesat
262newfstatat
263unlinkat
264renameat
265linkat
266symlinkat
267readlinkat
268fchmodat
269faccessat
270pselect6
271ppoll
272unshare
273set_robust_list
274get_robust_list
275splice
276tee
277sync_file_range
278vmsplice
279move_pages
280utimensat
281epoll_pwait
282signalfd
283timerfd_create
284eventfd
285fallocate
286timerfd_settime
287timerfd_gettime
288accept4
289signalfd4
290eventfd2
291epoll_create1
292dup3
293pipe2
294inotify_init1
295preadv
296pwritev
297rt_tgsigqueueinfo
298perf_event_open
299recvmmsg
300fanotify_init
301fanotify_mark
302prlimit64
303name_to_handle_at
304open_by_handle_at
305clock_adjtime
306syncfs
307sendmmsg
308setns
309getcpu
310process_vm_readv
311process_vm_writev
312kcmp
313finit_module
318getrandom
322execveat
327preadv2
328pwritev2
435clone3

File Systems

Here is the list of supported file systems:

  • Devfs
  • Devpts
  • Ext2
  • Procfs
  • Ramfs

Sockets

Here is the list of supported socket types:

  • TCP sockets over IPv4
  • UDP sockets over IPv4
  • Unix sockets

vDSO

Here is the list of supported symbols in vDSO:

  • __vdso_clock_gettime
  • __vdso_gettimeofday
  • __vdso_time

Boot Protocols

Here is the list of supported boot protocols: