Nicola D'Agostino (.net) - Articoli, traduzioni, grafica, web

Hacking through OS X III – Disco mix

HFS, UFS, SMB e gli altri: esploriamo il cosmo variegato dei numerosi filesystem supportati da OSX, con un occhio al
passato del Macintosh ed uno al mondo sempre più vicino di Linux e Windows.

di Nicola D’Agostino

Secondo le note tecniche di Apple il filesystem di Darwin/OSX è progettato su un’architettura
"Virtual File System" (VFS) modulare
che rende possibile aggiungere nuovi filesystem e usare e estendere le funzioni di quelli supportati, tra cui HFS, HFS+ (noti anche come "MacOS" e "MacOS esteso"), ISO9660 (quello dei CD-ROM non-Apple) ed altri ancora.
L’implementazione di Apple è diversa da quella in altri sistemi BSD: i vari filesystem sono estensioni del kernel, cartelle speciali con estensione ".kext" simili come concetto ai moduli del kernel in Linux.

file .kext

Queste "estensioni" risiedono in "/System/Library/Extensions/" e molte hanno il nome che termina per
"fs.kext".
Ad esempio

/System/Library//Extensions/msdosfs.kext

è il modulo che abilita il file system FAT dell’Ms-Dos, mentre

/System/Library//Extensions/udf.kext

è quello relativo all’UDF, filesystem usato dai masterizzatori su CD riscrivibili.

file .kext

Un altro modo per controllare i vari filesystem supportati è quello di dare una sbirciata a quanto supportato dal
comando "mount" ad esempio da Terminale, prima spostandosi nella cartella nascosta "/sbin" scrivendo

cd /sbin

e poi facendo un elenco di quanto disponibile con

ls | grep mount_

Vediamo però dal punto di vista pratico i principali filesystem, le loro proprietà e modalità d’uso.

"Hierarchical File System +" contro tutti

I primi due con cui l’utente di OS X fa subito conoscenza sono quelli proposti per l’inizializzazione del disco (la formattazione) al momento dell’installazione del sistema: HFS+ e UFS.

Il primo, detto anche Hierarchical File System +, o "Mac OS Extended" ("Mac OS Esteso"), è già noto da diversi anni agli utenti dei precedenti sistemi, per la precisione dalla versione 8.1 del Mac OS dove ha affiancato il più vecchio HFS (senza il "+"), in un’operazione che ricorda molto quella di FAT32 e FAT16 in ambiente Windows.
Il secondo è lo Unix File System, una novità assoluta per le macchine Apple, ma uno standard del mondo Unix che presenta alcune particolarità tra cui quella di essere case sensitive e cioè di fare distinzione tra file che differiscono tra di loro semplicemente nell’uso di maiuscole o minuscole nel nome (ad es. due file chiamati "prova" e "Prova").

Sebbene sia possibile installare OS X su una partizione UFS, questa cosa è sconsigliata anche dalla Apple stessa: la diversità di questo file system può risultare un problema nel salvaguardare l’integrità e la coesione del data e del resource fork (le due parti di cui molti programmi e risorse Mac sono composti) proprie invece dell’HFS+, nato e cresciuto per Macintosh, la macchina può risultare più lenta in fase di creazione dei file, ma anche nella ricerca dei file in quanto l’UFS non permette di guardare nel "directory btree" di OS X. Infine il nome dell’hard disk è tassativamente "/", in alcuni casi UFS non è adatto a fare il boot di OS X (e viene creata una apposita mini partizione di tipo HFS+) e, infine, in passato ci sono stati anche problemi con l’ambiente "Classic" (la funzione di emulazione dei Mac OS precedenti), poi risolti da Apple.

Cosa si può fare con l’UFS

L’UFS rappresenta un mix di vantaggi e svantaggi e, tranne che in rari casi è perciò consigliato relegarlo solo a usi come partizioni o immagini disco, perfettamente valide ed utili, ad esempio, per lo sviluppo software o scambio dati con altri sistemi UNIX.

Per chi vuole per ora solo fare qualche esperimento, invece di avventurarsi in formattazioni o partizioni, è possibile creare una semplice e pratica immagine disco UFS, o con il programma Disk Copy o via Terminale con il comando "hdiutil".
In questo secondo caso è addirittura possibile scegliere una modalità detta "sparse" con cui la dimensione del disco virtuale non sarà fissa ma crescerà secondo necessità, occupando quando vuota poco spazio.
Ad esempio digitando

hdiutil create -size 1g -type SPARSE -fs UFS ImmagineUFS

verrà creata un’immagine disco "ImmagineUFS" che contiene un volume logico grande fino a un giga ma che in realtà, finché è vuota, ne occupa solo una frazione, 90 Mb.

Per tutti gli altri usi la scelta più saggia è l’HFS+ che offre stabilità e compatibilità con il passato e che con Mac OS X 10.2.2 ha di recente anche aggiunto una interessante funzione di "journaling", simile a quelle dei filesystem EFS e VXFS di altri UNIX, a cui è dedicata la quarta parte di questa serie di articoli.

Gli altri filesystem

Per quanto riguarda il "vecchio" HFS rimane il supporto sia in lettura che scrittura (dischi fissi, CD-Rom, Zip, etc.) ma non è possibile usarlo per installarci su OS X in quanto difetta della struttura per gestire nuove proprietà del sistema operativo, come i permessi.
Tra gli altri formati abbiamo già citato UDF e ISO9660: allo stesso modo è possibile leggere dischi Windows formattati come FAT16 e FAT32 (Windows 95, 98 e ME), anche se non quelli NTFS, usati da NT e ultimamente anche da Windows 2000 e XP.

E’ possibile inoltre accedere ad altre periferiche in rete grazie alla presenza in OS X del protocollo SMB (Server Message Block): SMB è l’implementazione fatta da Microsoft del CIFS (Common Internet File System) e il risultato pratico è quello di raggiungere i computer Windows (e Linux) nelle reti NetBIOS selezionando la voce "Connect To Server" (command + K) dal menù "Go" nel Finder e digitando

smb://dominio/nome computer/nome cartella condivisa

A partire da Mac OS X 10.2 è inoltre possibile "sfogliare" la rete senza dover usare sintassi complicate. Chi usa versioni precedenti del sistema operativo può scaricare SMB Browse utility che permette di fare lo stesso.

Non solo Windows: EXT2FS

E’ disponibile in rete Mac OS X Ext2 Filesystem un prezioso aiuto a chi cerca di far comunicare tra di loro Linux e Mac.
Si tratta di un’implementazione del filesystem di tipo "EXT2", in genere standard su molte distribuzioni Linux e il suo uso, seppure sia un progetto indipendente e in fase embrionale è perfettamente funzionale e trasparente. L’installazione del programma aggiunge un’estensione al kernel che si integra con gli altri filesystem. Non solo è possibile leggere e scrivere dischi Linux ma funzionano anche le utility da linea di comando come "fsck".

… e i floppy?

La Apple è stata una delle prime ditte ad eliminare anni fa (già con il primo iMac) la presenza del drive di floppy disk e di recente si sono visti anche altri produttori di compatibili muoversi nella stessa direzione.
Ciononostante sono molte le persone che usano ancora oggi questi supporti ed esiste un discreto mercato per i
lettori esterni USB.

USB RAID

Anche se le performance non sono propriamente esaltanti i drive USB sono attualmente supportati su OS X, al punto tale che c’è chi ha realizzato un array RAID mettendo "in catena" queste periferiche e, naturalmente, documentando il precedimento in rete.

Meno fortunati sono coloro che hanno drive interni. Per questi esiste anche qui un progetto indipendente, chiamato SWIM e derivato da una distribuzione per Mac di Linux, che si prefigge di far funzionare il controller dei Macintosh G3 desktop e minitower (quelli di colore beige) e dei Powerbook G3 Wallstreet e Mainstreet (quelli neri, senza USB).
Per scaricare SWIM, che è in fase di prototipo e perciò può anche non funzionare (o funzionare con una lentezza lancinante, come nel nostro caso), l’url è
ftp.mklinux.org/pub/darwin/floppy/swim3-0.96.pkg.tar.gz.

Approfondimenti:

Darwin: Mac OS X’s Core OS
developer.apple.com/pdf/mactech_darwin.pdf

Filesystems HOWTO: Macintosh Hierarchical Filesystem – HFS
www.linux.org/docs/ldp/howto/Filesystems-HOWTO-7.html

Mac OS X 10.0: Choosing UFS or Mac OS Extended (HFS Plus) Formatting
docs.info.apple.com/article2.html?artnum=25316

Mac OS X 10.1 or later: How to Connect to Windows File Sharing (SMB)
docs.info.apple.com/article.html?artnum=106471

Una versione di questo articolo è stata pubblicata su "Hacker Journal" n. 26 del 22/05/2003