O documento descreve o processo de inicialização do Linux, começando pela execução da BIOS, do bootloader (GRUB) e do kernel. Explica as etapas de bootstrapping, incluindo a carga do initrd e do kernel, e a mudança do sistema de arquivos raiz de /tmp para o disco rígido. Também discute as diferenças entre os sistemas init e systemd para gerenciar os processos durante a inicialização.
2. Bootstrapping
• Linux é um sistema operacional complexo;
• A inicialização (bootstrapping) deve seguir
passos;
• Durante a inicialização o Kernel é carregado
para memória e inicia-se uma série de tarefas;
3. Para isso
• BIOS é executado;
• O Bootloader é executado (GRUB);
• O intird é carregado e executado;
• O Kernel é montado e inicializado por init;
4. BIOS
• Contem o software básico para validar os dispositivos e
carregar o sistema operacional.
• Reside na ROM (read only memory);
• Permite o carregamento de parâmetros usados para
inicialização
– Data e hora
– sequencia de inicialização de hardware
– sequencia de boots
– periféricos
– parâmetros para processador
– parâmetros para memoria.
5. BIOS
• Quando liga o computador a BIOS
passa por 4 processos
– Valida dados da CMOS, Checa as configurações
de Hardware;
– Teste físicos em dispositivos, como HD, memória e
Processador com o POST (power on self test)
– Ativa componentes instalados no computador, tal
como USB;
– E tudo OK, inicia o Bootloader do SO.
7. MBR
• Criado em 1983
• Contem informações de partições do Disco
• Códigos de BOOT do sistema operacional
• Está no Cilindro 0, head 0 e setor 1
• Possui a posição de carregamento do
Bootloader.
8. GRUB Legacy
• O arquivo de configuração do menu está
localizado em "/boot/grub/menu.lst”
9. GRUB 2
• O arquivo de configuração do menu está
localizado em "/boot/grub/grub.cfg";
• É gerado automaticamente pelo
"/usr/sbin/update-grub" uetc/grub.d/*" e
definições de "/etc/default/grub";
• tilizando modelos de "/
10. Bootloader
• Carrega o Kernel em 2 estágio:
– Estágio 1: Inicialização do initrd
– Estágio 2: Inicialização do Kernel
11. Estágio 1
• O initrd (Initial RAM Disk) que está em /boot/ é
descompactado em /tmp;
• é montado como /tmpfs neste processo
carrega-se drivers e arquivos;
• monta o kernel;
• finaliza o initrd.
12. Estágio 2
• O sistema Debian normal é iniciado pelo initrd
Debian;
• O kernel do sistema para o initrd Debian
continua a correr no seu ambiente;
• O sistema de arquivos raiz é mudado daquele
em memória (/tmpfs) para o que está no
sistema de arquivos do disco rígido real (/).
13. Estágio 2
• O programa init é executado como o primeiro
programa com PID=1
• /sbin/init é um link simbólico para o arranque do
sistema que usa.
15. init
• Debian antes de squeeze (6 February 2011) a
iniciação de estilo SysV simples (saiba mais
aqui);
• Debian wheezy (4 May 2013) melhora a
iniciação de estilo SysV ao ordenar a
sequência de arranque com cabeçalho LSB e
arrancando scripts de arranque em paralelo.
16. init
• Debian jessie (26 April 2015) muda o seu init
predefinido para o systemd para a inicialização
em paralelo e gerida por eventos.
17. init do Systemd
• O processo init do systemd carrega processos
em paralelo com base em arquivos de
configuração de unit
– /lib/systemd/system: Arquivos de configuração
predefinidos do SO
– /etc/systemd/system: Arquivos de configuração do
administrador do sistema
– /run/systemd/system: Arquivos de configuração
gerados em run-time.
20. runlevel
• Nível de execução;
• Controle que o sistema é executado;
• Níveis 0 ao 6;
• Cada runlevel roda alguns serviços;
• Configurado por arquivos de configuração.
21. Principais
• 0 - se eleva ele desliga o computador;
• 1 - Mono usuário para manutenção
• 2, 3, 4, 5 Multiusuários:
– 2 Debian Terminal;
– 3 Red Hat;
– 5 Ubuntu Gráfico.
• 6 está reiniciando o sistema.
23. init
• Quando os comandos init ou telinit vão para o
runlevel, o sistema basicamente executa os
scripts de inicialização;
• Os scripts cujos nomes começam com um "K" em
"/etc/rc<runlevel>.d/" são executados por ordem
alfabética com o único argumento "stop".
• Os scripts cujos nomes começam com um "S" em
"/etc/rc<runlevel>.d/" são executados por ordem
alfabética com o único argumento "start".