Pergunta

Existe alguma coisa que a necessidade do kernel para começar a partir do inicialização loader.Usually o kernel é capaz de trazer um sistema a partir do zero, então por que não exige nada de boot-loader? Tenho visto mensagens de inicialização a partir do kernel assim.

"Fetching vars from bootloader... OK"

Então, o que exatamente são as variáveis ??que está sendo passado? Também como são as variáveis ??que está sendo passado a partir do boot-loader? É através da pilha?

Foi útil?

Solução

O kernel aceitar chamados opções de linha de comando, que são texto com base. Isto é muito útil, porque você pode fazer um monte de coisa sem ter que recompilar o kernel. Quanto à passagem de argumento, ele é dependente da arquitetura. Em ARM é feito através de um ponteiro para uma localização na memória, ou em um local fixo na memória.

Aqui está como isso é feito em ARM . Normalmente um kernel não é capaz de inicializar a máquina a partir do zero. Pode ser a partir do BIOS, mas então não é a partir do zero. É preciso algum inicialização, este é o trabalho do bootloader.

Outras dicas

Há alguns parametros que o kernel do Linux aceita do bootloader, que o que eu posso me lembrar agora é a parametre vga. Por exemplo:

kernel /vmlinuz-2.6.30 root=/dev/disk/by-uuid/3999cb7d-8e1e-4daf-9cce-3f49a02b00f2 ro vga=0x318

Tenha um olhar em 10 parâmetros de tempo de inicialização que você deve saber sobre o kernel Linux que explica alguns dos parametros comuns.

Para o kernel do Linux, há várias coisas que o bootloader tem para dizer ao kernel. Ele inclui coisas como a linha de comando do kernel (como várias outras pessoas já mencionadas), onde na memória o initrd foi carregado e seu tamanho, se um initrd está sendo usado (o kernel não pode carregá-lo por si só, muitas vezes quando se utiliza um initrd, os módulos necessários para dispositivos de armazenamento acess estão dentro do initrd, e também pode ter que fazer alguma configuração bastante complexo antes de ser capaz de acessar o armazenamento), e várias chances variados e extremidades.

Consulte / x86 / boot.txt (link para a versão 2.6.30 do) para obter mais detalhes para a arquitetura x86 tradicional (ambos 32-bit e 64-bit), incluindo a forma como estas variáveis ??são passados ??para o código de configuração do kernel.

O bootloader não usa uma pilha para passar argumentos para o kernel. Pelo menos no caso do Linux, existe uma estrutura de memória bastante complexo que o bootloader preenche que o kernel sabe como analisar. Isto é como o bootloader aponta o kernel para sua linha de comando. Consulte documentaion / x86 / boot.txt para mais informações.

Linux aceita variáveis ??a partir do gerenciador de inicialização para permitir que certas opções a serem usadas. Eu sei que uma das coisas que você pode fazer é fazer com que você não tem que log-in (modo de recuperação) e há várias outras opções. É principalmente apenas permite correções a ser feito se houver um problema com alguma coisa ou para mudança de senha. Esta é a forma como as botas Ubuntu Live-CD Linux, se você optar por usar uma outra opção.

Normalmente os parâmetros chamados parâmetros de linha de comando, que é passado para o módulo do kernel do gerenciador de inicialização. Bootloader uso muitas das interrupções do BIOS para detectar,

memory
HDD
Processor
Keyboard
Screen
Mouse
ETC...

e todos os harwares detalhes vão ser detectado no momento da inicialização, que está em modo real, em seguida, passar estes parâmetros de Kernel.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top