Como instalar meu próprio sistema de arquivos no meu USB?

0

Se eu escrever meu próprio sistema de arquivos (alguns básicos), como faço para instalá-lo no USB ?, digamos que eu tenha escrito uma tabela de hash e quero formatá-lo no meu USB. Como faço para naquela? Meu sistema operacional é o Ubuntu x86_64.

    
por user17629 22.11.2015 / 20:54

1 resposta

1

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

    
por 23.11.2015 / 00:09