如何将我自己的文件系统“安装”到我的 USB 中?

如何将我自己的文件系统“安装”到我的 USB 中?

如果我编写了自己的文件系统(一些基本文件系统),我该如何将其“安装”到我的 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

相关内容