2012-04-15 23 views
5

Questo potrebbe sembrare un noobish, specialmente perché sono (come si può immaginare) provare a scrivere un sistema operativo. Al momento sono bloccato nel tentativo di creare un file system.Scrittura di un file system EXT4 in C?

Quello che voglio è un file system simile a Linux Ubuntu che è EXT4 (almeno il mio è). Voglio provare e anche scriverlo in C.

Qualche idea su come posso fare questo? E/o qualsiasi tutorial che potresti aver trovato che potrebbe aiutarmi (ho provato a cercare senza fortuna): L

Grazie in anticipo!

Jamie.

+1

Si consiglia di prendere in considerazione il tentativo di implementare e il vecchio tipo di file system. ext4 offre molte garanzie di durata che probabilmente non è necessario iniziare. Prova a guardare ext2 che ha le stesse idee di base. – Michael

+0

@ Michael - Esiste una specie di codice sorgente per generare/implementare un file ext2 fs?Se sì, dove posso trovarlo? –

+1

@JamieEdwards: il codice sorgente per 'mkfs.ext2' è pubblicamente disponibile, così come il codice sorgente del kernel di Linux. –

risposta

0

Provare a considerare un'implementazione esistente, come quella in Linux.

+1

Questo link non si sta caricando. Ecco una potenziale sostituzione: https://www.kernel.org/doc/Documentation/filesystems/ext4.txt –

+1

Il sito è andato giù qualche tempo fa, grazie per aver notato! –

+0

Nessun problema: sito di gruppo e tutto il resto. Saluti per la modifica della risposta. –

4

Le persone veramente intelligenti e con esperienza che hanno studiato questo problema hanno creato bug che hanno mangiato i dati degli utenti. La differenza tra un bug nel livello di computazione (ad esempio un arresto anomalo del kernel) e un bug nel livello di archiviazione è che i dati degli utenti che mangiano silenziosamente sono molto male - molto peggio che dare risposte errate nei fogli di calcolo (Excel è bacato ma popolare) o intermittently sigfaulting preservando i dati su disco (questo è facilmente mitigato dal frequente salvataggio automatico).

Inizia a studiare progetti più semplici, come i filesystem minix dal vecchio libro dei sistemi operativi [1] (lo stesso con cui Linus Torvalds aveva iniziato, venti anni fa).

Come altri hanno detto, ext2 senza journaling, estensioni o ACL è un punto di partenza migliore di ext4. Il codice sorgente è nel kernel di Linux e nel pacchetto di strumenti dello spazio utente e2fsprogs [2]. Il formato è ben documentato.

Per quanto riguarda i tutorial, considerare chi li fa e perché spendono gli sforzi per questo compito. I tutorial sono generalmente realizzati dalle parti interessate nelle piattaforme per consentire a nuove persone di svilupparsi utilizzando quella piattaforma, utilizzare l'effetto di rete per far crescere la piattaforma e trarre profitto da attori già affermati in un ecosistema più ampio.

Vedete un modello di business in crescita il numero di persone che implementano i loro file system buggy [3] incompatibili? Solo se vendi titoli di ingegneria del software. Quindi Microsoft scrive solo tutorial su come utilizzare NTFS, non su come implementare . Lo stesso per Sun e ZFS, Red Hat e Google con EXT2/3/4, SGI con XFS, IBM con JFS, Oracle con BTRFS, ecc.

Se vuoi istruzione invece di formazione, devi leggere libri e studiare codice di smart peoples che usano nella produzione, non cercare tutorial.

  1. http://en.wikipedia.org/wiki/Operating_Systems:_Design_and_Implementation
  2. http://e2fsprogs.sourceforge.net/
  3. Quanto uso, in quanti modello diverso uso con esso vedere? Considera bug scoperti nelle FS di produzione dopo anni di utilizzo su milioni di computer. È improbabile che il tuo codice sia meno buggato, anche se sei intelligente come Matthew Dillon.
+1

Che ci crediate o no, a volte le persone * fanno * scrivono tutorial * solo perché vogliono aiutare gli altri * che sono nelle stesse scarpe che già erano ... ad es. vedi [qui] (http://www.osdever.net/tutorials/view/brans-kernel-development-tutorial) – Mehrdad

+1

Sì, e le persone come me rispondono alle domande su SO solo perché a loro piace aiutare gli altri. Ma quanto sforzo puoi aspettarti che qualcuno spenda per aiutare gli estranei? A volte vedo domande che possono essere riassunte come "insegnami a costruire facebook/android/etc". senza che l'OP avesse fatto ricerche minime sulla quantità di lavoro richiesta. Leggere su filesystem su wikipedia non è chiedere troppo. –

+0

Sì, vero ..... – Mehrdad