Hobby operating system for x86_64
Go to file
Bananymous c5b006bf19 BAN: Add {TRY,MUST}_REF for references
It is annoying that we have to have separate macros for these but
I can't find a way to cleanly return lvalue reference from statement
expression. Currently we cast the reference to pointer and return
unreference the pointer outside of the expression.

This feature will probably not be used any time soon, but atleas
it is implemented if I need it one day
2023-04-19 00:31:15 +03:00
BAN BAN: Add {TRY,MUST}_REF for references 2023-04-19 00:31:15 +03:00
LibELF LibELF: Start implementing elf library 2023-04-18 10:18:15 +03:00
base Kernel: Device dev and rdev number is done more properly 2023-04-03 11:43:16 +03:00
kernel Kernel: Heap allows us to take free pages. 2023-04-18 10:18:15 +03:00
libc LibC: add needed stubs to build executables with our compiler 2023-04-12 17:53:02 +03:00
toolchain BuildSystem: cmake can now build out libc 2023-04-10 21:07:25 +03:00
userspace LibELF: Start implementing elf library 2023-04-18 10:18:15 +03:00
.gitignore Update .gitignore 2023-04-06 00:02:47 +03:00
CMakeLists.txt LibELF: Start implementing elf library 2023-04-18 10:18:15 +03:00
LICENCE Create LICENCE 2023-04-13 00:38:24 +03:00
README.md Add a screenshot to README 2023-04-06 21:01:27 +03:00
bochs.sh BuildSystem: We are now using cmake instead of plain make 2023-04-02 04:07:27 +03:00
image-full.sh BuildSystem: We are now using cmake instead of plain make 2023-04-02 04:07:27 +03:00
image.sh BuildSystem: We are now using cmake instead of plain make 2023-04-02 04:07:27 +03:00
install-usb.sh Scripts: remove disk build from install-usb.sh 2023-04-18 10:18:15 +03:00
linecount.sh Scripts: linecount does not count lines from toolchain/ 2023-04-06 20:31:10 +03:00
qemu.sh BuildSystem: We are now using cmake instead of plain make 2023-04-02 04:07:27 +03:00

README.md

banan-os

This is my hobby operating system written in C++. Currently runs on x86 based architectures (32 and 64 bit). Currently this operating system supports ext2 filesystem, ata drives (pio mode), vesa/vbe graphics mode and multithreaded processing.

ss

Building

NOTE: I will be using ninja in these build instructions but you may use any other buildsystem cmake supports. If you want to use ninja, you can either define a environment variable 'CMAKE_GENERATOR=Ninja' or pass '-G Ninja' to all commands invoking cmake.

Create the build directory and cofigure cmake

mkdir build
cd build
cmake ..

 

NOTE: The following step has to be done only once. This might take a long time since we are compiling binutils and gcc.

To build the toolchain for this os. You can run the following command.

ninja toolchain
cmake --fresh .. # We need to reconfigure cmake to use the new compiler

 

To build the os itself you can run either of the following commands. You will need root access since we need to mount the disk image to install grub.

ninja qemu
ninja bochs

 

You can also build the kernel or disk image without running it:

ninja kernel
ninja image

 

If you have corrupted your disk image or want to create new one, you can either manually delete banan-os.img and cmake will automatically create you a new one or you can run the following command.

ninja image-full