1. Bootloader such as grub/systemd-boot unpacks the Linux kernel binary and load it into memory. If the kernel is not compressed, it is loaded directly.
2. The Linux kernel booting main procedure, _start will be called, and setup all the relevant and important CPU stuff such as floating point initialization, various vector tables, setup paging, allocate memory space for PCI and interrupts, etc.
3. At this point Linux kernel part are done, it will pass the remaining to initrd.
4. Initrd will do userland loading stuff, like calling '/sbin/init' (sometimes /init). If this process cannot be found, a kernel panic is issued.
5. Feedback loop of userland and kernel stuff, at this point the operating system is functional.