Estou tentando particionar o eMMC em um Beaglebone Black. Aqui está como eu tenho /dev/mmcblk1 particionado:
root@beaglebone:~# fdisk -l /dev/mmcblk1
Disk /dev/mmcblk1: 3.6 GiB, 3825205248 bytes, 7471104 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x9ccd5613
Device Boot Start End Sectors Size Id Type
/dev/mmcblk1p1 * 2048 206847 204800 100M c W95 FAT32 (LBA)
/dev/mmcblk1p2 206848 7112703 6905856 3.3G 5 Extended
/dev/mmcblk1p5 208896 823295 614400 300M 83 Linux
/dev/mmcblk1p6 825344 1849343 1024000 500M 83 Linux
/dev/mmcblk1p7 1851392 2875391 1024000 500M 83 Linux
/dev/mmcblk1p8 2877440 3901439 1024000 500M 83 Linux
/dev/mmcblk1p9 3903488 4927487 1024000 500M 83 Linux
/dev/mmcblk1p10 4929536 7026687 2097152 1G 83 Linux
É exatamente assim que deve parecer. A partição 1 é primária, a partição 2 é estendida e as demais são lógicas. No entanto, quando listo os dispositivos, vejo apenas as partições 1, 2, 5, 6 e 7.
root@beaglebone:~# ls -l /dev/mmcblk1p*
brw-rw---- 1 root disk 179, 9 Mar 2 23:53 /dev/mmcblk1p1
brw-rw---- 1 root disk 179, 10 Mar 2 23:53 /dev/mmcblk1p2
brw-rw---- 1 root disk 179, 13 Mar 2 23:53 /dev/mmcblk1p5
brw-rw---- 1 root disk 179, 14 Mar 2 23:53 /dev/mmcblk1p6
brw-rw---- 1 root disk 179, 15 Mar 2 23:53 /dev/mmcblk1p7
lsblk mostra o mesmo:
root@beaglebone:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mmcblk0 179:0 0 7.2G 0 disk
└─mmcblk0p1 179:1 0 3.3G 0 part /
mmcblk1 179:8 0 3.6G 0 disk
├─mmcblk1p1 179:9 0 100M 0 part
├─mmcblk1p2 179:10 0 1K 0 part
├─mmcblk1p5 179:13 0 300M 0 part
├─mmcblk1p6 179:14 0 500M 0 part
└─mmcblk1p7 179:15 0 500M 0 part
mmcblk1boot0 179:16 0 4M 1 disk
mmcblk1boot1 179:24 0 4M 1 disk
Isso é verdade mesmo após uma reinicialização. Estou tentando fazer isso inicializado a partir do cartão SD executando o debian 9 (Linux beaglebone 4.4.84-ti-r120).
Alguém sabe o que pode estar acontecendo aqui? Atingi algum tipo de limite?
fonte
Portanto, passe
mmcblk.perdev_minors=16
adiante a linha de inicialização do kernel.Pelo menos no desenvolvedor do Kernel parece assumir um limite fixo de quatro partições para o MMC. https://elixir.bootlin.com/linux/v3.3/source/drivers/mmc/card/block.c#L1587
EDITAR:
A pergunta já foi feita pelo superusuário e respondida com a ajuda do mantenedor do kernel Beaglebone Black, Robert C Nelson. A resposta é basicamente a mesma que Ignacio Vazquez-Abrams já postou , mas faltam informações sobre o argumento de inicialização.
Lendo a fonte, parece que o kernel deve imprimir
mmcblk: using 16 minors per device
se ommcblk.perdev_minors=16
argumento de inicialização estiver funcionando corretamente. https://elixir.bootlin.com/linux/v4.4.84/source/drivers/mmc/card/block.c#L2694Assim como Dave, não ajudou para mim passar o parâmetro do kernel mmcblk.perdev_minors=16 (sim, meu kernel foi configurado com CONFIG_MMC_BLOCK=y). Usando o script extract-vmlinux e pesquisando o binário descompactado por strings, descobri que meu kernel queria o seguinte parâmetro:
mmc_block.perdev_minors=16
Substituir mmcblk por mmc_block me permitiu ver todas as minhas partições. Estou usando o kernel 4.4.75, a documentação ainda diz mmcblk em vez de mmc_block nessa árvore de origem.
Achei esta pergunta com suas respostas muito útil para começar a depurar meu problema e espero que minha resposta ajude outras pessoas com kernels mais recentes.