Como evito que o kernel gire e sobrescreva o sistema de arquivos inicial?

2

Como evito que o kernel gire e sobrescreva o sistema de arquivos inicial?
Quais switches eu passo para o kernel?
Preciso adicionar algum código ao initramfs?

Eu fiz crossbox e o instalei no diretório padrão de _install .
Então apontei para este diretório no kernel menuconfig (CONFIG_INITRAMFS_SOURCE).
Meu zImage agora contém o arquivo cpio conhecido como initramfs.
Quando eu inicializo ( u-boot bootm 0xkernel - 0xdtbBlob ), o kernel irá com erro "Não é possível montar rootfs no dispositivo de bloco desconhecido". Pelo que entendi, o kernel está procurando pelo "sistema de arquivos real" para sobrescrever o "sistema de arquivos inicial". Acho que isso é chamado de 'pivot' .
Acho que quero manter meu sistema de arquivos inicial intacto, pelo menos por enquanto.
Eu quero usar o initramfs que criei e incluí no zImage.

Parece que tudo que li até agora é para:
um ramdisk (dispositivo de bloco). Eu não quero usar porque eu só tenho 8M de memória.
um sistema de arquivos real. Não mmc, sd, rede disponível. Eu carrego todos os arquivos na memória em um arquivo sb.
um kernel antigo ou uma maneira de fazer as coisas. Eu estou usando o kernel 4.xe u-boot 2015.x

Hardware:
* Freescale imx233 incorporado
* 8M sdram
* Carregando o arquivo sb com chave zero para sdram via modo de recuperação.
* Não mmc, sd, rede

Objetivo:
Para criar um pequeno kernel e sistema de arquivos com apenas as ferramentas necessárias:
* depurar e obter o resto do hardware funcionando, como a tela LCD e a porta USB. * Para flash nand com arquivos do usb.

obrigado

    
por jc__ 25.08.2015 / 22:59

1 resposta

0

Na raiz do initramfs, crie um symlink para o binário do busybox, chamado init . Por exemplo, se a raiz for o diretório _install e o binário do busybox estiver em _install/bin/busybox :

cd _install
ln -s bin/busybox init
(re-compile and copy kernel)

Nenhum cmdline de kernel é necessário. O padrão do kernel é executar /init * no initramfs. O Busybox, sendo uma biblioteca de chamadas múltiplas, emulará o comportamento do utilitário para o qual foi chamado. Isso significa que agora emulará init , que normalmente executa inittab . Se você não a desativou na versão do Busybox, ela tem um padrão inittab compilado em Este padrão irá configurar o tty com acesso ao shell para você.

*) O kernel, na verdade, é o padrão para linuxrc ou init , mas eles são a mesma coisa para o Busybox.

    
por 14.08.2018 / 15:27