Todos os sistemas em microcomputadores começam o processo de inicialização executando código existente na ROM (especificamente no ), para carregar o setor 0 do cilindro 0 do dispositivo de inicialização. O dispositivo de inicialização é normalmente a primeira unidade de disquete (denominada A: no DOS e /dev/fd0 no Linux). O BIOS tenta então executar este setor. Em muitos discos inicializáveis, o setor 0, cilindro 0, pode conter ainda:
Caso o kernel do Linux tenha sido copiado fisicamente para um disquete, o primeiro setor do disco será o primeiro setor do kernel do Linux. O primeiro setor continuará o processo de inicialização, carregando o restante do kernel contido no dispositivo.
Uma vez que o kernel tenha sido completamente carregado, ele executa alguma inicialização básica de dispositivos. Ele tenta carregar e montar o a partir de algum dispositivo. Um sistema de arquivos raiz é simplesmente um sistema de arquivos montado como ``/''. Deve-se indicar para o kernel a localização do sistema de arquivos raiz; caso não seja encontrada uma imagem inicializável naquele local, o sistema é paralisado.
Em algumas situações de início do sistema, freqüentemente na inicialização a partir de disquetes, o sistema de arquivos é montado em um disco em memória, o qual é acessado na memória RAM, como se fosse um disco físico. Há duas razões para o sistema ser carregado em discos em memória. Inicialmente, memória RAM é muitas vezes mais rápida que um disquete, tornando a operação do sistema mais rápida, e segundo, o kernel do sistema pode ser armazenado como um em um disquete, e descompactado no disco em memória, permitindo que muitos mais arquivos sejam armazenados no disquete. Uma vez que o sistema de arquivos raiz é montado, pode-se visualizar uma mensagem similar a:
VFS: Raiz montado (sistema de arquivos ext2) somente para leitura.
sysinit Neste momento o sistema encontra o programa init no sistema de arquivos raiz (em /bin ou /sbin) e executa-o. init lê o arquivo de configuração /etc/inittab, procurando por uma linha denominada sysinit, e executa o programa especificado. O programa sysinit é normalmente denominado /etc/rc ou /etc/init.d/boot. Este programa é constituído de uma série de comandos de shell que configuram os serviços básicos do sistema, como por exemplo:
Este programa normalmente aciona diversos outros, tornando o processo de inicialização modular. Por exemplo, na estrutura comum do SysVinit, o diretório /etc/rc.d/ contém uma estrutura complexa de subdiretórios, cujos arquivos definem como iniciar e desligar a maior parte dos serviços do sistema. De qualquer forma, um programa sysinit em um disco de inicialização é normalmente muito simples.
Quando o programa sysinit termina, o controle retorna ao init, o qual entrará no nível de execução padrão, especificado em inittab, através da palavra chave initdefault. A linha de nível de execução normalmente especifica um programa como getty, o qual é responsável pelo gerenciamento das comunicações através da console e ttys. É o programa getty que apresenta a expressão familiar ``login:''. O programa getty por sua vez, chama o programa login para administrar o processo de validação e iniciar as sessões dos usuários.