Snackbar is my weekend time wasting project. Currently it targets the x86 arch but I might move to ARM later since I've been wanting to work on raspberry pi baremetal for a while. No promises.
- Netwide Assembler
- genisoimage (part of cdrtools on Arch-linux)
- Bochs (you can use qemu, but you'll have to configure it yourself)
- Masochist mindset
First and foremost, you will need a cross-compiler. You can find the build instructions for it on osdev (grab some popcorn and a few gallon of soda cuz compiling a cross-compiler is one hell of a screen time journey)
or you can just download an existing build & show some mercy to whatever hair left on your head
All of the bochs configuration files are in the bochs
folder.
Be sure to edit romimage
& vgaimage
paths according to your installation and OS.
The debug.rc
file is used to tell bochs to continue execution instead of dropping into interactive debugger as soon as in starts.
Edit makefile and set BIN_DIR
to your cross-compiler
s bin directory.
Once that's done, you can finally start building
make run
This will build the OS, do all the necessary setups and startup bochs with snackbarOS iso inserted.
You can find the OS iso, kernel elf file and all object files in the build
directory once the build finishes.
Be aware, make clean
will delete the build directory
If you value your sanity, don't. Look for better hobbies. If not then I guess we will meet in a psychiatric ward someday ~
- Planning: Me.
- Developing: Also me.
- Testing: Hey look, its me again!
- Hat tip to James Molly, the cool people at OSDev forum & OSDev subreddit, OSDev wiki, Erik Helin, Adam Renberg and last but not least, Brandon Fresen.
- 27/9/18: A messy hello world OS (newlines, tabs, colored text supported)
- 28/9/18: An attempt to properly structure the project. Moved
outb
,inw
,inb
tocommon.h
- 29/9/18: Finally setup a i686-elf cross compiler & improve the makefile, start using gcc
stdint.h
instead of makeshiftministdint.h
- 30/9/18: A proper README with some build instructions. More rearrangements. Moved kernel level I/O functions to
kstdio.h
, separated VGA methods and declarations tovga.h
, starting work on standardstring.h
- 1/10/18: Implemented
memcpy
,memcmp
- 2/10/18: Implemented
itoa
- 6/10/18: Implemented serial output interface. Added simple
serial_printf
for formatted debug printing - 18/10/18: GDT implemented, finally. Next up, IDT & keyboard...yay :D