Como o kernel “abre mão” do controle para a inicialização específica da distribuição?

3

Sempre me perguntei como o kernel passa o controle para código de terceiros, ou especificamente código específico de distribuição, durante a inicialização.

Eu pesquisei os arquivos de configuração do GRUB, suspeitando que um parâmetro especial fosse passado para o kernel para que ele saiba o que fazer depois de ter sido inicializado com sucesso, mas incapaz de encontrar qualquer coisa. Isso me leva a suspeitar que possa haver certos arquivos na partição raiz que o kernel procura.

Eu ficaria grato se alguém pudesse lançar alguma luz sobre este assunto. Como as distribuições conseguem isso?

    
por haste 23.02.2012 / 14:49

2 respostas

8

É codificado, mas você pode substituir os padrões pelo parâmetro do kernel init=... .

De init/main.c :

if (execute_command) {
  run_init_process(execute_command);
  printk(KERN_WARNING "Failed to execute %s.  Attempting "
        "defaults...\n", execute_command);
}
run_init_process("/sbin/init");
run_init_process("/etc/init");
run_init_process("/bin/init");
run_init_process("/bin/sh");

panic("No init found.  Try passing init= option to kernel. "
      "See Linux Documentation/init.txt for guidance.");
    
por 23.02.2012 / 15:17
3

A Wikipedia tem um bom artigo sobre o processo de inicialização do Linux.

Hoje, geralmente é usado um initramfs .

    
por 23.02.2012 / 14:54