Search notes:

init/main.c

Then it spawns the idle process, the process scheduler and the init process
Apparently, main.c also processes the bootparams (such as root=, init= etc.)

start_kernel()

start_kernel() performs most of the kernel setup:
start_kernel() also prints (pr_notice()) the value of linux_banner (defined in init/version.c and init/version-timestamp.c).
At least in my current Linux environment, this is the first message visible to dmesg.
The last function that start_kernel calls is arch_call_rest_init() which in turn calls rest_init() which apparently does not return.
start_kernel is defined with asmlinkage and declared in include/linux/start_kernel.h.

do_basic_setup()

This function is called when the machine is initialized and the CPU subsystem is started.
None of the devices have been touched at this moment.

kernel_init_freeable()

This function opens, among others, /dev/console.

See also

boot process

Index