How does Linux start a process
A good walkthrough, but it doesn't mention how the ELF headers are interpreted and how the corresponding file sections (code, data, rodata) are mapped into the virtual address space of the process. It only covers the setup of the stack and the invocation of main.