There are three parts in this sequence:<p>1. Boot up - this is very machine-dependent (&quot;MD&quot;) so you&#x27;ll find it in each architecture&#x27;s source code. Look for files named &quot;locore.s&quot; or &quot;locore.S&quot; in places like src&#x2F;sys&#x2F;i386&#x2F;i386.<p>2. Kernel - the machine-independent (&quot;MI&quot;) part, or where the fun begins... this is in src&#x2F;sys&#x2F;kern&#x2F;init_main.c, look for the function main(). You&#x27;ll see the different subsystems initialized, from the lowest level (auto configuration of hardware devices and console initialization) through fundamental subsystems (virtual memory, disk, network, processes, etc.), all the way to the scheduler. The scheduler will only have one process to work with (PID 1) which is init (src&#x2F;sbin&#x2F;init), so that&#x27;s what gets executed.<p>3. Userland - &#x2F;sbin&#x2F;init is the first process that runs, and it takes care of running everything else, like daemons and eventually your login prompt. Your points of interest in init.c are runetcrc(), read_ttys(), and multi_user().