Na minha distribuição Yocto não consigo montar a chave USB com exfat
o sistema de arquivos.
Se eu executar o comando:
> blkid /dev/sda
/dev/sda: LABEL="my-label" UUID="FC4D-5949" BLOCK_SIZE="512" TYPE="exfat"
Então tenho certeza que o sistema de arquivos USB é exfat
, mas quando tento executar o mount
comando recebo o seguinte erro:
> mount /dev/sda /media
mount: /media: unknown filesystem type 'exfat'.
Se eu executar o comando cat /proc/filesystems
( aqui encontrei o cat
comando), a lista de sistemas de arquivos suportados é:
> cat /proc/filesystems
nodev sysfs
nodev tmpfs
nodev bdev
nodev proc
nodev cgroup
nodev cgroup2
nodev cpuset
nodev devtmpfs
nodev debugfs
nodev tracefs
nodev securityfs
nodev sockfs
nodev bpf
nodev pipefs
nodev ramfs
nodev hugetlbfs
nodev rpc_pipefs
nodev devpts
ext3
ext2
ext4
vfat
msdos
iso9660
nodev nfs
nodev nfs4
nodev cifs
nodev smb3
nodev autofs
nodev overlay
nodev efivarfs
nodev mqueue
btrfs
exfat
está faltando.
Alguém poderia me explicar como posso montar um exfat
USB na minha distribuição yocto?
Seu kernel (que faz parte da sua compilação yocto) não tem suporte ao sistema de arquivos exfat.
Você precisa habilitar o sistema de arquivos exfat na compilação do seu kernel, a variável Kconfig que você precisa é
CONFIG_EXFAT_FS
.Como está escrito na resposta que aceitei, para montar um USB formatado por um
exfat
sistema de arquivos é necessário habilitar oexfat
sistema de arquivos na compilação do kernel; na resposta aceita está escrito que a variável Kconfig necessária para esse objetivo éCONFIG_EXFAT_FS
. Aqui estou escrevendo os passos que executei para modificar a configuração do kernel. Este post não é um procedimento repetível, mas apenas o rastreamento que segui para resolver o problema. Alguns detalhes são perdidos porque estão muito vinculados ao meu sistema de compilação.Configuração do Kernel
As receitas do kernel do Projeto Yocto fornecem a funcionalidade de
make menuconfig
invocar:Por exemplo, no meu sistema eu usei:
O comando anterior inicia um editor de menu gráfico que permite alterar o valor da variável
CONFIG_EXFAT_FS
.No editor de menu, defina
CONFIG_EXFAT_FS=m
e outras variáveis. Após as alterações na configuração do kernel, salvei a nova configuração e fechei o editor de menu; essa nova configuração é salva no arquivo.config
. Aqui não posso detalhar onde está o caminho para o arquivo.config
porque é um tópico muito amplo.Obter um
fragment.cfg
arquivoNeste ponto executei o comando:
que cria o arquivo
fragment.cfg
com as seguintes configurações:No final da
diffconfig
tarefa, o sistema de construção comunica o caminho do arquivofragment.cfg
.Renomeei o arquivo
fragment.cfg
com o nomeenable-extfat-filesystem.cfg
.Modificação de
.bbappend
arquivoNo meu sistema de compilação, no passado, criei um arquivo chamado
linux-intel_%.bbappend
arquivo para aplicar configurações e patches ao kernel, então o modifiquei adicionando a seguinte linha:Nota : nesta etapa não posso ser mais específico porque os nomes e caminhos dos arquivos dependem do sistema de compilação usado. Aqui adicione apenas que copiei o arquivo
enable-extfat-filesystem.cfg
no caminho mostrado abaixo:Compilação do kernel
Agora o kernel deve ser compilado pelo comando:
No final da compilação, o kernel é capaz de carregar o módulo
exfat
quando necessário, e por meio deste módulo umexfat
USB pode ser montado corretamente.No meu sistema, após a construção de uma imagem com as alterações de configuração do kernel anterior, quando é inserido um
exfat
USB é possível executar a seguinte montagem sem erro:onde
/dev/sda
está o dispositivo USB e/media
o ponto de montagem.