Como um Debian é inicializado
Você já se perguntou o que acontece nos bastidores na hora da inicialização de um sistema Debian? Quem chama quem? Quem executa o quê? Quais os processos envolvidos?
Visão geral do processo de inicialização
Acionamos o POWER do computador, então este passa por vários processos de inicialização até nos oferecer um sistema operacional. Esses processos são feitos por estágio:
Vamos abordar cada um desses estágios de inicialização.
O padrão do Debian é um boot loader muito conhecido por todos: GRUB. Nada impede de você escolher outros Boot Loaders, como por exemplo o Lilo, LoadLin, Isolinux.
No Debian você pode editar o GRUB através do arquivo /boot/grub/menu.lst como root. Não vou abordar aqui as configurações do GRUB, pois vai fugir um pouco do nosso assunto.
pidof init
Esse script é quem vai fazer o trabalho de inicialização daqui pra frente. O init é quem vai inicializar o kernel em nível de usuário e tomar o controle dos próximos estágios, conhecidos como runlevels. Basicamente o init faz o seguinte:
1. Entra no runlevel N para inicializar o sistema conforme descrito no arquivo /etc/inittab.
2. Entra no runlevel S inicializando o sistema no modo monousuário afim de completar a inicialização completa do hardware.
3. Entra em um dos runlevels multiusuários (2 ao 5) afim de inicializar serviços do sistema.
Você pode dizer ao sistema em qual runlevel o init deve parar. Faça isso usando a diretiva init=runlevel no parâmetro do kernel que é listado no boot loader ou você pode editar o arquivo /etc/inittab diretamente, modificando a linha "initdeafult" para o runlevel de sua preferência. O padrão do Debian é o runlevel 2.
- BIOS
- Boot Loader
- Sistema Debian
Vamos abordar cada um desses estágios de inicialização.
1. BIOS
Esse é ponto de partida, localizado na ROM, onde é executado no momento em pressionamos o botão power. Seu papel é fazer uma inicialização básica do hardware através do POST, que é responsável pela aquela tela que nós conhecemos ao ligar o computador, que dependendo da marca pode variar de um computador para o outro, exemplo: DELL, VAIO, APPLE. Lá nós podemos ver no cantinho da tela alguns atalhos como F1 - faz função X, F2 - faz função Y, Del - faz função Z e assim por diante. Tudo isso varia de fabricante para fabricante. Escolhemos nosso boot padrão no BIOS, que vai ler os primeiros setores do disco (MBR). Após isso é chamado um Boot Loader, localizado na MBR.Boot Loader
Esse é o nosso segundo estágio, que é inicializado pelo BIOS, como o próprio nome Boot Loader já diz, esse é o responsável por carregar o kernel do sistema e a imagem initrd (initial ram disk) para a nossa memória. O initrd é um sistema de arquivos temporário (obs.: em versões do Linux 2.6 em diante é tecnicamente chamado de initramfs (initial RAM filesystem), tipicamente usado antes do sistema raiz real ser montado pelo sistema.O padrão do Debian é um boot loader muito conhecido por todos: GRUB. Nada impede de você escolher outros Boot Loaders, como por exemplo o Lilo, LoadLin, Isolinux.
No Debian você pode editar o GRUB através do arquivo /boot/grub/menu.lst como root. Não vou abordar aqui as configurações do GRUB, pois vai fugir um pouco do nosso assunto.
Sistema Debian
Estamos no terceiro estágio do nosso processo de boot, esse estágio é inicializado pelo Boot Loader. Aqui é onde o famoso script chamado init é executado, ele sempre tem PID 1, pois é o primeiro processo executado pelo sistema. Verifique isso com o comando:pidof init
Esse script é quem vai fazer o trabalho de inicialização daqui pra frente. O init é quem vai inicializar o kernel em nível de usuário e tomar o controle dos próximos estágios, conhecidos como runlevels. Basicamente o init faz o seguinte:
1. Entra no runlevel N para inicializar o sistema conforme descrito no arquivo /etc/inittab.
2. Entra no runlevel S inicializando o sistema no modo monousuário afim de completar a inicialização completa do hardware.
3. Entra em um dos runlevels multiusuários (2 ao 5) afim de inicializar serviços do sistema.
Você pode dizer ao sistema em qual runlevel o init deve parar. Faça isso usando a diretiva init=runlevel no parâmetro do kernel que é listado no boot loader ou você pode editar o arquivo /etc/inittab diretamente, modificando a linha "initdeafult" para o runlevel de sua preferência. O padrão do Debian é o runlevel 2.
Sou iniciante em Linux.
Cheguei a ter acesso ao processo quando tentava configurar uma placa de vídeo, com auxílio do pessoal do Mandriva.
Poderia dizer se estes arquivos todos são carregados em todas as distros ou na maioria deles? Teriam mais a ver com o Kernel ou com a Ditro?
Grato!