Modern real-world operating systems are too complex to be taught to undergraduates and other instructional operating systems are not complete and usable and do not work on real hardware. By providing students with a not so complex working operating system to play with, they will be able to appreciate and understand deeper the concepts underlying an operating system.
Thus, this project aims to develop a simple yet operational instructional operating system for teaching undergraduate operating systems courses. ICS-OS is a fork of DEX-OS by Joseph Dayo.
Latest floppy image: ics-os-floppy.img
Test the floppy image in qemu.
$qemu-system-i386 -fda ics-os-floppy.img
Ubuntu 16.04 64-bit is the last tested working build environment. Virtualbox can be used to run this version of Ubuntu. However, docker is the recommended build environment since new versions of Ubuntu do not work anymore.
ICS-OS is a 32-bit operating system and requires a 32-bit build environment. You need to install docker and docker-compose to build the ICS-OS kernel and user applications.
Run the following command to enter the build environment:
$docker-compose run ics-os-build
or if you are using the docker-compose plugin:
$docker compose run ics-os-build
You will be dropped to a shell where you can perform the build. The ics-os folder is mapped inside the container. Thus, you can perform the edits outside the container(in another terminal) and the changes will be reflected inside the build environment.
#cd /home/ics-os
#make clean
#make
#exit
Make the floppy image then boot.
$sudo make floppy
$make boot-floppy
Alternatively, you can boot the floppy image directly using qemu.
$qemu-system-i386 -fda ics-os-floppy.img
See Lab 01 for a more complete discussion of how to set up the build environment.
This project is used at the Institute of Computer Science, University of the Philippines Los Banos for CMSC 125. It is maintained by the Systems Research Group.
Get started by reading the Kernel Developer's Guide.
Don't forget to check the Wiki.
You can ask questions by submitting an issue.
If you find his resource useful in your research or teaching, please cite our paper.
J. A. C. Hermocilla. Ics-os: A kernel programming approach to teaching operating system concepts. Philippine Information Technology Journal, 2(2):25--30, 2009.
You can also use the following bibtex entry.
@article{hermocilla-ics-os-pitj2009,
author = {Hermocilla, J. A. C.},
title = {ICS-OS: A Kernel Programming Approach to Teaching Operating System Concepts},
journal = {Philippine Information Technology Journal},
volume = {2},
number = {2},
year = {2009},
issn = {2012-0761},
pages = {25--30},
publisher = {Philippine Society of Information Technology Educators and Computing Society of the Philippines },
address = {Philippines},
pdf = {https://jachermocilla.org/publications/hermocilla-pitj2009-ics-os.pdf}
}