Inicialização do Linux

Este artigo tem o objetivo de esclarecer os diferentes estágios que são executados na inicialização do Linux. Desde
quando você liga o computador, até o momento em que o sistema operacional esteja totalmente funcional e pronto
para uso.

[ Hits: 18.961 ]

Por: Fernando Mendonça em 08/02/2012 | Blog: http://lpilinux.wordpress.com/


Inicialização do Linux



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

   

Páginas do artigo
   1. Inicialização do Linux
Outros artigos deste autor

O que é o Linux

Gerenciamento de pacotes RPM

Configuração de Serviços

Leitura recomendada

Gerando arquivos PDF através do SAMBA

Evitando acúmulo de arquivos na lixeira do Samba

Autenticando Linux num PDC Samba com auto-montagem de unidade por usuários (sem usar LDAP)

Administrando seu servidor Samba com o User Manager

PDC - Samba + LDAP - Fedora 7

  
Comentários
[1] Comentário enviado por levi linux em 08/02/2012 - 09:26h

Parabéns, muito bom o seu artigo, bem didático e muito útil, 10!

[2] Comentário enviado por sacioz em 08/02/2012 - 15:25h

Gostei , por incrivel que pareça , ainda ha pessoas que devoram tutoriais assim ( O.K. , um mini tut) mas gostei sim. Obrigado.

[3] Comentário enviado por danieldhdds em 08/02/2012 - 16:49h

Mto loko o artigo, quando virá outras páginas, me interessei. ^^

Só dei 9.5 pontos, pq eu fiquei ancioso por novas páginas. :D

[4] Comentário enviado por victocha em 08/02/2012 - 17:08h

Meus parabéns Fernando muito bom o artigo...agora será que dá pra fazer um pequeno pedido similar a dos amigos aqui? Posta mais!!!

[5] Comentário enviado por xerxeslins em 09/02/2012 - 10:08h

Interessante!

=)

10!

[6] Comentário enviado por removido em 10/02/2012 - 13:37h

Muito bom mesmo! Compartilho os pedidos de continuar com posts sobre o tema.


[7] Comentário enviado por ernanifreitas em 11/02/2012 - 15:11h

Bom artigo Fernando. Vi também o seu blog criado para LPI :)

Parabens e e bons estudos

[8] Comentário enviado por sivasmartins em 13/02/2012 - 09:29h

Inicialização do Linux ou do Red Hat?

[9] Comentário enviado por suporte.helpdesk em 13/02/2012 - 10:13h

show de bola o artigo nota 10 (:

[10] Comentário enviado por brk0_0 em 22/02/2012 - 10:57h

Muito bom Fernando! Parabéns pelo artigo e melhore cada dia mais sua didática e clareza, destaques desse artigo.
Que tal dar uma incrementada com algumas outras distros (Debian, Slack e Arch por ex.)? Seria excelente.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts