A toy kernel I made while taking Operating System Capstone in NCTU.
- Supporting async UART I/O
- Buddy allocator / Custom kmem_cache implementation
- User / Kernel preemption
- Wait Queues
- Filesystems: tmpfs / VFS / FAT32 filesystem
- MMU enabled
- ELF loader
- Page fault handler, Demand paging
# if you need to cross-compile
apt install make gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu
# or native compile on aarch64
apt install make gcc binutils
# tools to pack cpio & modify fat32 filesystem without mounting
apt install cpio dosfstools mtools
make rpi3
make
# first of all, manually flash `build/flash/sdcard.img` into sdcard,
dd if=build/flash/sdcard.img of=/path/to/sdcard bs=1M
# connect rpi3 to serial port, upload kernel8.img to device
# (edit the python script to match your serial device name)
python3 scripts/load_kernel.py
# connect to rpi3 (you must config minicom first)
minicom
make run