A inicialização de um sistema Linux é um processo complexo, mas pode ser dividido em vários estágios -chave:
1.
Inicialização do BIOS/UEFI: O processo começa com o BIOS (sistema básico de entrada/saída) ou UEFI (interface de firmware extensível unificada), que são interfaces de firmware que inicializam o hardware. Isso inclui coisas como detectar dispositivos de RAM, CPU e armazenamento. O BIOS/UEFI procura um carregador de inicialização.
2.
carregador de inicialização: O papel principal do carregador de inicialização é carregar o kernel Linux. Os carregadores de inicialização comuns incluem Grub (Grand Unified Bootloader) e Systemd-Boot. O carregador de inicialização encontra a imagem do kernel (geralmente denominada `vmlluz` ou similar) e o disco RAM inicial (initramfs, geralmente` initrd.img`). Os arquivos de configuração do carregador de inicialização (por exemplo, `Grub.cfg`) determinam qual sistema operacional inicializar e outras opções.
3.
carregamento e inicialização do kernel: O carregador de inicialização carrega o kernel na memória. O kernel começa a inicializar o hardware do sistema. Isso envolve:
*
Detectar e inicializar o hardware: O kernel identifica e configura todos os dispositivos de hardware conectados, como disco rígido, placa de rede e placa gráfica. Os drivers de dispositivo são carregados conforme necessário.
*
Montagem do sistema de arquivos raiz: O kernel monta o sistema de arquivos raiz (normalmente um ext4, btrfs ou outro sistema de arquivos) do disco rígido. Isso torna os arquivos do sistema operacional acessíveis.
*
Configurando processos: O kernel cria vários processos essenciais para a operação do sistema.
4.
initramfs (disco inicial da RAM): Antes que o sistema de arquivos raiz seja montado, um initramfs é usado. Este é um sistema de arquivos pequeno e temporário carregado na RAM. Ele contém drivers essenciais (por exemplo, para o próprio sistema de arquivos) e scripts necessários para montar o sistema de arquivos raiz. Depois que o sistema de arquivos raiz é montado, o initramfs é descartado.
5.
Inicialização do sistema: Depois que o sistema de arquivos raiz é montado, o kernel executa o processo init (PID 1). Historicamente, este foi o `init ', um processo simples. Nos sistemas modernos, `systemd` (ou outro sistema init como` runit` ou `s6`) é quase universalmente usado. `Systemd` é um sistema init mais sofisticado responsável por:
*
Serviços de partida: `Systemd` inicia vários serviços de sistema (daemons), como o gerenciador de rede, o servidor SSH, o gerenciador de exibição (por exemplo, GDM, LightDM, SDDM) e outros processos em segundo plano que fornecem a funcionalidade do sistema operacional. Estes são definidos nos arquivos da unidade (`.Service`).
*
Gerenciando dependências: `Systemd` garante que os serviços iniciem na ordem correta, manipulando dependências entre eles.
*
Fornecendo outras funcionalidades do sistema: `Systemd` também lida com coisas como log, Journald e gerenciamento do estado de tempo de execução do sistema.
6.
Interface de login/gráfico: Por fim, depois que todos os serviços necessários foram iniciados, o sistema está pronto para um usuário fazer login. Isso pode envolver uma tela gráfica de login (usando um gerenciador de exibição) ou um prompt de login baseado em texto.
Esta é uma visão geral de alto nível. Os detalhes exatos podem variar dependendo da distribuição Linux específica, versão do kernel e configuração de hardware. No entanto, os estágios centrais permanecem amplamente consistentes em diferentes sistemas Linux.