Goose is a hobbyist operating system I am developing to learn more about x86-64 systems.
Almost nothing. It configures paging and memory management, then accepts keyboard and COM1 interrupts.
After building a simple x86 operating system in the Computer Systems Engineering course at UIUC, I wanted to understand how to implement support for modern features of x86 systems, such as ACPI, APIC, HPET, and Long Mode. This code is entirely original and not based on the class project.
The project uses the MIT license. See LICENSE.
Incomplete notes on the toolchain.
../binutils-2.24/configure --prefix="$HOME/opt" --disable-nls --enable-targets="i586-elf,x86_64-elf,i386-efi-pe" --enable-64-bit-bfd --program-prefix=cross-
make
make install
../gcc-4.8.2/configure --prefix="$HOME/opt" --disable-nls --enable-targets="i586-elf,x86_64-elf,i386-efi-pe" --enable-languages="c,c++" --with-newlib --without-headers --program-prefix=cross-
make all-gcc
make install-gcc
Install grub2. Install xorriso.
qemu-system-x86_64 -cdrom os.iso -serial stdio -display none -s