Minimal Linux, preso na construção do GRUB

1

Estou tentando construir um linux mínimo, para experimentar drivers (o LLD 3 refere-se à versão 2.6.10 do kernel). O LFS parece ser uma tarefa muito difícil, e eu não tenho certeza se seria capaz de criar o 2.6.10 consultando os documentos mais recentes.

Estou seguindo isso blog para criar uma imagem mínima que possa ser executada no qemu ( Não quero estragar meu sistema existente, por isso escolhi a virtualização).

Eu estou preso no ponto de construir o grub. Consegui criar a versão mais recente do grub i, e 2.0, mas não consegui localizar os arquivos necessários stage1, stage2, e2fs_stage1_5 (mencionado no blog).

Tomando a versão antiga 0.97 como por o blog, surpreendendo a construção está falhando, durante o configure configure: error: GRUB requires a working absolute objcopy; upgrade your binutils

Atualize seus binutils? Estou usando o mais recente Ubuntu.

grub-0.97$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04.3 LTS
Release:        12.04
Codename:       precise

grub-0.97$ ld -version
GNU ld (GNU Binutils for Ubuntu) 2.22

Também encontrei este link que menciona algo sobre a binutil upgrade (2.9.1.0.23 ou posterior) para a criação do GRUB.

Estou fazendo algo errado?

    
por Kamath 07.12.2013 / 19:43

2 respostas

2

Se você quiser criar tudo do zero, tente Buildroot .

git clone git://git.buildroot.net/buildroot
cd buildroot
make qemu_x86_defconfig
make

Veja este blog para mais informações.

    
por 07.12.2013 / 21:17
3

I am trying to build a minimal linux, for experimenting out with drivers (LLD 3 book refers kernel version 2.6.10). LFS looks out to be a hell of a task...

Sim, é. Se você quer apenas um linux mínimo com um kernel customizado, você certamente não precisa construir a userland inteira também! Escolha um objetivo:

  1. Experimente o desenvolvimento de drivers.

    OR

  2. Construa o linux do zero.

Não ambos, porque se o que você realmente quer fazer é # 1, # 2 é apenas um desnecessário desperdício de tempo. E não um curto período de tempo, como você está descobrindo, embora esse blog seja bem curto, eu suspeito que você terá muito mais problemas e dúvidas se continuar. Pense: dias . Tipo, dias inteiros, plural. E uma probabilidade muito alta de que, em algum momento durante o dia 2 ou 3, você concorde comigo e arquive o LFS em vez de perder mais tempo.

I don't want to mess up my existing system, that why I chose virtualization.

"bagunçar o seu sistema" certamente não é um problema ao testar os drivers do kernel, exceto no sentido de bagunçar o estado de execução. Ou seja, você não fará nenhum dano que não seja corrigido por uma reinicialização. Por "quase certamente não", quero dizer, se é um risco, você saberá por causa da natureza peculiar do que você está fazendo. Mas você não vai trabalhando com o LDD 3.

No entanto, é muito fácil desorganizar o estado de execução o suficiente para exigir uma reinicialização, o que pode se tornar um aborrecimento tedioso, e corre um pequeno risco de corromper o sistema de arquivos se "reinicializar" significa passar o switch porque o kernel venceu Não entre em pânico - o que torna uma boa idéia usar uma VM. Eu não acho que o QEMU é a melhor escolha, a menos que você esteja tentando simular hardware estrangeiro. Que você quase certamente não precisa / quer fazer neste caso.

Então, aqui está o meu conselho: se você estiver em uma máquina x86 ou x86_64, use uma VM x86 (_64) como virtualbox . Use qualquer imagem que você queira e instale um kernel personalizado. Novamente: você não precisa construir o espaço do usuário para executar um kernel personalizado . Você só precisa construir e instalar o kernel em um espaço de usuário existente (ou imagem do SO). Apenas o kernel. Nada além do kernel. Isso é tudo. Você pode fazer isso em < 15 minutos, embora possa demorar horas na primeira leitura de todas as configurações.

Mas: você nem precisa de um kernel personalizado para experimentar a construção de módulos. Você só precisa da fonte para o kernel usado na sua imagem. Embora o LDD 3 seja datado, o kernel 3.x não é tão diferente do kernel 2.6. Muitos drivers, etc., em 3.x estão completamente inalterados de 2.6.

OTOH, tendo alguma experiência em construir kernels, pode fornecer insights para você. programação do kernel.

    
por 07.12.2013 / 20:25