Eu tropecei recentemente no ntldrmódulo GRUB .
Aparentemente, uma das coisas para as quais ele pode ser usado é uma alternativa chainloaderpara inicializar as versões NT> = 6.0 do Windows, como no exemplo abaixo. (Muito útil se o registro de inicialização por volume de uma partição do Windows estiver corrompido.)
menuentry "Windows 7 (bootmgr on /dev/sda1)" --class windows --class os {
insmod part_msdos
insmod ntfs
insmod ntldr
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 1EA0019AA0017A13
ntldr ($root)/bootmgr
}
Onde posso aprender mais sobre como essa diretiva de inicialização pode ser usada? Eu não o vi listado quando procurei na versão HTML do manual GNU GRUB .
Respondendo à resposta de ckhan
Muito obrigado! Eu tinha decidido que precisaria tentar pesquisar o código-fonte para aprender mais sobre o ntldrcomando / módulo do GRUB . Mas você fez um trabalho muito melhor do que eu faria.
Nunca me ocorreu olhar os arquivos de e-mail para ver quais discussões de design a pessoa que escreveu o código poderia ter tido. Esse método parece que pode ser muito útil no futuro. Obrigado por mencionar.
Minha opinião sobre o ntldrsuporte ao GRUB
- Embora não tenha muita certeza do quanto a distinção significa,
ntldré um módulo, não um comando. Ou talvez um comando carregado dinamicamente, se desejar.
Seguindo o link do código-fonte e olhando as linhas 152 (GRUB_MOD_INIT) e 159 (GRUB_MOD_FINI), você pode ver o código para carregar e ... suponho ... descarregar o módulo.
Aparentemente, o GRUB implementa muitas funções que você pode pensar serem " comandos " como módulos. A única diferença de uso que eu tenho conhecimento é que, antes de usar um módulo, é necessário garantir que ele tenha sido carregado com o comandoinsmod ntldr.
Além: Sempre me perguntei por que o GRUB não suportareboot. Acontece que o comando existe, mas é um módulo. Serebootretornarunknown command, entãoinsmod rebootpermite ao GRUB "lembrar" orebootcomando.
Além: Quando e por que o GRUB pode " descarregar " um módulo, ainda não tenho idéia. Talvez seja o resultado de algo semelhante à " coleta de lixo "? Percebi que, uma vez carregados, os módulos parecem persistir, mesmo depois que um sistema é desligado e reiniciado. Obviamente, você não pode depender disso, mas parece que é assim que geralmente funciona na prática. - É interessante que eles baseados
ntldremchainloader. Eu não olhei para ochainloader.ccódigo. Eu acho que provavelmente também faz uma realocação de carga no modo real de 16 bits da Intel ?
Eu estou bastante feliz que eles não implementountldrcomo uma opção dechainloader. Eu concordo com o Vladimir. Quaisquer que sejam as semelhanças ocultas, a sintaxe de uso é muito diferente. A abordagem atual é menos exigente. - Também é interessante ver a aparente falta de entusiasmo em adicionar este comando ao GRUB. Aparentemente, os desenvolvedores do GRUB acharam que o dano ao Registro de Inicialização da Partição do Windows (PBR) era extremamente improvável. No entanto, posso esboçar como fazê-lo durante uma instalação comum o suficiente.
Comece assumindo que um usuário tenha o Windows instalado em seu sistema. Eles agora instalam o Ubuntu (12.04 LTS) " ao lado " do Windows. Em um ponto durante a instalação do Ubuntu, eles aparentemente podem decidir onde desejam instalar o GRUB. Por razões que não consigo adivinhar, algumas delas decidem instalar o GRUB na partição em que o Windows está instalado.
A instalação é concluída e eles podem iniciar com êxito o Ubuntu. No entanto, quando eles tentam iniciar o Windows selecionando a entrada no menu GRUB, o Windows não inicia. Em vez de tentar iniciar o Windows com o GRUB, apenas exibe novamente o menu do GRUB?
Por quê? Bem, aparentemente quando eles decidiram instalar o GRUB na partição do Windows, parte do que realmente aconteceu foi que o PBR para a partição do Windows foi sobrescrito pelo PBR do GRUB. Portantochainloader +1, não carrega em cadeia um carregador de inicialização do Windows, mas recarrega o GRUB.
Na IMO, a maneira rápida mais segura de permitir que um usuário inicialize o Windows nessa situação é usar o novo do GRUBntldr. Gostaria de saber se isso seria do interesse dos desenvolvedores. Espero que eles não tenham antecipado esse cenário.
Gostaria de saber quais gerenciadores de inicialização, exceto os do Windows, ntldre bootmgro ntldrcomando GRUB pode ser capaz de carregar?