Android, Ext4 & SDCard

Diego Stamigni
Diego Stamigni
Android, Ext4 & SDCard

Salve cari lettori,

ieri mi sono divertito a ricompilare CyanogenMod 7 aggiungendo una particolarità: il supporto ext4 come file system type per la sdcard.

Tutti sappiamo che, normalmente, il tipo di file system scelto per le nostre memorie esterne è FAT16 o FAT32, ma perché ? Bhé, FAT è compatibile praticamente con ogni sistema e, d'altro canto, ogni sistema supporta FAT; ma le cose bisogna chiarirle:

lasciando perdere FAT16 perchè troppo obsoleto, quando formattiamo la nostra SDCard probabilmente scegliamo FAT32, inconsci di alcune limitazioni *gravi* che questa porta: la Microsoft crea questa tipologia di File System pensando di poter abbattere i limiti del FAT16;

Ma in che senso ? Vediamo:

  • FAT32 (FAT = File Allocation Table) dovrebbe permettere all'utente di poter avere 2^32 cluster, che in realtà sono 2^28, cioè partizioni di quasi 2 terabyte. A causa di altre limitazioni, questo esponente scende a 22, 2^22 corrisponde ad appena 1TB, che s'impone come limite per il FAT32: troviamo diversi hard disk, ad esempio, di 1 tera, formattati con FAT32, che è la massima dimensione disponibile per questa tipologia di file system.
  • Altra limitazione è che con il FAT32 un singolo file può avere dimensione massima di 4gb, nel caso in cui quest'ultimo fosse più grande, incorremmo in un bel errore di "file troppo grande per il filesystem di destinazione".
  • FAT è stato creato da Microsoft

Nel corso del tempo sono nati diversi file system, tra cui la famiglia EXT (Extended file system), creato per i sistemi Linux e atto a superare le limitazioni del vecchio Minix.

La storia ci ha fatto conoscere ext2, ext3, e il "nuovo" ext4.

Ext4 non è tanto famoso per la sua velocità, che è comunque altissima, ma per la sua robustezza (è Journaled), stabilità e stretta parentela con ext3 con il quale ha anche retrocompatibilità.

Rispetto al FAT, l'ext4 ci permette di:

  • Avere file unici di dimensione massima 16TiB
  • Avere volumi enormi fino a 1EiB (per far capire quanto è questo valore, 1 EiB equivale a 1milione di Terabyte)
  • Alta velocità in lettura/scrittura

Dopo questa introduzione veniamo al dunque: quello che ho fatto è stato di patchare i sorgenti di CyanogenMod 7 per abilitare il support a ext4 nel mount della SDCARD; tutto ciò avviene in questo modo: nel momento in cui avviate la ROM patchata, se il kernel trova una memoria FAT, la monta, ma se questo non avviene, allora tenta di montare la card in ext4; questo significa che non si perde assolutamente il supporto alle schede FAT, ma si aggiunge supporto EXT4.

La ROM da me compilata la potete trovare, al solito, nel mio repository git, nel progetto Nexus:

Avendo un Nexus One, la ROM è appunto per tutti i N1, ma ciò non toglie che potrei in futuro compilare ROM per quale altro dispositivo, ma piuttosto mi freme scrivere qualche linea guida sul COME compilarsi Cyanogen e cucinarsi la propria ROM.

Apparte tutto, quali sono i vantaggi di ext4?

  1. Boot Performance
  2. .. Run Application performance
  3. .. -> -> -> ->performance
  4. [ ...]
  5. Performance

Gli svantaggi ?

  1. Se siete su un sistema GNU Linux, nessuno, ovvio.
  2. Se siete su sistemi Microsoft dovete installare qualche tool che vi permetta di navigare nella vostra SDCard qualora la impostaste come Archivio di massa;
  3. Stessa situazione del punto 2 per Mac OS X.

Ecco lo status che riporta il comando "mount" eseguito sul cellulare con la mia ROM e la SDCard in ext4:

Note: Nel mio repository, oltre la ROM, trovate anche la recovery.img, assolutamente da flashare per poter avere supporto Ext4 anche se entrate in Recovery Mode, altrimenti la vostra SDCard non verrà riconosciuta in quella modalità (la recovery.img nel mio repo è la ClockWork Mod moddata)

Disclaimer: Io e AndroidWorld.it non ci assumiamo nessuna responsabilità su eventuali danni da voi commessi sui vostri smartphone seguendo questa guida.