Quando você liga o micro, o primeiro software que é carregado é o BIOS da placa-mãe, que faz a contagem da memória RAM, uma detecção rápida dos dispositivos instalados e por fim carrega o sistema operacional principal a partir do HD, CD-ROM, disquete, rede, ou o que quer que seja. Este procedimento inicial é chamado de POST (Power-on self test)
Depois de fazer seu trabalho, o BIOS carrega o sistema operacional, lendo o primeiro setor do disco rígido o famoso MBR, onde vai o gerenciador de boot.
Na verdade, no MBR mesmo vai apenas um bootstrap, um pequeno software que instrui o BIOS a carregar o executável do lilo ou grub em um ponto específico do HD. O MBR propriamente dito é muito pequeno, de modo que não é possível armazenar muita coisa diretamente nele.
O gerenciador de boot tem a função de carregar o Kernel e, a partir dele, todo o restante do sistema.
Inicialmente, o Kernel é um arquivo compactado e somente-leitura, encontrado dentro da pasta /boot do sistema (no Kurumin 7 é o “/boot/vmlinuz-2.6.18.1-slh-up-2”). Ele é descompactado em uma área reservada da memória RAM e roda a partir daí, aproveitando o fato de que a memória RAM é muito mais rápida que o HD.
Este executável principal do Kernel nunca é alterado durante o uso normal do sistema, ele muda apenas quando você recompila o Kernel manualmente ou instala uma nova versão.
Depois de carregado, a primeira coisa que o Kernel faz é montar a partição raiz, onde o sistema está instalado. Neste estágio ele carrega o init, o software que inicia o boot normal do sistema, lendo os scripts de inicialização e carregando os módulos e softwares especificados neles.
O arquivo de configuração do init é o “/etc/inittab“. Ele é geralmente o primeiro arquivo de configuração lido durante o boot. A principal tarefa dele é carregar os demais scripts de inicialização, usados para carregar os demais componentes do sistema e fazer todas as operações de checagem, necessárias durante o boot.
No “/etc/inittab” da maioria das distribuições derivadas do Debian, você verá a linha:
si::sysinit:/etc/init.d/rcS
do
…
$i start
….
done
Alguns exemplos de scripts e programas executados nesta etapa são o “keymap.sh” (que carrega o mapa de teclas do teclado), “checkroot.sh” (que verifica a partição do sistema, de forma similar ao scandisk do Windows), o “modutils” (que carrega os módulos especificados no arquivo “/etc/modules”, de forma a ativar o suporte a vários componentes do micro), o “checkfs.sh” (que complementa a checkroot.sh, checando as demais partições do HD), o mountall.sh (que lê o arquivo /etc/fstab e monta as demais partições do HD) e o “networking”, que ativa a rede.
De acordo com a distribuição usada, são carregados neste ponto outros serviços, para ativar suporte a placas PCMCIA, placas ISA, ou outros tipos de hardware, ativar o suporte a compartilhamentos de rede e, assim por diante. É possível executar praticamente qualquer tipo de comando ou programa nesta etapa, justamente por isso os passos executados durante o boot mudam de distribuição para distribuição, de acordo com o que os desenvolvedores consideram mais adequado. A idéia aqui é apenas dar uma base, mostrando alguns passos essenciais que são sempre executados.
Depois desta rodada inicial, são executados os scripts correspondentes ao runlevel padrão do sistema, que é configurado no “/etc/inittab”, na linha:
id:5:initdefault:
Usando o runlevel 5, são carregados os scripts dentro da pasta “/etc/rc5.d/“, enquanto que, usando o runlevel 3, são carregados os scripts dentro da pasta “/etc/rc3.d/”. Na maioria das distribuições, a diferença entre o runlevel 3 e o 5 é que o 5 inclui o carregamento do modo gráfico, enquanto o 3 se limita a carregar os serviços essenciais do sistema. No Kurumin é usado o runlevel 5 por padrão.
Configurando e modificando os links dentro da pasta “/etc/rc5.d”, você pode desativar componentes do sistema (de forma a acelerar o boot, ou reduzir o uso de memória) e também carregar componentes adicionais.
Quando você instala o Samba por exemplo, é criado automaticamente um link para ele dentro da pasta, de forma que ele seja carregado durante o boot.
Vamos entender melhor como isso funciona:
Nas distribuições que seguem o padrão do Debian, os scripts que executáveis que iniciam os serviços de sistema ficam todos dentro da pasta “/etc/init.d/”. Para parar, iniciar ou reiniciar o serviço ssh, por exemplo, use os comandos:
# /etc/init.d/ssh stop
# /etc/init.d/ssh restart
# service ssh stop
# service ssh restart
A pasta “/etc/init.d/” contém scripts para quase todos os serviços que estão instalados no sistema. Quando você instala o Samba pelo apt-get, por exemplo, é criado o script “/etc/init.d/samba“, mesmo que ele não exista anteriormente.
O que determina se o Samba será executado ou não durante o boot não é o script na pasta “/etc/init.d/”, mas sim um link simbólico criado dentro de uma das pastas de inicialização.
Por padrão, são executados primeiro os links que estão dentro da pasta “/etc/rcS.d/” e em seguida os que estiverem dentro da pasta “/etc/rc5.d/“.
Os números antes dos nomes dos serviços dentro da pasta “/etc/rc5.d/” determinam a ordem em que eles serão executados. Você vai querer que o firewall seja sempre ativado antes do Samba por exemplo.
O “S” (start) indica que o serviço será inicializado no boot. A partir daí, o sistema vai inicializando um por vez, começando com os serviços com número mais baixo. Caso dois estejam com o mesmo número, eles são executados em ordem alfabética.
Para que um determinado serviço pare de ser inicializado automaticamente no boot, basta deletar a entrada dentro da pasta, como em:
# ln -s ../init.d/samba S20samba
Você pode também utilizar update-rc.d, um pequeno utilitário do Debian, que automatiza este processo.
Para ativar um serviço, criando o link para ele dentro da pasta “/etc/rc5.d”, você usaria o comando:
(ativa)
(desativa)
Deixe seu comentário