Skip to content

💾 A small, functional and simple "toy" 32-bit operating system

License

Notifications You must be signed in to change notification settings

TheBigEye/Monarch-OS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Light mode Monarch OS logo! Dark mode Monarch OS logo!!

Monarch OS is an simple Operating System designed to run on 32-bit architectures, supports VGA 90x60 text mode and 640x480 4bpp graphic (planar) mode, it is composed of a Kernel (as the main program) and GRUB Legacy as bootloader, it also contains a Memory manager, PC Speaker drivers and a Commands interpreter.

It has been created from scratch using some videos from Youtube as a base, and https://wiki.osdev.org, with the aim of trying to make a real OS, currently still under development :)

So, why do I do this?

The reason is simple: the pure passion for creating and the challenge it entails. Although this project may be a minimalist kernel, and its practical utility may be questionable, it turns out to be enjoyable. First, there’s the gratification of building something from scratch, understanding every bit and byte that constitutes the heart of a PC. It’s also an excellent way to learn and refine low-level concepts and computer system architecture. Of course, the disadvantages are evident: it’s a journey filled with complexities, frustrations, and errors that could even overwhelm the most experienced developer. However, even in those moments of despair, there’s an intrinsic beauty in the learning process and problem-solving that only true enthusiasts can appreciate. After all, isn’t that the true essence of programming?.

How do I build this?

To build, you will need NASM, GCC and a 32 bit processor, MANDATORY we will need a UNIX environment, to use tools such as QEMU, make, some bash features and the C cross compiler

MSYS2 (Windows):

  • Download and install MSYS2, once installed and updated, you will need to install some packages under the MINGW32 shell, pacman -S mingw-w64-i686-gcc mingw-w64-i686-nasm mingw-w64-i686-make mingw-w64-i686-qemu, once the packages are installed, you must add C:\msys64\mingw32\bin to the Windows PATH so that it can be used externally, for that, you open the taskbar search box and type env, you should see the option to edit system environment variables, in the pop-up window you click Environment variables, in the next window you select Path of System section, and there you add that path to the bin folder, now typing gcc --version in CMD should work :)
  • And... what happens if I want to use a cross-compiler like GCC-ELF?, To avoid complications, download the zip corresponding to your architecture and system from here (remember x86_64 is 64 bit, and i686 is 32 bit, in this case we are using 32 bit), once downloaded, go to the following path C:\msys64\mingw32, drag the zip folders into the mingw32 folder, and that will be it, you can try running i686-elf-gcc --version from CMD to check if works.

Once the compilers and tools are configured, under the MINGW32 shell, inside the project directory, type make to build the project, it should generate an ISO image and launch QEMU

How do I run this?

To run the system it is necessary to use virtualization programs, such as Virtual Box, VMware, QEMU or Bochs (in theory it works on real hardware, but it is not recommended)

About

💾 A small, functional and simple "toy" 32-bit operating system

Topics

Resources

License

Stars

Watchers

Forks