Inicializando o linux

2 fev

Existe uma sequência de etapas que são executada desde quando o usuário aperta o botão power do computador  até que o sistema operacional linux ou algum outro sistema esteja totalmente funcional e pronto para ser usado. Atualmente esse processo e 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 alimenta-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 assenbly chamado de BIOS (Basic Input/Output System), esse 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áveis por ativar os recursos de hardware, após isso ser feito é chamado um novo programa  que também está gravada na memória ROM chamada 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. Esse setor e 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 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 na inicialização do sistema. Após isso ainda existe dois estágio no processo de inicialização, o primeiro é a inicialização do kernel propriamente dita, e 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 derivada 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 varia de 0 à 6 . Vamos executar o comando ls -l dentro do diretório /rc.d/rc5.d para ver uma parte de seu conteúdo.

[fernando@localhost rc5.d]$ 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. Esse 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 lugares diferentes para armazenar os arquivos runlevels mas não foge 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 se segue a letra indica a ordem em que os processos devem ser encerrados ou ativados. Essas 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. Esse 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. Esse nível ativa o modo de manutenção ou monousúario.
Nível 2:
Os scripts do nível 2 estão localizados no diretório /etc/rc.d/rc2.d. Esse nível ativa o modo multiusúario modo texto.
Nível 3:
Os scripts do nível 3 estão localizados no diretório /etc/rc.d/rc3.d. Esse 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. Esse nível não é usando nas distribuições Debia e Red Hat.
Nível 5:
Os scripts do nível 5 estão localizados no diretório /etc/rc.d/rc5.d. Esse 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. Esse 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 pode 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 coloca para inicializar no runlevel nível 3 basta mudar o número deixando da seguinte maneira id:3:initdefault:.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: