Δημιουργία Filesystem σε C

harris79 | Κυρ, 01/13/2008 - 23:30 | 1' | 5

Χαιρετώ τους Linux - ers
Χρόνια Πολλά και επιπλέον ένα πρόβλημα.
Πως μπορώ να δημιουργήσω ένα δικό μου filesystem στον δίσκο, και εννοω την δημιουργία μιας δικής μου version mkfs σε C. Γίνεται να δημιουργήσω εικονικό δισκο πχ με προκατασκευη ενός αρχειου μεγαλου μεγεθους (my_disk.dat) και στη συνεχεια να προσθεσω τα utilities (copy,delete,move,rename ....) Για να δουμε ιδέες.

Δώσε αστέρια!

MO: (ψήφοι: 0)

Σχόλια

Εάν το ζητούμενο είναι η δημιουργία ενός συστήματος αρχειοθέτησης με τα παραπάνω αρχεία, το θέμα είναι απλό.

Μπες ως root στον πιγκουίνο σου και πληκτρολόγησε τα ακόλουθα:

dd if=/dev/zero of=./my_disk.dat bs=1024k count=50

(δημιούργησε ένα αρχείο μεγέθους 50 megabyte)

mkfs -t ext3 ./my_disk.bat

(δημιούργησε ένα σύστημα αρχειοθέτησης τύπου ext3 στο αρχείο των 50 megabyte)

mkdir ./mountpoint

(δημιούργησε έναν φάκελο κάτω απο τον οποίο θα αναρτήσεις το σύστημα αρχειοθέτησής σου)

mount -o loop ./my_disk.dat mountpoint/

(αποκτάς πρόσβαση στο σύστημα αρχειοθέτησης των 50 meg που έφτιαξες στο αρχειάκι και στο σημείο αυτό μπορείς να αντιγράψεις τα προγραμματάκια που θέλεις (cp, rm, mv ktl) σε αυτό).

Όταν τελειώσεις βγες πιο πάνω απο το mountpoint και κάνε ένα umount

Eάν το ζητούμενο είναι να φτιάξεις τη δική σου δομή δεδομένων για να δημιουργήσεις το δικό σου σύστημα αρχειοθέτησης, το συζητάμε. Αλλά τότε γιατί τα υπάρχοντα (ext3, reiser, xfs ....ktl) δε σε καλύπτουν. Ποιές ιδιότητες πρέπει να έχει το σύστημά σου;

George Magklaras

http://folk.uio.no/georgios

ΜΑλλον δεν ήταν τόσο κατανοητή η ερώτηση μου. Κάθε λειτουργικο έχει το δικό του filesystem (windows-ntfs linux-ext3 κλπ) Πως μπορώ λοιπον να ορίσω ένα δικό μου filesystem myv1 (myversion 1)? Στην συνέχεια να φτιαξω εργαλεια mymkfs mymkdir. Στην γλωσσα C όλα αυτά.Πολύ τρελό ακούγεται αλλά κάπως έτσι ξεκινούν όλα τα όμορφα πράγματα.

Χάρης

Η ΑΕΚ ειναι κυρίως ιδέα και οι ιδέες δεν αποθνήσκουν

harris79]Κάθε λειτουργικο έχει το δικό του filesystem (windows-ntfs linux-ext3 κλπ)

Πιο σωστά, κάθε λειτουργικό μπορεί να υποστηρίζει διάφορα filesystems, όχι απαραίτητα μόνο ένα δικό του.

harris79]Πως μπορώ λοιπον να ορίσω ένα δικό μου filesystem myv1 (myversion 1)?

Απ' όσο καταλαβαίνω είναι ασύγκριτα πιο δύσκολο να σχεδιάσεις τις εσωτερικές
δομές του filesystem, δηλαδή τον τρόπο με τον οποίο θα αποθηκεύει,
χειρίζεται και παρουσιάζει τα δεδομένα παρά να μιλήσεις με τα σχετικά interfaces ώστε να "δει" το Linux το filesystem σου. Εν πάσι περιπτώσει, ο
παραδοσιακός τρόπος για να υλοποιήσεις το filesystem σου στο Linux
είναι να φτιάξεις έναν kernel driver πάνω από το VFS υποσύστημα του Linux Kernel.

Ενδεικτικές πληροφορίες:

http://kernelnewbies.org/KernelHacking

http://tldp.org/LDP/khg/HyperNews/get/fs/vfstour.html

http://www.cse.unsw.edu.au/~neilb/oss/linux-commentary/vfs.html

http://www.atnf.csiro.au/people/rgooch/linux/vfs.txt

http://www.tldp.org/LDP/lkmpg/2.6/html/index.html

http://www.freeos.com/articles/2677/2/13/

και βέβαια το επίσημο documentation κάτω από τον κατάλογο Documentation των kernel sources.

Υπάρχει
όμως και ένας εναλλακτικός τρόπος, με αρκετά μειονεκτήματα αλλά βασικό
πλεονέκτημα την απλότητα: το FUSE. Αν θέλεις για αρχή να
επικεντρώσεις στο ίδιο το filesystem σου χωρίς να μπλέξεις με kernel
interfaces, θα ήταν καλή επιλογή.

harris79] στη συνεχεια να προσθεσω τα utilities (copy,delete,move,rename ....)

Δεν υπάρχει λόγος να φτιάξεις filesystem dependant εργαλεία. Γι' αυτό υπάρχει το VFS. Εργαλείο διαμόρφωσης του filesystem και, ενδεχομένως, debugging φυσικά θα πρέπει να φτιάξεις αλλά φαντάζομαι ότι θα είναι κάτι συγκριτικά εύκολο να το κάνεις κατά τα πρότυπα των mkfs και fsck (συμπεριλαμβάνονται στο util-linux-ng, εδώ), άπαξ και γνωρίζεις τις δομές του filesystem σου.

Που ήσουν ρε nske τόσο καιρό !!
πρώτο post, και μπήκες δυναμικά.
Welcome back
:-)

Αν και λίγο παλιό το ποσταρισμα το δικό μου πααρ'ολο αυτα σε ευχαριστώ. Το όλο θέμα ήταν να δημιουργήσω ένα δικό μου πρότυπο filesystem με την βοηθεια της C . Ήταν για εργασία πουείχχα και χρειαζόμουν λίγο push-arisma. Μόλις βρω λίγο χρόνο θα ξαναασχοληθω λίγο αν και κάπου είχα φτιάξει κώδικα που λειτουργούσε ικανοποιητικά θα έλεγα....που θα πάει θα τον βρω.

Η ΑΕΚ ειναι κυρίως ιδέα και οι ιδέες δεν αποθνήσκουν