Если я напишу свою собственную файловую систему (некоторую базовую), как мне «установить» ее на свой USB?, допустим, я написал хеш-таблицу и хочу отформатировать на своем USB… Как мне это сделать? Моя ОС - Ubuntu x86_64.

1 ответ1

1

Я бы порекомендовал вам сначала поиграть с новыми файловыми системами, записав их в файлы, а не на устройства. Это облегчит вашу разработку и тестирование.

 # 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

Когда ваша файловая система записана в файл, вы можете скопировать ее на USB-ключ. Если вы подключите USB-накопитель / ключ, сценарии событий назначат ему имя устройства. Вам понадобится имя устройства для установки вашей собственной файловой системы. Вы можете получить его имя, посмотрев на dmesg после его подключения.

# plug in the USB key and wait 2 seconds
$ dmesg | less
# hit shift+G to see the end of the file, q to quit

Для устройства чтения карт USB вы увидите что-то вроде:

[  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

Файл /dev/sdf здесь позволит напрямую взаимодействовать с тем, что хранится на карте памяти. Вы должны быть осторожны, чтобы выбрать узел устройства для ключа USB, а не, скажем, жесткий диск, от которого вы зависите. Если бы на этой карте памяти была таблица разделов, разделы были бы доступны в /dev/sdf[n] где n - номер раздела. Ubuntu автоматически монтирует файловые системы, которые она распознает, в /media/<username>/<label> . Чтобы поиграться с вашим собственным форматом файловой системы, скорее всего, вам придется сначала их umount .

Вы можете скопировать свою файловую систему myfs в файл в ключ usb, используя инструмент 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

Регистрация новой пользовательской файловой системы

Вы можете внедрять новые файловые системы с FUSE , что позволит вам делать такие вещи, как:

# 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/

Вот учебник для FS, написанный на Ruby: https://www.debian-administration.org/article/619/Creating_Filesystems_with_Ruby__and_FUSE

И как только у вас это заработает, вы можете зарегистрировать новую пользовательскую файловую систему, чтобы mount знал, что с ней делать. См .: https://stackoverflow.com/questions/1554178/how-to-register-fuse-filesystem-type-with-mount8-and-fstab

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .