https://github.com/frankray78/instructionos
A 32-bit, x86 operating system written in C.
https://github.com/frankray78/instructionos
kernel operating-system os osdev
Last synced: about 1 year ago
JSON representation
A 32-bit, x86 operating system written in C.
- Host: GitHub
- URL: https://github.com/frankray78/instructionos
- Owner: FrankRay78
- License: mit
- Created: 2024-05-23T18:20:08.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-10T13:36:50.000Z (almost 2 years ago)
- Last Synced: 2024-07-10T23:28:50.653Z (almost 2 years ago)
- Topics: kernel, operating-system, os, osdev
- Language: C
- Homepage:
- Size: 68.4 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# InstructionOS
A 32-bit, x86 operating system written in C.
InstructionOS is a hobby operating system written with a particular interest in low-level, test-driven development and comprehensive unit test coverage integrated from the beginning, something other kernels severely lack. The kernel code is clean, well-structured and commented to maximise educational value.
## Features
* Kernel written in ANSI C
* Bootloader written in NASM assembly
* Build toolchain written in Makefiles
* Comprehensive unit test coverage
* Multiboot Specification v1 compliant
* Full 32-bit protected mode
* Basic keyboard handler
* VGA text mode
## Progress
InstructionOS isn't a fully-fledged 'operating system' yet, but it does boot and is being actively developed. The obligatory screenshot (which is pretty underwhelming at the moment) is here:

## Playing with InstructionOS
InstructionOS is developed on Ubuntu running in VMWare workstation.
A C cross-compiler is required (i686-elf-gcc); my [bash script](https://github.com/FrankRay78/InstructionOS/blob/main/i686-elf-gcc-build.sh) will build this for you, instructions for doing it manually are [here](https://wiki.osdev.org/GCC_Cross-Compiler).
Additional tools must also be installed: `apt install build-essential nasm qemu-system-i386`
`make` will boot the kernel in QEMU, having first built it using the C freestanding toolchain.
`make test` will run the unit tests, having first built the kernel and unit tests using the standard C11 toolchain.
`make clean` should be run before switching between these two commands, otherwise you'll get a linker failure (given the differing toolchains).
Additional targets exist in the main [Makefile](https://github.com/FrankRay78/InstructionOS/blob/main/Makefile), ideal for development IDE's with integrated Makefile support (eg. JetBrains CLion or Visual Studio Code).
## License
InstructionOS is free software licensed under the terms of the MIT License, see [LICENSE](https://github.com/FrankRay78/InstructionOS/blob/main/LICENSE) for more details.
## Credits
InstructionOS was created by Frank Ray, [Better Software UK](https://bettersoftware.uk).