Wenn ich mein eigenes Dateisystem schreibe (einige grundlegende), wie installiere ich es auf meinem USB? Nehmen wir an, ich habe eine Hash-Tabelle geschrieben und möchte auf meinem USB formatieren. Mein Betriebssystem ist Ubuntu x86_64.
Wenn ich mein eigenes Dateisystem schreibe (einige grundlegende), wie installiere ich es auf meinem USB? Nehmen wir an, ich habe eine Hash-Tabelle geschrieben und möchte auf meinem USB formatieren. Mein Betriebssystem ist Ubuntu x86_64.
Antworten:
Ich würde empfehlen, dass Sie zuerst mit neuen Dateisystemen spielen, indem Sie sie in Dateien und nicht in Geräte schreiben. Dies erleichtert Ihnen die Entwicklung und das Testen.
# 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
Sobald Sie Ihr Dateisystem in eine Datei geschrieben haben, können Sie es auf den USB-Stick kopieren. Wenn Sie Ihr USB-Laufwerk / Ihren USB-Schlüssel anschließen, weisen Ereignisskripten ihm einen Gerätenamen zu. Sie benötigen den Gerätenamen, um Ihr eigenes Dateisystem darauf zu installieren. Sie können seinen Namen erhalten, indem Sie betrachten dmesg
Nachdem Sie es eingesteckt haben.
# plug in the USB key and wait 2 seconds
$ dmesg | less
# hit shift+G to see the end of the file, q to quit
Für einen USB-Kartenleser sehen Sie etwa Folgendes:
[ 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
Die Datei /dev/sdf
Hier kann man direkt mit dem interagieren, was auf der Speicherkarte gespeichert ist. Sie müssen darauf achten, den Geräteknoten für den USB-Schlüssel auszuwählen und nicht etwa eine Festplatte, von der Sie abhängig sind. Wenn sich auf dieser Speicherkarte eine Partitionstabelle befände, wären die Partitionen unter verfügbar /dev/sdf[n]
Dabei ist n die Nummer der Partition.
Ubuntu stellt automatisch Dateisysteme ein, unter denen es erkannt wird /media/<username>/<label>
. Wenn Sie mit Ihrem eigenen Dateisystemformat herumspielen möchten, müssen Sie dies wahrscheinlich tun umount
die ersten.
Sie können Ihr Dateisystem in eine Datei kopieren myfs
zum usb schlüssel mit dem dd
Werkzeug:
# 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
Registrieren des neuen benutzerdefinierten Dateisystems
Sie können neue Dateisysteme mit implementieren FUSE
, mit denen Sie Folgendes tun können:
# 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/
Hier ist ein Tutorial für einen in Ruby geschriebenen FS: https://www.debian-administration.org/article/619/Creating_Filesystems_with_Ruby__and_FUSE
Und wenn das funktioniert, können Sie Ihr neues benutzerdefiniertes Dateisystem dafür registrieren mount
weiß was damit zu tun ist. Sehen: https://stackoverflow.com/questions/1554178/how-to-register-fuse-filesystem-type-with-mount8-and-fstab