Kernel Log: native KVM tool, new kernels galore
by Thorsten Leemhuis
Dissatisfied with the Qemu code, the developers have created a simple emulation tool for KVM. The latest drivers for Intel graphics chips improve the kernel's support for the video components of various current processors; a wealth of new long-term and stable kernels fix bugs and security holes.
In late March, Pekka Enberg announced on the LKML the development of a native KVM tool. This tool emulates some of the hardware components that guest systems access during operation; in KVM virtualisation, this task is nowadays mostly handled by a QEMU derivative, created and maintained as part of the KVM project. The KVM code within the kernel works in close co-operation with this emulation code, ensuring that the required processor resources are allocated; however, a few hardware components such as the interrupt controller are emulated by the KVM kernel code itself, because this considerably enhances performance.
In his email, Enberg writes that his aim was to create a light-weight and clean KVM emulation implementation that can boot Linux guests. The developer said that the tool is "[...] just a hobby, won't be big and professional like QEMU [...]" – a play on the words Linus Torvalds used in his first email about the development of Linux.
Enberg describes the current version of the tool, which is simply called "kvm", as a "great learning tool if you want to get your feet wet in virtualisation land"; the tool is said to comprise only five thousand lines of code that can reportedly already boot a guest Linux image. However, the developer said that the "development prototype" is still lacking various essentials, including network, graphics and SMP support. An emulated serial interface is, therefore, currently being used to interact with the already mentioned Linux image.
In the subsequent discussion on the LKML, various developers expressed a keen interest in the tool, speculating about whether a continued development effort could create a replacement for Qemu in the long term. Some of the kernel and KVM hackers have been rather unhappy with the Qemu code, as it is already many years old and considered untidy in various places.
It remains to be seen whether the dissatisfaction with Qemu will, in the long term, motivate enough developers to provide the new tool with all the features that are important for everyday KVM performance. Despite the ongoing dissatisfaction with the Qemu code, numerous KVM developers have long worked to add all the functions which are required for regular KVM operation and exist in the KVM variant of Qemu to the official version of Qemu, with the eventual aim of discontinuing the KVM variant and simplifying maintenance – they obviously believe that this approach is more promising than continuing to develop, and clean up, the Qemu code themselves. The developers had already discussed this a year ago; Enberg said that the largely inconclusive outcome of this LKML discussion was among the aspects that motivated the development of the new tool.
The Tuxera developers have merged NTFS-3G and ntfsprogs to create ntfs-3g-ntfsprogs – this is intended to simplify code management and allow the programmers to focus their development efforts on creating enhancements. Ntfsprogs is the older of the two projects and contained such programs as mkfs.ntfs, ntfsfix and ntfsresize for creating, fixing and resizing NTFS file systems.
These programs were originally developed in parallel with the NTFS code that is included in the Linux kernel. However, the kernel's NTFS code has become quite insignificant because the NTFS-3G project's Fuse-based driver offers a much larger range of features – including full write support on NTFS file systems. However, the projects repeatedly shared code with each other in the past, thereby creating code duplication; while the duplicates currently still exist in the merged code, they will probably disappear over time.