The crucial part of the paper is that they:
• Added a new kernel configuration option to allow theuser to select if he/she wants to compile the Linux kernel as UKL.
• Added a call to an undefined symbol (protected by an #ifdef) that can be used to invoke application code rather than creating the first userspace process.
• Created a small UKL library which has stubs for syscalls. These stubs hide the details of invoking the required kernel functionality now that the regular interface (i.e.,the syscall instruction) is no longer used.
• Changed glibc so that instead of making syscalls into the kernel, it makes function calls into UKL library.
• Changed the kernel linker script to define new segments such as thread local storage (TLS) segments which are present in application ELF binaries.
• Added a small amount of initialization code before invoking the application to replace initialization normally done by user level code, e.g., for network inter-face initialization.
• Modified the kernel linking stage to include the application code, glibc and UKL library to create a single binary.
Basically, I think the idea is you get all the linux syscalls (+ filesystems... + network stack... + hardware support... + everything) for 'free'. Sure you'll have a pretty large binary, but you won't have to write anything.