Existe uma sequência de etapas que são executadas desde quando o usuário aperta o botão POWER do computador, até que o sistema
Linux ou
algum outro sistema esteja totalmente funcional e pronto para ser usado.
Atualmente, este processo é feito automaticamente sem mesmo que o usuário perceba a complexidade existente por de trás de tal tarefa.
Antigamente, para inicializar um computador, era necessário alimentá-lo com uma fita de papel que continha um programa de Boot ou carregar
manualmente um programa de Boot utilizando os controles de endereço do painel frontal.
Os computadores de hoje são equipados com um software escrito em
Assembly chamado de BIOS (Basic Input/Output System). Este
software é gravado em uma memória ROM pelo fabricante da placa mãe, e é executado automaticamente todas as vezes que se liga o computador.
Ele é responsável por ativar os recursos de Hardware, após isto ser feito, é chamado um novo programa, que também está gravada na memória
ROM chamado de POST(Power On Self Test), encarregado de testar o funcionamento dos recursos de Hardware.
Exemplo: Unidade de disco, memória,processador, teclado, mouse.
Após ser realizado todos os testes, a BIOS carrega o setor de Boot (os primeiros 512 bytes do disco) para a memória, e executa o que encontra
nele. Este setor é conhecido como MBR (Master Boot Record).
Na MBR fica localizado o gestor de arranque responsável por dar inicio ao carregamento da imagem do kernel para a memória, ou o BootStrap, um
pequeno programinha que carrega para a memória algum gerenciador de Boot. Os mais conhecidos são o
Grub (Grand Unified
Bootloader) e o
LILO (Linux Loader).
Quando existe mais de um sistema operacional instalado no computador, ambos permitem a escolha de qual sistema operacional irá ser
inicializado. Exemplo: o Windows ou CentOs, e na MBR também que fica a tabela de partição do disco.
Após o usuário escolher, pelo gerenciador de Boot, qual sistema quer inicializar, o gerenciador carrega a imagem do kernel para a memória e este
fica responsável por dar sequência à inicialização do sistema. Após isto, ainda existe dois estágio no processo de inicialização:
- O primeiro é a inicialização do kernel propriamente dita.
- O segundo é a execução do programa INIT, o qual gerencia a ativação de todos os outros programas.
O Linux pode ter diferentes níveis de execução, chamados de Runlevels. A configuração de qual nível será inicializado pelo INIT quando se liga o
computador, é feita no arquivo "/etc/inittab". No total são sete níveis, sendo cada um deles responsável por determinados tipos de serviço.
Nas distribuições derivadas do
Red Hat, os scripts de execução de todos os serviços do sistema estão localizados no diretório
"/etc/init.d". O que determina quais serviços serão inicializados em cada Runlevel, são os links simbólicos dentro dos diretórios "/etc/rc.d/rcx.d",
onde 'x', pode variar de 0 a 6.
Vamos executar o comando 'ls -l' dentro do diretório "/rc.d/rc5.d", para ver uma parte de seu conteúdo:
ls -l
lrwxrwxrwx 1 root root 14 Jan 31 14:02 S55sshd -> ../init.d/sshd
lrwxrwxrwx 1 root root 14 Jan 31 14:01 S56cups -> ../init.d/cups
lrwxrwxrwx 1 root root 15 Jan 31 14:01 K15httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 18 Jan 31 13:58 S08iptables -> ../init.d/iptables
lrwxrwxrwx 1 root root 14 Jan 31 14:02 K89dund -> ../init.d/dund
lrwxrwxrwx 1 root root 18 Jan 31 13:59 K89netplugd -> ../init.d/netplugd
lrwxrwxrwx 1 root root 14 Jan 31 14:02 K89pand -> ../init.d/pand
lrwxrwxrwx 1 root root 15 Jan 31 13:58 K89rdisc -> ../init.d/rdisc
lrwxrwxrwx 1 root root 14 Jan 31 14:03 K91capi -> ../init.d/capi
lrwxrwxrwx 1 root root 23 Jan 31 14:02 S00microcode_ctl -> ../init.d/microcode_ctl
lrwxrwxrwx 1 root root 25 Jan 31 14:02 S04readahead_early -> ../init.d/readahead_early
lrwxrwxrwx 1 root root 15 Jan 31 14:03 S05kudzu -> ../init.d/kudzu
lrwxrwxrwx 1 root root 16 Jan 31 14:01 S07iscsid -> ../init.d/iscsid
lrwxrwxrwx 1 root root 19 Jan 31 13:58 S08ip6tables -> ../init.d/ip6tables
lrwxrwxrwx 1 root root 18 Jan 31 13:58 S08iptables -> ../init.d/iptables
lrwxrwxrwx 1 root root 18 Jan 31 14:01 S08mcstrans -> ../init.d/mcstrans
lrwxrwxrwx 1 root root 14 Jan 31 14:03 S09isdn -> ../init.d/isdn
lrwxrwxrwx 1 root root 17 Jan 31 14:01 S10network -> ../init.d/network
lrwxrwxrwx 1 root root 16 Jan 31 13:59 S11auditd -> ../init.d/auditd
. . . .
Podemos observar que o conteúdo do diretório consiste em links simbólicos que apontam para os scripts que estão no diretório "/etc/init.d". Este
por sua vez, possui scripts que irão inicializar os diversos tipos de serviços que estão instalados no sistema.
Exemplo: O serviço
Samba está configurado para inicializar no Runlevel 5, no diretório "/etc/rc.d/rc5.d" existe um link simbólico
'S91smb', apontando para o script 'smb' dentro do diretório "/etc/init.d", que está programado para inicializar o serviço "samba.conf" dentro do
diretório "/etc/samba/smb.conf". Outras distribuições usam diretórios diferentes para armazenar os arquivos Runlevels, mas não fogem muito do
padrão.
A primeira letra dos nomes dos links simbólicos pode ser ou 'S' ou 'K', indicando se o processo para o qual aponta deve ser ativado (Started) ou
desativado (Killed) naquele nível do runlevel.
O número que segue a letra, indica a ordem em que os processos devem ser encerrados ou ativados. Estas configurações podem mudar
dependendo arquivo "rc.d".
- Nível 0: Os scripts do nível 0, estão localizados no diretório "/etc/rc.d/rc0.d". Este nível é responsável pelo desligamento da máquina.
- Nível 1: Os scripts do nível 1, estão localizados no diretório "/etc/rcd/rc1.d". Este nível ativa o modo de manutenção ou monousuário.
- Nível 2: Os scripts do nível 2, estão localizados no diretório "/etc/rc.d/rc2.d". Este nível ativa o modo multiusuário modo texto.
- Nível 3: Os scripts do nível 3, estão localizados no diretório "/etc/rc.d/rc3.d". Este nível entra em modo multiusuário modo texto com suporte a
NFS.
- Nível 4: Os scripts do nível 4, estão localizados no diretório "/etc/rc.d/rc4.d". Este nível não é usado nas distribuições Debiam e Red Hat.
- Nível 5: Os scripts do nível 5, estão localizados no diretório "/etc/rc.d/rc5.d". Este nível é responsável pelo carregamento do ambiente gráfico.
- Nível 6: Os scripts do nível 6, estão localizados no diretório "/etc/rc.d/rc6.d". Este nível é responsável pela reinicialização da máquina.
Normalmente, os computadores pessoais utilizam o Runlevel nível 5, já os servidores que não precisam de interface gráfica, utilizam o Runlevel
nível 3.
Os níveis 0 e 6, não podem ser usados na configuração de inicialização, caso contrário, o sistema nunca será carregado.
Os níveis de execução dos Runlevel podem ser mudados com o computador em funcionamento, basta executar o comando:
# init x
Onde 'x' varia de 0 à 6.
O arquivo de configuração do Runlevel é o "/etc/inittab". Para mudar o nível que o sistema irá executar, basta modificar a linha:
id:5:initdefault:
No exemplo, está inicializando com o Runlevel nível 5, que carrega a interface gráfica. Poderíamos colocar para inicializar no Runlevel nível 3, basta
mudar o número, deixando da seguinte maneira:
id:3:initdefault:.
Fernando Mendonça