b0ec0f1a1a
On SYS_ALLOC we will add a new FixedWidthAllocator if the old ones are already full or we don't have one with proper size. This allows arbitary number of allocations as long as you have enough memory available :) Next I will be writing a general allocator for allocations larger than 4096 bytes which should make SYS_ALLOC syscall complete :) |
||
---|---|---|
BAN | ||
LibELF | ||
base | ||
kernel | ||
libc | ||
toolchain | ||
userspace | ||
.gitignore | ||
CMakeLists.txt | ||
LICENCE | ||
README.md | ||
bochs.sh | ||
image-full.sh | ||
image.sh | ||
install-usb.sh | ||
linecount.sh | ||
qemu.sh |
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.
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