Wie installiere ich mein eigenes Dateisystem auf meinem USB-Stick?

0

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.

user17629
quelle
1
Entschuldigung, ich habe die Frage abgelehnt, da die Antwort von dem Dateisystem abhängen muss, das Sie erstellt haben. Das USB-Gerät ist nichts anderes als ein Block-Gerät. Wenn also nur eine Hash-Tabelle vorhanden ist, können Sie einfach auf den USB-Block schreiben, als wäre es eine Datei - aber damit lassen sich Größenprobleme usw. nicht bewältigen.
davidgo
Diese Frage weist darauf hin, dass der Autor nur die vage Vorstellung von Dateisystemen, ihren Funktionen und Operationen hat. Ich empfehle viel mehr zu lesen, bevor Sie ein so komplexes Problem wie die Entwicklung eines neuen Dateisystems angehen.
MariusMatutiae

Antworten:

1

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

init_js
quelle