Init é primeiro processo/programa a ser executado pelo sistema, logo após o carregamento do kernel pelo gerenciador de boot (lilo, grub, etc). Sua primeira tarefa será ir até o seu arquivo de configuração, normalmente /etc/inittab, e verificar qual o script mestre de inicialização, normalmente /etc/rc.d/rc.sysinit.
É preciso lembrar que nem todas as distribuições utilizam esse nome para o script mestre. O SuSE por exemplo chama o /etc/init.d/boot. Para que possamos verificar ou configurar qual será o script, basta ir no arquivo /etc/inittab verificar a linha:
si::sysinit:/etc/rc.d/rc.sysinit
O script mestre sysinit carregará então os itens básicos do sistema como seu nome, logs, data/hora, periféricos de entrada principal(teclado), fonte, partições de swap e dispositivos de armazenamento.
O próximo passo do init consiste em iniciar os itens referentes ao runlevel padrão do sistema. Como todos sabem os sistemas unix-like são multi-usuário e multi-tarefa, ou seja isso nos possibilita diferentes modos de execução, chamados run level, que são identificados por número:
0 – desligamento do sistema
1 – mono usuário
2 – multi usuário sem serviço de rede
3 – multi usuário com serviço de rede
4 – não especificado
5 - multi usuário com serviço de rede e login gráfico.
6 – reinicialização do sistema.
Apenas os níveis 0, 1 e 6 são padronizados. Os demais podem variar de distribuição para distribuição. Cada um desses níveis possui um script de inicialização no init próprio, portanto logo após a execução do script mestre o init executará o script referente ao runlevel padrão.
O nível padrão é configurado no /etc/inittab pela linha:
id:5:initdefault:
Os scripts referentes a cada runlevel por sua vez são configurados nas linhas:
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
Onde cada linha segue o padrão:
id:runlevel:ação:processo
A configuração da famosa combinação CTRL + ALT + DEL também é feita no arquivo /etc/inittab pela linha:
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
Por fim, o init irá executar um programa de emulação de terminal ou de login para que agora o usuário, com o sistema todo iniciado no runlevel desejado, possa acessar o sistema.