quarta-feira, 29 de fevereiro de 2012

Boot no linux


BOOT
boot é o termo em inglês para o processo de iniciação do computador que carrega o sistema operacional quando a máquina é ligada, neste post descreverei os tipos de boot no linux e suas etapas.

Boot manual e automático
No boot automático, o sistema executa tudo por sua conta sem interrupção do operador.
No boot manual, o sistema executa ate uma determinado ponto e passa o controle para um operador do sistema, antes da maioria dos scripts serem executados. Neste momento, o sistema esta em modo monousuário. Este modo e utilizado somente se houver algum problema no sistema.

Etapas do processo de inicialização
- Carga e inicialização do kernel
- Detecção e inicialização de dispositivos
- Criação e inicialização processos espontaneos
- Intervenção do operador (somente no modo manual)
- Execução dos scripts de inicialização do sistema
- Operação multiusuário

Carga e inicialização do kernel
            O kernel e um programa, e a primeira tarefa do boot e o obter o kernel na memória para executa-lo. O caminho para localizar este programa e  /vmlinux  ou /boot/vmlinux.
            Durante o primeiro processo, a memória RAM carrega um pequeno programa de boot procedente do disco. Este programa e responsável para organizar o kernel e fazer seu carregamento.
            O kernel efetua alguns testes, para verificar quanto de memória esta disponível. Neste ponto o kernel reserva um pouco de memória para algumas estruturas de dados internas saão dimensionadas estáticas. O kernel imprime na tela a quantidade de memória RAM disponível para o usuário.

Detecção e inicialização de dispositivos

            Uma das principais tarefas do kernel e verificar o ambiente da maquina, e localizar os dispositivos. Ao criar um kernel você informa quais dispositivos ele deve encontrar, quando o kernel e executado ele tenta localizar e executar estes dispositivos a cada dispositivo encontrado o  kernel  imprime uma linha criptografada.
            Embora alguns dispositivos não sejam localizados completamente, o kernel do linux faz um verificação sondando o barramento em busca de novos dispositivos, os dispositivos que nao respondem  a sondagem são desabilitados, se algum dispositivo for conectado após este procedimento, o mesmo pode ser carregado ou habilitado durante a execução.

Processos de sistema
            Após a inicalização básica do kernel são criados processo espontâneos (fork),
(no linux não existe nenhum  PID 0 visível o init e o PID 1)  o init, este e acompanhado de varios processos que  manipulam a memória tipo kilushd, kupdate, kpiod, e kswapd destes somente init e realmente um processo, os demais são partes do kernel quepor razoes de escalonamento são arrumados para se parecerem um processo. 
            Depois dos processos serem criados o papel do kernel no boot esta completado, no entanto nenhum processo para login foi criado e nenhum daemon foi inicializado. Todas estas tarefas seram tratadas pelo processo init.

Intervenção do operador (somente no modo manual)

            Se o sistema for iniciado no modo monousuário, o processo init recebe uma flag notificando, que init deve executar o sulogin que e um login mais radical que executa quase todos os comandos shell.
            Nas ditribuições SuSe e Debian so existe uma partição raiz montada, por isso para utilizar os comando essenciais e os programas em  /bin /sbin ou /etc estas partições devem ser montadas e verificadas com comando fsck que deve ser executado manualmente, daemons não executa no modo monousuário por isso serviços que precisam de processos servidor não funcionaram normalmente.

Execução dos scripts de inicialização do sistema
            No momento que ele estiver pronto para executar scripts de inicialização, ele e reconhecidamente linux, os scripts de inicialização são simplesmente scripts shell selecionado e executados por init através de um algoritmo.

Operação multiusuário
            Depois dos scripts serem inicializados, o sistema esta completamente operacional, mas não ha nenhum processo de gerenciamento de login. Entao init e responsável por criar os processos getty, responsável pelo login tornando o linux multiusuário. processo init também cria os processos para logins gráficos xdm e gdm.


fuis
proximo,post falarei de dois gerenciadores de boot LILO e GRUB.