- Boot from scratch, without GRUB - [✔]
- Enter 32-bit mode - [✔]
- Jump from Assembly to C - [✔]
- Interrupt handling - [✔]
- Screen output and keyboard input - [✔]
- A tiny, basic
libc
which grows to suit our needs - [✔]
- Memory management
- Write a filesystem to store files
- Create a very simple shell
- User mode
- Maybe we will write a simple text editor
- Multiple processes and scheduling
- A BASIC interpreter, like in the 70s!
- A GUI
- Networking
- Higher half loader [✔]
- physical memory management []
- paging(virtual memory management) []
- kmalloc []
- PCI Enumerate,R/W []
- ATA/DMA Driver []
- Ext2 Filesystem []
- Virtual Filesystem []
- vesa driver, 1024 * 768 color(32-bit color),framebuffer mode []
- Milestone(try loading and showing a wallpaper from hardisk!) []
- Windows compositor, support fonts, buttons,and etc []
- Write a shell []
- Write a file browser []
- Usermode []
- Multi-tasking/Simple scheduler []
- Executable loader(elf) []
- spinlock, mutex, and other pthread primitives []
- Add more syscalls, like fork/exec, open, read, etc.. []
- Port newlib []
- Write or port some baisc utilities such asenv, rm, cp, mkdir, reboot []
- Real time clock []
- stadard input/output stuff []
- Send/Recv raw packets []
- IP []
- UDP []
- ARP []
- DHCP []
- TCP []
- HTTP []
gcc -ffreestanding -c kernel.c -o kernel.o
ld -o kernel.bin -Ttext 0x1000 kernel.o --oformat binary
nasm boot_sect.asm -f bin -o boot_sect.bin
cat boot_sect.bin kernel.bin > os-image.bin
qemu-system-i386 -fda os-image.bin
或者
make clean
make run