-
@ Old-fashioned way
2024-11-10 21:37:52
### 1. **Power ON**
- Quando você liga o computador, ele inicia o processo de boot.
- Esse primeiro passo envia energia aos componentes do sistema e dispara o BIOS (ou firmware UEFI em sistemas mais recentes).
### 2. **BIOS (Basic Input/Output System)**
- O BIOS ou UEFI é o firmware inicial que roda logo após o computador ser ligado.
- Ele executa um conjunto de verificações no hardware (chamado POST - Power-On Self-Test) e inicializa os dispositivos básicos necessários para o boot, como o disco rígido, memória RAM e CPU.
- O BIOS então procura o dispositivo de boot (HD, SSD, USB, etc.) e carrega o **MBR** ou a **partição EFI** para dar continuidade ao processo de boot.
### 3. **Master Boot Record (MBR) ou EFI Partition**
- O **MBR** (Master Boot Record) ou a **partição EFI** (em sistemas com UEFI) é onde ficam armazenadas as informações sobre o carregamento do sistema operacional.
- Em sistemas antigos, o MBR continha o **boot loader** e as tabelas de partição. Nos sistemas modernos com UEFI, a partição EFI cumpre essa função.
- O MBR ou a partição EFI passa o controle para o **boot loader**, que é responsável por carregar o sistema operacional.
### 4. **Boot Loader (e.g., GRUB)**
- O **Boot Loader** (exemplo: GRUB) é um programa responsável por carregar o sistema operacional no momento do boot.
- Ele permite selecionar qual sistema operacional inicializar (em caso de dual boot) e passa o controle para o **kernel** do sistema.
- GRUB (Grand Unified Bootloader) é o boot loader mais comum em sistemas Linux.
### 5. **Kernel**
- O **kernel** é o núcleo do sistema operacional Linux.
- Ele é carregado na memória pelo boot loader e começa a configurar os recursos do sistema, como a CPU, a memória e os dispositivos de hardware.
- O kernel é responsável por gerenciar os recursos do sistema e permitir a comunicação entre o hardware e o software.
### 6. **Initial RAM disk - initramfs**
- O **initramfs** é um sistema de arquivos temporário carregado na memória logo após o kernel.
- Ele contém módulos e drivers essenciais para que o sistema possa iniciar corretamente e acessar o sistema de arquivos principal do disco.
- O initramfs é desmontado após o sistema principal estar carregado.
### 7. **/sbin/init (parent process)**
- Após o kernel inicializar o sistema, ele chama o processo **/sbin/init**, que é o primeiro processo a rodar no Linux e é o "pai" de todos os outros processos.
- O init é responsável por iniciar e gerenciar todos os outros processos do sistema.
- Em muitas distribuições modernas, o init foi substituído por outros sistemas de inicialização, como o **systemd**, que tem mais funcionalidades e permite um gerenciamento mais eficiente de processos.
### 8. **Command Shell using getty**
- **Getty** é o processo que configura e gerencia terminais para o login do usuário.
- Ele exibe a tela de login em sistemas baseados em linha de comando.
- Se o sistema tiver uma interface gráfica, o getty geralmente passa o controle para o gerenciador de login gráfico.
### 9. **Graphical User Interface (X Window ou Wayland)**
- Finalmente, o sistema carrega a **interface gráfica** usando o **X Window System (X11)** ou o **Wayland** (um sistema gráfico mais moderno).
- Esse é o ambiente visual onde o usuário pode interagir com o sistema usando janelas, ícones, menus, etc.
- X11 e Wayland são servidores gráficos que gerenciam como as janelas e aplicativos são exibidos e manipulados na tela.
---
### Como esses processos se intercalam?
1. **Hardware ligado** → **BIOS/UEFI** realiza verificações básicas.
2. **BIOS/UEFI** encontra o dispositivo de boot e carrega o **MBR** ou **partição EFI**.
3. **MBR/EFI** localiza e executa o **boot loader** (GRUB).
4. **GRUB** permite que o usuário escolha o sistema operacional e carrega o **kernel** do Linux.
5. **Kernel** inicializa o sistema, configurando os recursos de hardware e carregando o **initramfs**.
6. **Initramfs** fornece drivers e módulos necessários para o kernel acessar o sistema de arquivos principal.
7. **Kernel** chama o processo **/sbin/init** (ou **systemd**), que inicia todos os serviços e processos do sistema.
8. **Init** executa o **getty** para configurar o terminal de login.
9. **Getty** chama o ambiente gráfico (X11 ou Wayland) se estiver presente, e o usuário pode então usar o sistema na interface gráfica.