Inicializando o kernel (imagem FIT) sem rootfs

1

Um dispositivo Linux incorporado com o qual estou trabalhando tem o seguinte parâmetro de kernel:

root=/dev/ram0

Além disso, a imagem do kernel é empacotada junto com uma árvore initrd e device para fazer uma árvore de imagens planas , ou FIT imagem.

Quando totalmente inicializado, o dispositivo não possui armazenamento persistente. Ou seja, qualquer coisa escrita no sistema de arquivos é completamente volátil. Considerando o parâmetro root= passado para o kernel, isso não é surpreendente.

Minhas perguntas são: Como isso funciona?

  • Eu sei que o Uboot copia o kernel em ram e o executa com um comando bootm , mas de onde vêm os arquivos do sistema de arquivos? Eles estão contidos dentro do initrd? Minha compreensão de um initrd é que é uma construção temporária. Se assim for, seria um deslocamento no blob de imagem FIT. Então, como está passando root=/dev/ram0 suficiente para o kernel saber onde está o seu sistema de arquivos?

  • O kernel executa introspecção e lê o cabeçalho da imagem FIT para determinar o posicionamento dos componentes constituintes?

  • Como as alterações do sistema de arquivos são suportadas dentro de uma imagem FIT, considerando que ela será compactada junto com o kernel e o blob da árvore de dispositivos?

por sherrellbc 28.06.2016 / 19:49

1 resposta

0

I do know that Uboot copies the kernel into ram and executes it with a bootm command, but where do the filesystem files come from?

Antes de poder iniciar o seu fitImage, você precisa carregá-lo na RAM. Depois disso, você pode iniciá-lo com bootm . Dentro da imagem de ajuste, você pode definir o Load Address e Entry Point para o kernel, por exemplo.

Are they contained within the initrd? My understanding of an initrd is that it is a temporary construct. If so, it would be an offset into FIT image blob. So, how is just passing root=/dev/ram0 sufficient for the kernel to know where its file system is?

Depende do seu sistema qual é a definição do sistema de arquivos. Existem alguns sistemas rodando completamente a partir de um RAMDISK e apenas armazenando configurações em qualquer tipo de NVRAM ou Flash.

Outros sistemas usam o RAMDisk para verificar onde encontrar o sistema de arquivos raiz. Por exemplo, para digitalizar USB-Bus, SATA ou SD-Cards. Quando o sistema de arquivos raiz é montado, o processo de inicialização continua com essa partição. Devido ao fato de que o init precisa ser executado a partir do PID 1. Alguns truques são necessários .

Does the kernel perform introspection and read the FIT image's header to determine placement of constituent components?

Não, o fitImage é analisado por u-boot. Como o u-boot passa os endereços onde o DTB e o RAMDISK estão localizados depende da plataforma AFAIK usada.

How are file system changes supported inside a FIT image considering it will be packed together with both the kernel and device tree blob?

Quando mudanças nos sistemas de arquivos são necessárias regularmente, você deve considerar usar algo mais flexível. Mas isso depende do hardware que você está usando. SD-Card, NAND, NOR ou discos giratórios.

    
por 26.07.2016 / 07:52