Eu recomendaria que você primeiro reproduzisse novos sistemas de arquivos, escrevendo-os em arquivos, e não em dispositivos. Isso facilitará seu desenvolvimento e testes.
# create a 4MB file called 'myfs' with just zeros
dd if=/dev/zero of=myfs bs=1 count=0 seek=4M
# then use your tool to create the custom filesystem on myfs
Depois de ter seu sistema de arquivos gravado em um arquivo, você pode copiá-lo para a chave USB. Se você conectar sua unidade USB / chave, os scripts de evento atribuirão um nome de dispositivo. Você precisará do nome do dispositivo para instalar seu próprio sistema de arquivos. Você pode obter seu nome olhando dmesg
depois de conectá-lo.
# plug in the USB key and wait 2 seconds
$ dmesg | less
# hit shift+G to see the end of the file, q to quit
Para um leitor de cartão USB, você veria algo como:
[ 740.925402] usb 2-2: new high-speed USB device number 3 using ehci-pci
[ 741.061264] usb 2-2: New USB device found, idVendor=05e3, idProduct=0732
[ 741.061270] usb 2-2: New USB device strings: Mfr=3, Product=4, SerialNumber=5
[ 741.061275] usb 2-2: Product: USB Reader
[ 741.061278] usb 2-2: Manufacturer: Genesys
[ 741.061282] usb 2-2: SerialNumber: 000000000712
[ 741.340371] usb-storage 2-2:1.0: USB Mass Storage device detected
...
[ 742.380447] sd 6:0:0:1: [sdf] Attached SCSI removable disk
O arquivo /dev/sdf
aqui permitirá interagir diretamente com o que está armazenado no cartão de memória. É preciso ter cuidado ao selecionar o nó do dispositivo para a chave usb e não, digamos, um disco rígido do qual você dependa. Se houvesse uma tabela de partições nesse cartão de memória, as partições estariam disponíveis em /dev/sdf[n]
, onde n é o número da partição.
O Ubuntu irá montar automaticamente os sistemas de arquivos que ele reconhece em /media/<username>/<label>
. Para brincar com seu próprio formato de sistema de arquivos, é provável que você tenha que umount
primeiro.
Você pode copiar seu sistema de arquivos em um arquivo myfs
para a chave usb usando a ferramenta dd
:
# WARN: backup your files on the key, because this is a very
# destructive operation.
# directly on the device (no partition table)
$ sudo dd if=myfs of=/dev/sdf
# -- OR --
# if you have a partition table, you could write it only to one
# of the partitions e.g.:
$ sudo fdisk /dev/sdf # create the partitions
$ sudo dd if=myfs of=/dev/sdf1 # for the first partition
Registrando o novo sistema de arquivos personalizado
Você pode implementar novos sistemas de arquivos com FUSE
, o que permitirá que você faça coisas como:
# mycustomfs is a program you write in the language you want.
# myfs is your filesystem in a file.
# /mnt/contents could be the target where you want the fs to be mounted
$ mycustomfs myfs /mnt/contents/
Aqui está um tutorial para um FS escrito em Ruby: link
E uma vez que você esteja trabalhando, você pode registrar seu novo sistema de arquivos personalizado para que mount
saiba o que fazer com ele. Consulte: link