Bash on Ubuntu on macOS
Takaya Saeki, Yuichi Nishiwaki, Takahiro Shinagawa, Shinichi Honiden · 2017
Linux is a popular operating system (OS) as a production environment, while many developers prefer to use macOS for their daily development. One way to deal with this situation is running Linux in a virtual machine and the other is porting development environments from Linux to macOS. However, using a virtual machine has a resource sharing problem, and porting environments is costly and often incomplete. A promising approach to low-cost and seamless resource sharing is to develop a Linux compatibility layer for macOS. Unfortunately, existing methods of implementing OS compatibility layers lack robustness or flexibility. In this paper, we propose a new architecture of OS-compatibility layers. It allows user-space implementation of the core emulation layer in the host OS to improve robustness while maintaining the flexible and powerful emulation ability without heavily depending on the host OS kernel by exploiting virtualization technology. We implemented our approach and confirmed that Ubuntu's userland runs on macOS. Our experimental results show that our approach has reasonable performance for real world applications.