ChaOS is an SMP-aware kernel that we are doing as a part of our studies at Epitech.
makegccorclang(latest version, ideally)grub-mkrescueandlibisoburn(usually packed with other binaries asgrub)mtoolsdialogqemu(cpu emulator) optional
If you are using apt-get as your package manager (Debian, Ubuntu etc.), you can use this command to install all dependencies:
apt-get install qemu grub-pc-bin xorriso mtoolsIf you are using pacman as your package manager (ArchLinux, Manjaro etc.), you can use this command:
pacman -S dialog qemu grub libisoburn mtoolsIf you are using portage as your package manager (Gentoo), you can use this command instead:
emerge --ask sys-boot/libisoburn sys-fs/dosfstools sys-fs/mtoolsIf you are using an other package manager, well... Good luck! :p
First, tune as you wish the kernel's configuration with
make configThen, build the kernel:
make kernelTo build a complete iso with grub installed (suitable for USB flash drives or virtual machines), run
make isoIf you want to run ChaOS through QEMU even if it's boring & useless right now, run
make run- Kernel options
- Kernel architecture
- Kernel placed in high-addresses
- Boot
- Multiboot
- Paging setup
- GDT setup
- IDT setup
- TSS setup
- SMP setup
- Basic drivers
- VGA
- PS/2 Keyboard
- Memory
- Physical Memory Management
- Virtual Memory Management (
mmap(),munmap()etc.) - Virtual segments of memory
- Kernel heap (
kalloc(),kfree(),krealloc())
- ELF Program execution (
exec()) - Syscall interface and userspace (ring 3)
- Multi process / threads
- Scheduling
- User Threads
- Kernel threads
- Processes (mix of
clone(),exec()andexit())
- Initrd loading, reading and writing
- Device abstraction
- Filesystem
- Directory listing (
opendir(),readdir(),closedir()) - Creating and removing files/directories (
mkfile(),mkdir(),remove()) - File basic IO operations (
open(),read(),write(),close()) - File advanced IO operations (
pipe(),dup()) - File informations (
stat())
- Directory listing (
- User space programs (init, tty, shell, basic binaries such as
echo,ls,rm,mkdiretc.) - Virtual filesystems (
/proc,/dev)
Fork me!