Actually, it turned out that it was linking to 5kB because it was only linking the entry file (assembly file containing multiboot info and start point).
So I kept at it with Grub Legacy and finally got it working. The file is coming out at 70kB which is probably due to my inefficiencies when I first started working on this, not to mention there are a lot of files all containing a lot of debugging strings.
Next step is to fix up my ISRs. When using the Windows compiler, I just used naked functions. The plan is to use a common ISR in an assembly file which will call the intended handler using an ISR table. Shouldn't be too difficult, though I always tell myself that and well... it's osdev.
Then I can get back to remaking (3rd complete rewrite) my fat driver, then clean some things up, then upgrade my memory manager, then multitasking, then porting stuff, then self-hosting.
Jacob