forked from Bananymous/banan-os
				
			
			update main #1
			
				
			
		
		
		
	
							
								
								
									
										33
									
								
								README.md
								
								
								
								
							
							
						
						
									
										33
									
								
								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.
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue