É possível usar a libc no próprio estágio do gerenciador de inicialização?

0

Eu gostaria de usar algumas das funções dadas pela libc no próprio estágio do gerenciador de inicialização. É possível obtê-los nesse estágio de carregamento?

    
por Sen 01.02.2011 / 09:33

3 respostas

4

Você provavelmente terá que escrever suas próprias versões das funções que deseja, embora em alguns casos você possa usar o código-fonte da libc como ponto de partida. As funções na própria libc são escritas sob todas as suposições de um programa de espaço do usuário UNIX, incluindo:

  • a presença do kernel (ou mais especificamente, a interface syscall para o kernel)
  • um modelo de memória simples
  • uma infraestrutura de vinculação dinâmica (a menos que esteja vinculada estaticamente)

e no estágio de bootloader, você não tem nada disso. Em vez disso, (por padrão, sob Intel) você tem o BIOS, um modelo de memória segmentada, sem proteção de memória e o reinado completo da máquina.

É a mesma razão pela qual você vê a função printk() no código do kernel em vez de printf() - as suposições que o printf() da libc faz não se aplicam no espaço do kernel.

    
por 01.02.2011 / 17:45
2

Sim. A maneira mais fácil seria copiar o código que você precisa para o gerenciador de inicialização.

Quais funções são essas? Você deve entender que você não pode usá-los se eles confiarem nas chamadas do sistema para cumprir seu dever.

    
por 01.02.2011 / 10:20
0

Use apenas a vinculação estática. A vinculação dinâmica não funcionará nesse ponto.

    
por 01.02.2011 / 10:40