如果我编写了自己的文件系统(一些基本文件系统),我该如何将其“安装”到我的 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/
下面是一个用 Ruby 编写的 FS 教程: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