BOOT DO LINUX: Entenda todo o processo!
É sempre interessante tentarmos conhecer melhor os Sistemas Operacionais que trabalhamos, pois caso ocorra qualquer problema, estaremos aptos a identificar onde um determinado problema se encontra. No Linux não é diferente, e por isso hoje eu quero explanar um pouco sobre o BOOT DO LINUX: Entenda todo o processo!
Todo o processo consiste em 7 fases que eu vou explicar brevemente para que você tenha uma visão geral sobre o assunto.
BIOS
A BIOS (Basic Input Output System) é um firmware que fica armazenado na placa-mãe do seu equipamento, e é responsável por armazenar informações do seu hardware (memória, processador, HD…), o horário e, também, a ordem de boot.
Assim que você pressionar o botão de ligar do seu equipamento, os leds vão começar a acender o seu sistema entra no ciclo de Power, isto é, começa a distribuir energia elétrica para os componentes. Depois, ele passa para os ciclos de Pre-POST e POST onde será avaliado se existe algum problema de hardware (o mais é recorrente é algum problema na memória RAM do equipamento). Se houver algum problema, ele ficará travado (energizado, mas travado) e possivelmente mente vai emitir beeps de diagnóstico.
Finalizado todos os testes necessários, é hora da BIOS entrar em ação e escolher em qual componente ela deverá bootar (de acordo com a ordem de boot que mencionei anteriormente).
Aí vai um exemplo de uma BIOS com ordem de boot:
Neste exemplo, o CDROM é o primeiro item. Caso não haja um CD na gaveta, o Windows Boot Manager será chamado.
MBR
Imaginemos então que a BIOS escolheu o seu primeiro HD que está instalado um Ubuntu. A primeira coisa que vai acontecer é a leitura da MBR deste HD, ao qual conterá algumas informações interessantes para o processo de boot.
A MBR (Master Boot Record) são os primeiros 512 bytes do seu disco rígido. Nesta área é onde fica gravado o bootloader, ou seja, o Grub, LILO, SysLinux, etc.
Neste caso, o Grub 2 do Ubuntu vai estar ali e ele assumirá o bastão daqui para frente.
![Image result for master boot record][2]
Bootloader
Se você nãosabe o que é o Grub 2 e também não sabe como configura-lo, sugiro fortemente que veja o vídeo abaixo:
O Grub 2 é o que possibilita iniciarmos o sistema Linux, criando uma ponte entre a BIOS e o nosso Sistema Operacional. Além disso, o Grub é muito utilizado quando temos um dual-boot com Windows e precisamos de um menu interativo de seleção.
O objetivo do Grub 2 é iniciar o boot do Kernel Linux (na foto representado pela opção “Ubuntu”).
Kernel
Após ser realizada a chamado do Kernel Linux, o sistema entra em um estado conhecido como two stages boot.Isto porque a próxima sequência de boot é dividida em duas partes que se complementam: Initrd & Init.
Initrd/Initramfs
Initrd é um acrônimo para Initial RAM Disk. Ele é um arquivo compactado que, assim como o Kernel, fica armazenado dentro do /boot,veja:
O arquivo vmlinuz-4.14-x86_64 é o Kernel. Já o arquivo initramfs-4.14-x86_64.img é o arquivo de Initrd.
Mas, qual a função deste arquvio? Bom, o Initrd é um compilado de drivers e dependências para que o sistema operacional inicie normalmente. Por exemplo, se temos um sistema de arquivos Ext4, precisamos de um driver do Ext4 rodando para que o sistema operacional consiga se comunicar com o sistema de arquivos.
Da mesma forma que, se utilizarmos um sistema de RAID com o mdadm, precisamos de um driver para que meu sistema consiga entender o que é um RAID.
Então, durante o boot, o Initrd é montado como um sistema de arquivos temporário. Depois, ele é extraído e todos os drivers são carregados para a memória.
Finalizado este processo, com todos os drivers e dependências na memória, finalmente é montado o sistema de arquivos root, ou o famoso /.
Init
Depois que tudo está montado e pronto para iniciar o carregamento do sistema, o Kernel entrega a segunda parte para o processo Init, o primeiro processo do sistema operacional com PID 1**.**
A função do Init é carregar todos os outros serviços como MySQL, Apache, DHCP, Interface Gráfica, enfim, todos os processos.
Entretanto o Init só saberá o que ele deve iniciar com base no nível de execução do sistema padrão que foi definido (também conhecido por runlevel).
Runlevel
O Runlevel é uma parte um pouco mais complexa do processo, que será explanada em outro artigo mais detalhadamente. Mas, basicamente, ele é o nível de execução do sistema. E com base neste nível é que são definidos os serviços que serão iniciados.
Por exemplo, se executarmos no modo de recuperação, não faz sentido termos o serviço do MySQL rodando, correto? Então é com o Runlevel que fazemos esta separação.
E por fim, depois que todos os processos foram iniciados, o sistema está funcional e pronto para o uso.
Espero que tenham gostado desta dica!
Não esqueça de nos seguir no Instagram para receber os últimos conteúdos!
Participe dos nossos grupos no Telegram e Facebook! 🙂
Veja também:
Se tiver alguma dúvida ou sugestão de conteúdo, por favor, comente!