So first I tried to link the boot loader and the kernel, but there was some problem linking the 16 bit loader code. Then I tried to load the boot sector into memory before jumping to protected mode. I was planning on jumping to the kernel in memory after entering protected mode

00351951398p[FDD ] >>PANIC<< io: norm r/w parms out of range: sec#0bh cyl#fbh eot#00h head#01h
Although this error seems to suggest an error with FAT traversal, it does not occur when I have a lower address that overwrites the loader code. Now thinking about it, I guess that makes sense, because the code would be overwritten before the FAT error occurs.
How do most people load the kernel in a situation like this? It seems like I'm going about this the wrong way.