Eu tenho um aplicativo da web que deve ser hospedado em um controlador incorporado.
Este controlador (não meu) tem um sistema de arquivos de nomes de arquivo 8.3 FAT12, como o FAT12.
Meu sistema de compilação é executado no Linux e pode usar qualquer nome de arquivo permitido no ext4 (UTF-8).
O problema é: eu não posso construir e assinar o firmawarearchive sozinho, eu tenho que distribuir arquivos compactados para o dono da chave.
Se algo se infiltrar no arquivo, é um monte de problemas e discussões, porque o processo só quebra depois de criar o arquivo de firmware assinado, quando é enviado para um controlador de teste.
Devido a esse incômodo, quero detectar esses erros o mais cedo possível no meu sistema de criação.
Eu tentei montar um sistema de arquivos VFAT contido em um arquivo montado via dispositivo loop no modo FAT12 no meu diretório build / com mode = strict, mas nenhuma restrição parece funcionar além da restrição de espaço para o arquivo de loopback.
Existe outra maneira de adicionar restrições aos sistemas de arquivos para simular sistemas de arquivos limitados?
Editar 19.Dez2012:
Talvez eu deva mostrar o que tentei antes: (meu script de shell de teste no modo de depuração -vx)
export LANG=C
+ export LANG=C
+ LANG=C
export LC_ALL=C
+ export LC_ALL=C
+ LC_ALL=C
IMAGE=$(mktemp --quiet --suffix=fat12.img 8dot3XXXXXXXX)
mktemp --quiet --suffix=fat12.img 8dot3XXXXXXXX)
mktemp --quiet --suffix=fat12.img 8dot3XXXXXXXX
++ mktemp --quiet --suffix=fat12.img 8dot3XXXXXXXX
+ IMAGE=8dot3C2CGojhZfat12.img
MOUNTPOINT=${HOME}/fat-test
+ MOUNTPOINT=/home/human/fat-test
dd if=/dev/zero of=${IMAGE} bs=1M count=1
+ dd if=/dev/zero of=8dot3C2CGojhZfat12.img bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.00500883 s, 209 MB/s
mkfs.vfat -F 12 -n flashfs ${IMAGE}
+ mkfs.vfat -F 12 -n flashfs 8dot3C2CGojhZfat12.img
mkfs.vfat 3.0.12 (29 Oct 2011)
file ${IMAGE}
+ file 8dot3C2CGojhZfat12.img
8dot3C2CGojhZfat12.img: x86 boot sector, mkdosfs boot message display, code offset 0x3c, OEM-ID " mkdosfs", sectors/cluster 4, root entries 512, sectors 2048 (volumes <=32 MB) , Media descriptor 0xf8, sectors/FAT 2, heads 64, serial number 0xc02d5e98, label: "flashfs ", FAT (12 bit)
mkdir -p ${MOUNTPOINT}
+ mkdir -p /home/human/fat-test
\sudo mount ${IMAGE} ${MOUNTPOINT} -t vfat -o fat=12,check=strict,shortname=win95,uid=1000,gid=1000,debug
+ sudo mount 8dot3C2CGojhZfat12.img /home/human/fat-test -t vfat -o fat=12,check=strict,shortname=win95,uid=1000,gid=1000,debug
cd ${MOUNTPOINT}
+ cd /home/human/fat-test
df -h ${MOUNTPOINT}
+ df -h /home/human/fat-test
Filesystem Size Used Avail Use% Mounted on
/dev/loop1 1004K 0 1004K 0% /home/human/fat-test
## test suite
# is 8.3 and uppercase, should work
mkdir TEST
+ mkdir TEST
touch TEST/TEST.TXT
+ touch TEST/TEST.TXT
# is 8.3, but wrong case, should fail
mkdir trial
+ mkdir trial
mkdir trial/trial.txt
+ mkdir trial/trial.txt
# should fail
mkdir muchtoolong
+ mkdir muchtoolong
touch muchtoolong/muchtoolong.with.triple.extension
+ touch muchtoolong/muchtoolong.with.triple.extension
find ${MOUNTPOINT} -ls
+ find /home/human/fat-test -ls
1 16 drwxr-xr-x 5 human human 16384 Dec 19 18:40 /home/human/fat-test
21 2 drwxr-xr-x 2 human human 2048 Dec 19 18:40 /home/human/fat-test/TEST
22 0 -rwxr-xr-x 1 human human 0 Dec 19 18:40 /home/human/fat-test/TEST/TEST.TXT
23 2 drwxr-xr-x 3 human human 2048 Dec 19 18:40 /home/human/fat-test/trial
24 2 drwxr-xr-x 2 human human 2048 Dec 19 18:40 /home/human/fat-test/trial/trial.txt
25 2 drwxr-xr-x 2 human human 2048 Dec 19 18:40 /home/human/fat-test/muchtoolong
26 0 -rwxr-xr-x 1 human human 0 Dec 19 18:40 /home/human/fat-test/muchtoolong/muchtoolong.with.triple.extension
cd
+ cd
\sudo umount ${MOUNTPOINT}
+ sudo umount /home/human/fat-test
rm ${IMAGE}
+ rm 8dot3C2CGojhZfat12.img
Se alguém conseguir identificar o erro: TIA, porque não consigo encontrá-lo.