Esquema de nomenclatura de partições MTD

1

Qual é o esquema de nomenclatura das partições MTD listadas no seguinte log de inicialização?

5 cmdlinepart partitions found on MTD device phys_mapped_flash
Creating 5 MTD partitions on "phys_mapped_flash":
0x00000000-0x00080000 : "bootloader" 
0x00080000-0x00680000 : "kernel"
0x00680000-0x01680000 : "rootfs" 
0x01680000-0x01780000 : "data"
0x01780000-0x017a0000 : "bootload-env"

Em particular, estou perguntando qual esquema de nomenclatura usar para especificar a partição "rootfs" no prompt do U-Boot como um argumento para o comando:

setenv bootargs 'root= ???????'

IMO, preciso especificar o root = porque o log de inicialização mostra que o kernel não sabe o que é o dispositivo raiz.

VFS: Cannot open root device "<NULL>" or unknown-block(0,0)
Please append a correct "root=" boot option
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

... e também o log de inicialização mostra:

Kernel command line:  bootoctlinux 0x2a00200 mtdparts=phys_mapped_flash:512k(bootloader)ro,6M(kernel),16M(rootfs),1024k(data),128k(bootload-env) console=ttyS0,115200

BTW: O sistema de arquivos raiz é armazenado em uma seção incorporada (.init.ramfs) do arquivo ELF do kernel (vmlinux64) como um arquivo cpio gzipado e o log de inicialização indica que ele foi carregado na RAM com êxito:

Loading .init.ramfs @ 0xffffffff806ac000 (0x185ac7 bytes)

Isso é em um sistema embarcado com 32 MB de armazenamento flash apenas (kernel Linux v2.6.21.7 (Distro: Cavium-Octeon para MIPS64)). U-Boot 1.1.1 (compilação de desenvolvimento, svnversion: 176)

EDITAR: Algumas pessoas dizem que é MTD1, algumas que MTD2 algumas / dev / MTD1, algumas / dev / mtd1, algumas que são MTDblock1, algumas mtdblock1, algumas mtdblock2, algumas ubi.mtdblock1, algumas ubi: mtdblock1, (por que razão cólon?) etc ....
O que é a verdade? Como pode ser descoberto somente a partir do prompt do U-Boot ou do log de inicialização?

    
por George Robinson 15.07.2018 / 14:00

1 resposta

0

root=/dev/mtdblock3 ou algumas opções do UBI. Você não percebeu que o conselho diferente é para sistemas de arquivos diferentes :-). Eu não sei se /dev/mtd3 é usado para qualquer sistema de arquivos em árvore.

Se, então, o sistema de arquivos raiz for uma instância somente leitura de um sistema de arquivos baseado em bloco (não-mtd-aware), use /dev/mtdblock3 .

Se o sistema de arquivos raiz for uma instância do JFFS2, use /dev/mtdblock3 . Veja link Em geral, e para alguns exemplos de outros sistemas de arquivos, você pode verificar link (mas esta seção não menciona o UBI).

Se o rootfs usa o UBI, use algumas opções do UBI. No entanto, você não mostrou nenhum detalhe sobre o UBI - deve haver algumas mensagens de inicialização do kernel sobre dispositivos / volumes UBI, antes de conseguir que o root= funcione com qualquer dispositivo / volume UBI. Veja aqui: link Dá um exemplo de opções de UBI: ubi.mtd=0 root=ubi0:rootfs rootfstype=ubifs . Como sua partição mtd é chamada diretamente de "rootfs", espero que não seja UBI.

Eu evitaria usar o formato root=mtdblock3 , pelo menos se você não tiver certeza. A diferença é que pode não ser suportado por alguns initramfs. Considerando que, o kernel entende o formato root=/dev/mtdblock3 , quando você usa o kernel para montar o sistema de arquivos raiz e não usa um initramfs.

    
por 16.07.2018 / 23:12