Neat read so far! Not done yet, but I think I've found a small error in kernel.c: the attribute byte of the characters in "my first kernel" should be set to 0x02, not 0x07.
edit: I misread. 0x07 is intentional, 0x02 was mentioned as an alternative. Good post!