Shared directories are a popular method for sharing file system resources between guest and host systems. Antmicro’s Renode simulation framework offers several methods of filesystem sharing, one of them being via the popular Virtio standard. Virtiofs, a later addition to the Virtio subsystem, allows virtual machines to access a directory tree on the host, which in turn lets developers share parts of their host machine’s directory tree with their simulated device without the need to re-pack the rootfs with every code iteration.
This thesis project focused on implementing support for Virtiofs in Renode, using the FUSE protocol and a filesystem daemon based on the libfuse library, as well as local inter-process communication sockets to leverage local emulation instead of network-based emulation. The resulting solution is user-friendly and non-invasive to the operating system (Linux in this case), making development and testing of Linux kernel drivers and user space applications, as well as automated testing of varying filesystem payloads, more time-efficient.