Acionamos o POWER do computador, então este passa por vários processos de inicialização até nos oferecer um sistema operacional. Esses processos são feitos por estágio:
- BIOS
- Boot Loader
- Sistema Debian
Vamos abordar cada um desses estágios de inicialização.
1. BIOS
Esse é ponto de partida, localizado na ROM, onde é executado no momento em pressionamos o botão power. Seu papel é fazer uma inicialização básica do hardware através do POST, que é responsável pela aquela tela que nós conhecemos ao ligar o computador, que dependendo da marca pode variar de um computador para o outro, exemplo: DELL, VAIO, APPLE. Lá nós podemos ver no cantinho da tela alguns atalhos como F1 - faz função X, F2 - faz função Y, Del - faz função Z e assim por diante. Tudo isso varia de fabricante para fabricante. Escolhemos nosso boot padrão no BIOS, que vai ler os primeiros setores do disco (MBR). Após isso é chamado um Boot Loader, localizado na MBR.
Boot Loader
Esse é o nosso segundo estágio, que é inicializado pelo BIOS, como o próprio nome Boot Loader já diz, esse é o responsável por carregar o kernel do sistema e a imagem initrd (initial ram disk) para a nossa memória. O initrd é um sistema de arquivos temporário (obs.: em versões do
Linux 2.6 em diante é tecnicamente chamado de initramfs (initial RAM filesystem), tipicamente usado antes do sistema raiz real ser montado pelo sistema.
O padrão do Debian é um boot loader muito conhecido por todos: GRUB. Nada impede de você escolher outros Boot Loaders, como por exemplo o Lilo, LoadLin, Isolinux.
No Debian você pode editar o GRUB através do arquivo
/boot/grub/menu.lst como root. Não vou abordar aqui as configurações do GRUB, pois vai fugir um pouco do nosso assunto.
Sistema Debian
Estamos no terceiro estágio do nosso processo de boot, esse estágio é inicializado pelo Boot Loader. Aqui é onde o famoso script chamado
init é executado, ele sempre tem PID 1, pois é o primeiro processo executado pelo sistema. Verifique isso com o comando:
pidof init
Esse script é quem vai fazer o trabalho de inicialização daqui pra frente. O init é quem vai inicializar o kernel em nível de usuário e tomar o controle dos próximos estágios, conhecidos como runlevels. Basicamente o init faz o seguinte:
1. Entra no runlevel N para inicializar o sistema conforme descrito no arquivo
/etc/inittab.
2. Entra no runlevel S inicializando o sistema no modo monousuário afim de completar a inicialização completa do hardware.
3. Entra em um dos runlevels multiusuários (2 ao 5) afim de inicializar serviços do sistema.
Você pode dizer ao sistema em qual runlevel o init deve parar. Faça isso usando a diretiva init=runlevel no parâmetro do kernel que é listado no boot loader ou você pode editar o arquivo /etc/inittab diretamente, modificando a linha "initdeafult" para o runlevel de sua preferência. O padrão do Debian é o runlevel 2.