On an Intel based system, the kernel starts when either loadlin.exe or LILO has loaded the kernel into memory and passed control to it. Look in /arch/i386/kernel/head.S for this part. Head.S does some architecture specific setup and then jumps to the main() routine in /init/main.c.