All Projects → beevik → Monkos

beevik / Monkos

Licence: bsd-2-clause
an experimental 64-bit operating system

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Monkos

Dennix
Dennix is a unix-like hobbyist operating system written from scratch.
Stars: ✭ 53 (-47%)
Mutual labels:  x86-64, libc, kernel, os, osdev
Toaruos
A completely-from-scratch hobby operating system: bootloader, kernel, drivers, C library, and userspace including a composited graphical UI, dynamic linker, syntax-highlighting text editor, network stack, etc.
Stars: ✭ 4,687 (+4587%)
Mutual labels:  bootloader, kernel, os, osdev, x86-64
Cyjon
A simple, clean code, multi-tasking operating system written in pure assembly language for 64-bit processors from the AMD64 family.
Stars: ✭ 184 (+84%)
Mutual labels:  x86-64, bootloader, kernel, os, osdev
Dgos
Operating System
Stars: ✭ 90 (-10%)
Mutual labels:  x86-64, bootloader, kernel, osdev
Toaru Nih
NOTICE: The ToaruOS-NIH Project has been MERGED UPSTREAM. This repository is now archived.
Stars: ✭ 66 (-34%)
Mutual labels:  bootloader, kernel, os, osdev
biefircate
Running x86-16 or x86-32 code from x86-64 UEFI; _very experimental_ • mirror of https://gitlab.com/tkchia/biefircate • developer notes at https://gitlab.com/tkchia/biefircate/-/blob/main/doc/NOTES.asciidoc
Stars: ✭ 47 (-53%)
Mutual labels:  kernel, x86-64, os, osdev
Wingos
a little 64bit operating system written in c++ with smp support
Stars: ✭ 361 (+261%)
Mutual labels:  x86-64, kernel, os, osdev
KnutOS
An x86_64 hobbyist OS written in C and Assembly
Stars: ✭ 16 (-84%)
Mutual labels:  kernel, x86-64, os, osdev
Os2
x86_64 OS kernel with completely async userspace and single address space [WIP; but basic kernel functionality implemented]
Stars: ✭ 25 (-75%)
Mutual labels:  x86-64, kernel, os, osdev
Cuteos
A 64-bit SMP-safe kernel for the PC architecture.
Stars: ✭ 51 (-49%)
Mutual labels:  x86-64, kernel, osdev
MandelbrotOS
A community driven OS by the youth
Stars: ✭ 172 (+72%)
Mutual labels:  kernel, os, osdev
ByteOS
A simple hobby operating system for the x86-64 architecture, written in C.
Stars: ✭ 47 (-53%)
Mutual labels:  kernel, x86-64, os
nightingale
A small operating system where I experiment and learn osdev.
Stars: ✭ 86 (-14%)
Mutual labels:  kernel, os, osdev
RocketOS
RocketOS is a Unix based OS that uses legacy BIOS and GRUB and is written in C17. It is being developed for educational purposes primarily, but it still is a serious project. It is currently in its infancy.
Stars: ✭ 23 (-77%)
Mutual labels:  kernel, os, osdev
novusk
A kernel written in Rust
Stars: ✭ 61 (-39%)
Mutual labels:  kernel, x86-64, os
Sigma
Abandoned overcomplicated Microkernel using modern x86_64 features
Stars: ✭ 36 (-64%)
Mutual labels:  kernel, os, osdev
LudOS
A toy monolithic kernel written in C++
Stars: ✭ 38 (-62%)
Mutual labels:  kernel, os, osdev
Reactos
A free Windows-compatible Operating System
Stars: ✭ 10,216 (+10116%)
Mutual labels:  kernel, os, osdev
Aquila
AquilaOS: UNIX-like Operating System
Stars: ✭ 413 (+313%)
Mutual labels:  kernel, os, osdev
Os67
An unix-like toy kernel
Stars: ✭ 531 (+431%)
Mutual labels:  kernel, os, osdev

MonkOS

MonkOS is an experimental 64-bit operating system for Intel and AMD processors. It is a mix of C and assembly language and is a work in progress. Currently, it consists of a BIOS boot loader, a virtual console system, an interrupt handling system, a paged memory manager, a heap allocator, a few simple device drivers, and a primitive interactive shell. The boot loader is designed to launch the operating system from a cdrom.

Building

The OS currently builds under linux using a cross-compiler. There are two ways to build it: (1) by installing all the necessary tools on your system and running make, or (2) by using a ready-made docker container that contains all the build tools you'll need.

Building with local tools

To build with tools installed on your local system, you'll need to have the following software already installed:

  • gcc x86_64 cross-compiler for elf binaries (I have used versions 4.8, 5.3, 6.3, 7.3, 8.2, 9.2 and 10.2 successfully)
  • gnu binutils (I used version 2.34)
  • nasm assembler
  • genisoimage
  • exuberant-ctags (optional, for help with editing)
  • gdb (optional, for debugging)
  • qemu (optional, for testing)
  • doxygen (optional)

Most of these tools are available from standard linux package managers. The cross-compiler, however, is not. To build a cross-compiler, consult the instructions on this page. Make sure to also follow the libgcc without red-zone instructions.

Once you've installed all the tools and made sure the cross-compiler is in your path, run make.

$ make

This results in a bootable cdrom ISO file called monk.iso in your build subdirectory.

Building with docker-ized tools

Because it can be a bit of a hassle to build and install a cross-compiler, a docker container has been prepared, allowing you to avoid building the cross-compiler yourself. To run the docker-based build, make sure you have a recent version of docker installed on your system, add yourself to your system's docker user group, and then type the following:

$ make docker

This will pull down the docker container (brett/monkos-build) if you don't already have it, run the build inside the container, and generate the iso file (and all other intermediate output files) in your build subdirectory. It behaves almost exactly as if you ran make using a cross- compiler installed locally on your system.

Running MonkOS

There are several ways to run MonkOS once you have the iso file. The first and most time-consuming way is to burn it to a CD or DVD ROM using your favorite burning utility. This is the only way to test MonkOS on a bare-metal system.

Alternatively, you can launch the operating system using virtual machine software like VMware or virtualbox.

Or you can run the operating system in a linux-based emulator like qemu or bochs. The MonkOS makefile makes this alternative particularly easy by providing a simple build rule to launch the OS in qemu:

$ make test

You can also use the makefile to start a kernel debugging session under qemu and gdb. First, launch qemu in debugging mode:

$ make debug

Then start a gdb debugger session by attaching gdb to the qemu debugger endpoint:

$ gdb
(gdb) set arch i386:x86-64
(gdb) symbol-file build/monk.sys
(gdb) target remote localhost:8864
(gdb) layout src

Other build options

Run make docs to build nicely formatted documentation for MonkOS. You'll need doxygen installed on your system to do this.

$ make docs

The doxygen documents will appear in the docs/monk subdirectory. To view them, launch them in your browser (in this case firefox):

$ firefox docs/monk/index.html

To build code tags for easy symbol searching within your editor, use the makefile to run the exuberant-tags utility:

$ make tags

This produces a .tags file in your MonkOS directory.

To clean up all intermediate files, use the clean build:

$ make clean

To clean all generated dependencies files, use the cleandeps build:

$ make cleandeps

Documentation

Please consult the Doxygen-formatted documentation, which is part of the MonkOS documentation set.

Resources

These are some of the resources I have relied on in my attempt to better understand the numerous and various aspects of bootloader and OS development:

License

Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].