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