diff --git a/README.md b/README.md index 438df7e3..96ab9b93 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ # banan-os -This is my hobby operating system written in C++. Currently supports only x86_64 architecture. We have a read-only ext2 filesystem, read-write ramfs, IDE disk drivers in ATA PIO mode, userspace processes, executable loading from ELF format, linear VBE graphics and multithreaded processing on single core. +This is my hobby operating system written in C++. Currently supports only x86_64 architecture. We have a read-only ext2 filesystem, read-write ramfs, IDE disk drivers in ATA PIO mode, ATA AHCI drivers, userspace processes, executable loading from ELF format, linear VBE graphics and multithreaded processing on single core. ![screenshot from qemu running banan-os](assets/banan-os.png) @@ -14,41 +14,32 @@ Each major component and library has its own subdirectory (kernel, userspace, li There does not exist a complete list of needed packages for building. From the top of my head I can say that *cmake*, *ninja*, *make*, *grub*, *rsync* and emulator (*qemu* or *bochs*) are needed. -You can and *should* pass cmake variable QEMU_ACCEL set to proper accelerator to cmake commands. For example on Linux this means adding -DQEMU_ACCEL=kvm to the end of all cmake commands. - -Create the build directory and cofigure cmake -```sh -mkdir build -cd build -cmake .. -``` - To build the toolchain for this os. You can run the following command. > ***NOTE:*** The following step has to be done only once. This might take a long time since we are compiling binutils and gcc. ```sh -ninja toolchain -cmake --fresh .. # We need to reconfigure cmake to use the new compiler -ninja libstdc++ +./script/build.sh toolchain ``` -To build the os itself you can run either of the following commands. You will need root access since the sysroot has "proper" permissions. +To build the os itself you can run one of the following commands. You will need root access since the sysroot has "proper" permissions. ```sh -ninja qemu -ninja bochs +./script/build.sh qemu +./script/build.sh qemu-nographic +./script/build.sh qemu-debug +./script/build.sh bochs ``` You can also build the kernel or disk image without running it: ```sh -ninja kernel -ninja image +./script/build.sh kernel +./script/build.sh 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. +If you have corrupted your disk image or want to create new one, you can either manually delete *build/banan-os.img* and build system will automatically create you a new one or you can run the following command. ```sh -ninja image-full +./script/build.sh image-full ``` -> ***NOTE*** ```ninja clean``` has to be ran with root permissions, since it deletes the root filesystem. +> ***NOTE*** ```ninja clean``` has to be ran with root permissions, since it deletes from the banan-so sysroot. ### Contributing