KernelVM: Teaching Linux Kernel Programming through a Browser-Based Virtual Machine

Published in Proceedings of the 56th ACM Technical Symposium on Computer Science Education V. 1, 2025

Recommended citation: Wen, E., Ma, S., Denny, P., Tempero, E., Weber, G., & Yue, Z. (2025, February). KernelVM: Teaching Linux Kernel Programming through a Browser-Based Virtual Machine. In Proceedings of the 56th ACM Technical Symposium on Computer Science Education V. 1 (pp. 1204-1210). https://dl.acm.org/doi/abs/10.1145/3641554.3701831

Providing students with hands-on experience in kernel programming within a real-world operating system is highly beneficial in an Operating Systems (OS) course for teaching core operating system concepts and developing practical skills. However, accessing suitable devices for such hands-on experimentation poses significant challenges. Traditional solutions involve hosting virtual machines on cloud platforms, which are expensive and do not scale well with increasing student numbers. Additionally, many students’ personal devices, such as Macs or iPads, have limited support for running Linux, creating further barriers. In this paper, we introduce KernelVM, a novel cost-effective platform that offers students a Linux virtual machine with full superuser access and pre-configured kernel programming toolchains. KernelVM is accessible via any modern browser on any device. It performs all computations locally within the user’s browser, thus eliminating cloud computing costs. KernelVM provides a robust learning environment by incorporating interactive virtual hardware components and an automatic evaluation system, supporting a wide range of tasks, including multi-threaded cryptographic kernel modules and Linux drivers for hardware interaction. We detail the design of KernelVM, and describe our experiences incorporating it for the first time into an OS course with 159 undergraduate students. We found that KernelVM was instrumental in improving the quality and efficiency of hands-on learning experiences, with students reporting increased satisfaction and engagement due to the immediate feedback and the ability to experiment in a risk-free environment. Our experience suggests that KernelVM not only addresses the logistical challenges of kernel programming education, but it helps foster a highly interactive and engaging learning experience. Recommended citation:

@inproceedings{10.1145/3641554.3701831, author = {Wen, Elliott and Ma, Sean and Denny, Paul and Tempero, Ewan and Weber, Gerald and Yue, Zongcheng}, title = {KernelVM: Teaching Linux Kernel Programming through a Browser-Based Virtual Machine}, year = {2025}, isbn = {9798400705311}, publisher = {Association for Computing Machinery}, address = {New York, NY, USA}, url = {https://doi.org/10.1145/3641554.3701831}, doi = {10.1145/3641554.3701831}, abstract = {Providing students with hands-on experience in kernel programming within a real-world operating system is highly beneficial in an Operating Systems (OS) course for teaching core operating system concepts and developing practical skills. However, accessing suitable devices for such hands-on experimentation poses significant challenges. Traditional solutions involve hosting virtual machines on cloud platforms, which are expensive and do not scale well with increasing student numbers. Additionally, many students’ personal devices, such as Macs or iPads, have limited support for running Linux, creating further barriers. In this paper, we introduce KernelVM, a novel cost-effective platform that offers students a Linux virtual machine with full superuser access and pre-configured kernel programming toolchains. KernelVM is accessible via any modern browser on any device. It performs all computations locally within the user’s browser, thus eliminating cloud computing costs. KernelVM provides a robust learning environment by incorporating interactive virtual hardware components and an automatic evaluation system, supporting a wide range of tasks, including multi-threaded cryptographic kernel modules and Linux drivers for hardware interaction. We detail the design of KernelVM, and describe our experiences incorporating it for the first time into an OS course with 159 undergraduate students. We found that KernelVM was instrumental in improving the quality and efficiency of hands-on learning experiences, with students reporting increased satisfaction and engagement due to the immediate feedback and the ability to experiment in a risk-free environment. Our experience suggests that KernelVM not only addresses the logistical challenges of kernel programming education, but it helps foster a highly interactive and engaging learning experience.}, booktitle = {Proceedings of the 56th ACM Technical Symposium on Computer Science Education V. 1}, pages = {1204–1210}, numpages = {7}, keywords = {computer science education, linux kernel programming, virtual machine, web-based education}, location = {Pittsburgh, PA, USA}, series = {SIGCSETS 2025} }