Note: This kernel is archived, please see: https://github.com/ilobilo/ilobilix
My first os built from scratch
Contributors are welcome
- GDT
- IDT
- TSS
- PCI
- PCIe
- MSI
- MSI-X
- PMM
- VMM
- Heap
- ACPI
- LAPIC
- IOAPIC
- Shutdown
- Reboot
- PC speaker
- AC97
- SB16
- PS/2 Keyboard
- PS/2 Mouse
- COM
- VMWare Tools
- VBox Guest Additions
- Virtio
- FDC
- IDE
- SATA
- NVMe
- Virtio block
- RTL8139
- RTL8169 (Broken)
- E1000
- Virtio network
- UHCI
- OHCI
- EHCI
- XHCI
- HPET
- PIT
- RTC
- LAPIC Timer
- SMP
- Scheduling
- IPC
- MBR
- GPT
- VFS (Based on Vinix)
- TMPFS
- DEVFS
- Initrd
- Echfs
- SFS
- Ext2
- Fat32
- ISO9660
- NTFS
- System calls
- ELF
- Signals
- Userspace
- Libc
- Bash
- Coreutils
- Ethernet
- ARP
- IPv4
- IPv4 fragmentation support
- ICMPv4
- TCP
- UDP
- DHCP
- HTTP
- Telnet
- SSL
Make sure you have following programs installed:
- Clang
- lld
- llvm
- Make
- Nasm
- Qemu x86-64
- Xorriso
- Wget
- Tar
If you have Debian based system (Ubuntu, linux mint, Pop_os! etc) you can install them with this command:
sudo apt install clang lld make nasm qemu-system-x86 xorriso wget tar
Follow these steps to build and run the os
-
Clone this repo with:
git clone --single-branch --branch=master --depth=1 https://github.com/ilobilo/kernel
-
Go to the root directory of cloned repo and run:
make -j$(nproc --all)
For UEFI mode
make bios -j$(nproc --all)
For BIOS mode
If you, for some reason, are on Termux, run this command instead and connect to 127.0.0.1:5901
with VNC viewer:
make vnc -j$(nproc --all)
USEILAR=1
: Use ILAR archive format for initrd instead of USTAR (requires libboost-iostreams-dev)NOUBSAN=1
: Turn off UBSANNOCLEAN=1
: Don't clean the source after compilingNORUN=1
: Don't run the kernel, just compileDEBUG=1
: Turn off kvm and enable qemu logging
- Osdev wiki: https://wiki.osdev.org
- Osdev discord server: https://discord.gg/RnCtsqD
- PonchoOS: https://github.com/Absurdponcho/PonchoOS
- Poncho discord server: https://discord.gg/N2Dpwpu4qT
- Limine: https://github.com/limine-bootloader/limine
- Vinix: https://github.com/vlang/vinix
- Lyre: https://github.com/lyre-os/lyre
- Polaris: https://github.com/NSG650/Polaris
- Ilar: https://github.com/ilobilo/ilar
- Printf: https://github.com/eyalroz/printf
- Scalable Screen Font: https://gitlab.com/bztsrc/scalable-font2
- Liballoc: https://github.com/blanham/liballoc
- CWalk: https://github.com/likle/cwalk
- String: https://github.com/cocoz1/cpp-string
- Cxxshim: https://github.com/managarm/cxxshim
- Unifont: https://ftp.gnu.org/gnu/unifont/unifont-14.0.02