Go to file
Bananymous 2f52001c6d Kernel: Locks allow locking after locker is invalid
SpinLock and RecursiveSpinLock will now allow locking after the initial
locker is invalid. This allows us to kill threads even if they are holding
internal locks
2023-07-27 18:52:51 +03:00
BAN BAN: Fix function call in Optional 2023-07-21 10:57:46 +03:00
LibELF LibELF: We use BAN::Vector<uint8_t> as elf storage 2023-06-18 23:29:23 +03:00
base Base: add empty directories with .gitkeep to base/ 2023-07-11 08:02:28 +03:00
kernel Kernel: Locks allow locking after locker is invalid 2023-07-27 18:52:51 +03:00
libc Kernel: Implement SYS_GET_PID and SYS_TCSETPGID 2023-07-24 22:29:59 +03:00
toolchain BuildSystem: disable nls from gcc 2023-06-05 17:55:47 +03:00
userspace Kernel: Userspace signal handlers are now called one at a time 2023-07-23 13:34:53 +03:00
.gitignore Update .gitignore 2023-04-06 00:02:47 +03:00
CMakeLists.txt BuildSystem: add rule to build libstdc++ 2023-06-02 18:39:42 +03:00
LICENCE Create LICENCE 2023-04-13 00:38:24 +03:00
README.md Update README.md 2023-06-02 18:43:30 +03:00
bochs.sh BuildSystem: all scripts have now bash shebang 2023-06-02 18:41:45 +03:00
image-full.sh BuildSystem: every file except /home/* is now owned by root 2023-06-12 02:03:13 +03:00
image.sh BuildSystem: every file except /home/* is now owned by root 2023-06-12 02:03:13 +03:00
install-usb.sh BuildSystem: all scripts have now bash shebang 2023-06-02 18:41:45 +03:00
linecount.sh BuildSystem: all scripts have now bash shebang 2023-06-02 18:41:45 +03:00
qemu.sh BuildSystem: all scripts have now bash shebang 2023-06-02 18:41:45 +03:00

README.md

lines license

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
ninja libstdc++

 

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