Expanding binary compatibility mode
- Mentors
- RazvanD, Simon Kuenzer, Stefan Jumarea
- Organization
- Unikraft
- Technologies
- c, operating systems
- Topics
- operating systems, cloud, Binary Compatibility, Unikernel
One of the weak points of most unikernel projects has always been application support, often requiring that applications be ported to the target unikernel OS.
In this area, Unikraft has made significant progress by prioritizing POSIX compatibility.
Through its binary compatibility mode, Unikraft allows unmodified ELFs to be executed, with resulting syscalls wrapped and redirected to the Unikraft core via the app-elfloader.
Currently, Unikraft supports loading both statically and dynamically linked ELFs in binary compatibility mode.
However, Unikraft has not been able to fully support all behaviors of glibc and user applications, which causes certain programs to fail in initializing or crash.
Additionally, running applications in binary compatibility mode incurs performance loss compared to ported programs, due to the TLS switching and system interrupts caused by binary syscalls.
To address the issues mentioned above, this project focuses on expanding Unikraft's binary compatibility mode by:
* Using vDSO (virtual dynamic shared object) and vsyscall (virtual system call) to bypass binary syscalls.
* Expanding supported syscalls to provide compatibility for a wider range of applications.
* Adding AArch64 architecture support for app-elfloader and syscall-shim layer.
* Implementing a faster way to port new applications by externally compiling.
* Establishing a CI/CD system to ensure that new commits do not break libc compatibility.