/goose

Hobby operating system for x86-64

Primary LanguageCMIT LicenseMIT

What is this?

Goose is a hobbyist operating system I am developing to learn more about x86-64 systems.

What does it do?

Almost nothing. It configures paging and memory management, then accepts keyboard and COM1 interrupts.

Why?

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.

License

The project uses the MIT license. See LICENSE.

Build Environment

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.

Running

qemu-system-x86_64 -cdrom os.iso -serial stdio -display none -s