Como posso inicializar o linux rootfs da partição rootfs de passagem do u-boot pelo rótulo?
Estou usando o u-boot como bootloader e o cartão é um RedPitaya. O linux é um Linux customizado baseado na imagem estável do Ubuntu disponível para o cartão.
O U-boot é exibido na primeira partição do cartão SD com o kernel do linux e a árvore de dispositivos. Estou tentando inicializar o sistema de arquivos raiz em um disco rígido externo USB
Preciso que eu possa inicializar o disco rígido se eu usar a convenção de nomenclatura "classic" / dev / sdxn.
Eu já tentei com os seguintes parâmetros, mas ambos falharam:
console=ttyPS0,115200 root=/dev/disk/by-label/ROOTFS rw rootfstype=ext4 earlyprintk rootwait isolcpus=1
console=ttyPS0,115200 root=LABEL=ROOTFS rw rootfstype=ext4 earlyprintk rootwait isolcpus=1
Pelo que eu entendi fazendo pesquisas, / dev / disk / by-label é preenchido pelo udev, então ele não está disponível no u-boot ao passar os argumentos de inicialização para o kernel do linux.
Também descobri que a funcionalidade de inicializar a partir do rótulo não está integrada ao kernel do Linux, como você pode ver neste arquivo do_mounts.c antes da definição da função dev_t name_to_dev_t(const char *name)
.
Então, a partir de agora, gostaria de encontrar uma maneira de inicializar a partição rotulada como ROOTFS
no HDD externo.
Eu vejo duas soluções diferentes:
1 - Integre a funcionalidade de inicialização by-label no kernel do Linux adicionando algo como
if (strncmp(name, "LABEL=", 6) == 0) {
name += 6;
res = devt_from_label(name);
if (!res)
goto fail;
goto done;
}
em do_mounts.c
e implemente a função devt_from_label
.
2 - Use um pequeno rootfs na segunda partição do cartão SD para resolver o nome do dispositivo de seu rótulo e reinicie a inicialização do kernel com o nome do dispositivo substituído.
O que você acha disso? Qual deles seria o "mais simples" para implementar?
Talvez eu esteja esquecendo de algo importante ou alguém já tenha conseguido fazer a mesma coisa.
De qualquer forma, eu ficaria feliz em ter alguma ajuda para alcançá-lo