O que é zImage, rootfs

5

Sou muito novo no Embedded Linux. Nós usamos o sistema de compilação poky. Nós apenas usamos o comando bitbake linux-imx para construir o kernel. Ele gera alguns arquivos zImage, rootfs, uboot e também uma imagem sdcard. Nós apenas copiamos a imagem do sdcard e rodamos o linux em nossa placa customizada. Minhas perguntas o que o rootfs e o zImage realmente contêm ??

    
por seereddi sekhar 11.07.2016 / 13:58

2 respostas

6

Para entender o que cada arquivo é responsável por você, deve entender como o MPU é iniciado.
Como eu entendi do seu qestion você usa a família de microprocessadores NXP (Freescale) i.MX. Ele inclui um pequeno carregador ROM, que fará a configuração básica do sistema (interfaces para memória, árvore de relógio, etc.), busca de mídia para inicializar (baseado em bits OTP gravados ou GPIO), localize bootloader (u-boot no seu caso) em endereço exato que é especificado na folha de dados, carregar e iniciá-lo. U-boot irá iniciar mais interfaces (por exemplo, Ethernet), encontrar argumentos que devem ser passados para o Kernel (configurações de tela, console, configurações de rede, se você usar NFS), copiar Kernel para DDR e passar todos os argumentos. O kernel carregará todos os drivers e procurará rootfs com todas as bibliotecas, aplicativos, etc. Depois disso, o Kernel iniciará os scripts init, que iniciarão todo o sistema e iniciarão o aplicativo.

  1. O u-boot é a primeira coisa que será iniciada após o bootloader da ROM. Você pode substituí-lo com o seu próprio código se quiser que o MPU seja executado código bare-metal sem SO (como o microcontrolador).
  2. zImage é uma versão compactada da imagem do kernel do Linux que é auto-extraível.
  3. rootfs é o sistema de arquivos raiz, que contém todos aplicações, libs e na maioria dos casos tudo, incluindo home pasta.
  4. sdcard image é apenas todo o material mencionado acima que pode ser copiado (com dd) para o cartão, após a cópia você verá FAT partição com Kernel e árvore de dispositivos e partição EXT com rootfs, O u-boot está na área não particionada antes do FAT (no caso de você usar o i.MX6 é 0x80000). Está lá apenas para facilitar a sua vida.
por 11.07.2016 / 14:40
3
  • zImage é a imagem binária real do kernel compilado. É o que o gestor de início irá carregar e tentar executar (acredito que no Linux incorporado está escrito diretamente para o setor de inicialização de alguma forma; consulte o manual da distribuição Linux incorporado para obter instruções)
  • rootfs é a chamada imagem INITial RamDisk (também conhecida como initrd) que contém tudo que o kernel precisará para inicializar em um estado onde o sistema de arquivos raiz real possa ser montado.
  • uboot é o carregador de boot usado pelo Linux incorporado; Basicamente, ele diz ao BIOS que execute zImage com as opções que dizem ao zImage onde encontrar o sistema de arquivos raiz para que ele saiba como iniciar.

Se eu tivesse que adivinhar, arriscaria que todos esses arquivos fossem criados no processo de gerar a imagem SDcard real, mesmo que você não precise mais adicionar manualmente os três primeiros à imagem final.

    
por 11.07.2016 / 14:09