NTFS non è supportato per impostazione predefinita su RHEL 8 / CentOS 8. Per rendere il nostro sistema in grado di leggere e scrivere dispositivi a blocchi formattati con questo filesystem proprietario, dobbiamo installare ntfs-3g
software, che di solito è fornito da repository di terze parti come Epel
. Al momento in cui scriviamo, però, non esiste già una versione di questo software sorgente per Rhel8, quindi vedremo come installarlo dal sorgente in pochi semplici passaggi.
In questo tutorial imparerai:
- Come costruire ntfs-3g dal sorgente
- Come installare ntfs-3g
- Come montare un dispositivo a blocchi formattato con ntfs-3g
- Come formattare un dispositivo a blocchi con il filesystem ntfs
- Come controllare l'integrità del filesystem ntfs usando ntfsfix
La manpage di ntfs-3g su Rhel 8
Requisiti e convenzioni software utilizzati
Categoria | Requisiti, convenzioni o versione del software utilizzata |
---|---|
Sistema | RHEL 8 / CentOS 8 |
Software | Il gruppo di pacchetti "Strumenti di sviluppo" |
Altro | Privilegi di root per installare ntfs-3g |
Convenzioni | # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando$ – richiede che i comandi linux dati vengano eseguiti come un normale utente non privilegiato |
Cos'è ntfs-3g?
Il ntfs-3g
il software open source implementa il pieno supporto (lettura e scrittura) per il proprietario ntfs
filesystem creato da Microsoft e utilizzato in tutte le versioni recenti del sistema operativo Windows. La maggior parte delle distribuzioni Linux include il pacchetto ntfs-3g nei propri repository, tuttavia questo non è il caso di Red Hat Enterprise Linux 8.
Su questa distribuzione il pacchetto è solitamente fornito da repository di terze parti come Epel (Extra Packages for Enterprise Linux); al momento in cui scrivo, tuttavia, la versione specifica per Rhel8 di questo sorgente software non è ancora disponibile. Come soluzione alternativa, possiamo compilare e installare ntfs-3g
dalla fonte. Impareremo come fare in questo tutorial.
Installazione delle dipendenze di build
Per poter compilare e installare ntfs-3g, dobbiamo installare alcune dipendenze nel nostro sistema. Tutto ciò di cui abbiamo bisogno è solitamente incluso nel gruppo di pacchetti Strumenti di sviluppo. Per quelli di voi che non hanno familiarità con il concetto di gruppo di pacchetti, si può pensare a un pacchetto grous come a un "meta-pacchetto", che ci consente di installare molti pacchetti correlati usando un solo comando. Per installare il gruppo di pacchetti "Strumenti di sviluppo" possiamo eseguire:
$ sudo dnf groupinstall "Development Tools"
Nel caso in cui abbiamo installato una versione minima di Rhel8, per poter decomprimere il tarball sorgente di ntfs-3g dovremo anche installare tar
che (sorprendentemente) non è incluso di default nell'insieme dei pacchetti di questo tipo di installazione:
$ sudo dnf install tar
Download e compilazione del codice sorgente
Ora che abbiamo installato tutte le dipendenze necessarie, possiamo procedere ulteriormente e scaricare il codice sorgente ntfs-3g. Il tarball di origine è disponibile a questo indirizzo. Possiamo combinare il curl
e tar
comandi per scaricarlo ed estrarlo in un solo passaggio:
$ curl https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2017.3.23.tgz | tar -xvpz
Dopo aver eseguito questo comando, dovremmo trovare che ntfs-3g_ntfsprogs-2017.3.23
è stata creata la cartella:
$ ls ntfs-3g_ntfsprogs-2017.3.23
Il passaggio successivo consiste nell'entrare in questa directory ed eseguire configure
script, che preparerà il codice sorgente per la compilazione vera e propria:
$ cd ntfs-3g_ntfsprogs-2017.3.23 && ./configure --prefix=/usr/local --disable-static
Durante l'esecuzione di configure
script possiamo fornire alcune opzioni che influenzeranno il modo in cui il software è installato. Uno dei più importanti è il prefix
e --exec-prefix
. Il primo viene utilizzato per impostare la posizione in cui i file indipendenti dall'architettura devono essere installati nel filesystem (defalt /usr/local
directory). Quest'ultimo ha la stessa funzione ma per file indipendenti dall'architettura:di default è impostato per assumere lo stesso valore di PREFIX
.
Per impostazione predefinita, tutti i file verranno installati in /usr/local
, nelle directory appropriate:i binari verranno inseriti in /usr/local/bin
, librerie sotto /usr/local/lib
, ecc. Per ottenere un controllo a grana fine, è possibile specificare il percorso di destinazione per ciascun gruppo di file utilizzando opzioni come --libdir
o --bindir
. Per leggere tutte le possibili opzioni che possiamo utilizzare durante l'esecuzione dello script "configure", possiamo pranzarlo con il -h
opzione (abbreviazione di –help).
Nell'esempio sopra avremmo potuto omettere di specificare un prefisso, poiché abbiamo comunque utilizzato il valore predefinito, ma abbiamo utilizzato un'altra opzione, --disable-static
, che serve per disabilitare l'utilizzo delle versioni statiche delle librerie necessarie al programma:in breve, quando static
è abilitato (impostazione predefinita), le librerie da cui dipendono gli eseguibili vengono "fuse" nel programma in fase di compilazione. Questa configurazione può avere i suoi vantaggi, ma produrrà eseguibili più grandi. Quello che vogliamo, invece, è che le stesse librerie siano condivise da tutti i programmi che ne hanno bisogno.
Avvia il comando sopra e attendi fino al termine. Il passaggio successivo consiste nel compilare effettivamente il codice sorgente in esecuzione:
$ make
La compilazione inizierà e molti messaggi verranno visualizzati sullo schermo. Una volta completata l'attività, possiamo procedere e installare i file compilati. Poiché la destinazione specificata con --prefix
, abbiamo bisogno dei privilegi di root per eseguire l'azione:
$ sudo make install
Il comando copierà i file compilati nelle loro directory di destinazione. I binari e i binari di sistema (i binari che richiedono i privilegi di super utente per funzionare correttamente), ad esempio, verranno posizionati rispettivamente in /usr/local/bin
e /usr/local/sbin
:
$ ls /usr/local/bin ntfs-3g.probe ntfscat ntfscluster ntfscmp ntfsfix ntfsinfo ntfsls $ ls /usr/local/sbin mkntfs ntfsclone ntfscp ntfslabel ntfsresize ntfsundelete
Il comando eseguirà anche alcuni passaggi aggiuntivi:alcuni file verranno creati nella directory /bin e collegati simbolicamente a /usr/bin:/bin/ntfs-3g
sarà collegato come /sbin/mount.ntfs-3g
e /bin/lowntfs-3g
a /sbin/mount.lowntfs-3g
. Infine, un collegamento simbolico a /usr/local/sbin/mkntfs
verrà creato come /sbin/mkfs.ntfs
. Alcuni di questi collegamenti sono necessari affinché i relativi programmi possano essere invocati da root senza dover specificare l'intera posizione del loro filesystem, poiché di default solo il /sbin
, /bin
, /usr/sbin
e /usr/bin
le directory sono incluse nel suo PATH
.
Operazioni sul file system
Ora che ntfs-3g è installato, possiamo vedere come usarlo per eseguire operazioni tipiche come montare e controllare un filesystem o formattare un dispositivo a blocchi con esso.
Monta un dispositivo a blocchi formattato con il filesystem ntfs
Supponiamo di avere il /dev/sdb1
dispositivo formattato con il filesystem ntfs e vogliamo montarlo su /mnt/data
. Ecco il comando che dovremmo eseguire:
$ sudo mount /dev/sdb1 -t ntfs-3g /mnt/data
Nota come abbiamo usato il -t
passare per specificare il tipo di filesystem (ntfs-3g). Nel caso in cui desideriamo che il filesystem venga montato automaticamente all'avvio, dobbiamo aggiungere una voce per esso in /etc/fstab
, in questo caso:
/dev/sdb1 /mnt/data ntfs-3g defaults 0 0
Dove /dev/sdb1
è il dispositivo a blocchi che ospita il filesystem, /mnt/data
è il punto di montaggio da usare e ntfs-3g
è il tipo di filesystem. In questo caso abbiamo utilizzato le opzioni di montaggio predefinite, ma puoi, ovviamente, utilizzare quelle che ti servono.
Formatta un dispositivo a blocchi con il filesystem ntfs
Un'altra operazione che potremmo voler eseguire è formattare un dispositivo a blocchi esistente con il filesystem ntfs. Il comando da eseguire per eseguire l'attività è:
$ sudo mkfs.ntfs /dev/sdb1
Dove ancora, /dev/sdb1
è il dispositivo a blocchi da formattare con il filesystem ntfs, che deve essere smontato affinché l'operazione abbia esito positivo.
Verifica l'integrità del filesystem ntfs
Il controllo dell'integrità di un filesystem è un'operazione molto importante che deve essere eseguita anche quando il filesystem non è montato. Anche in questo caso il comando da eseguire è molto semplice (qui bisogna fornire il percorso completo dell'utility in quanto non esiste un link ad essa nel PATH dell'utente root):
$ sudo /usr/local/bin/ntfsfix /dev/sdb1
Altre utilità
Ntfs-3g fornisce anche altre utilità molto utili per eseguire operazioni specifiche su un filesystem ntfs. Tra gli altri:ntfsundelete
che viene utilizzato per recuperare i file rimossi da un filesystem ntfs, ntfsresize
che ci permette di ridimensionare un filesystem ntfs senza perdita di dati e ntfsclone
che viene utilizzato per clonare, creare un'immagine e ripristinare un filesystem ntfs.
Disinstallazione di ntfs-3g
Poiché abbiamo installato ntfs-3g dal codice sorgente, non possiamo utilizzare il gestore dei pacchetti di distribuzione per disinstallarlo. Per rimuovere i file dal nostro sistema dobbiamo prima tornare nella cartella in cui abbiamo compilato l'applicazione, che contiene anche il Makefile
ed esegui:
$ sudo make uninstall
Tutti i file e i collegamenti creati in precedenza verranno rimossi dal filesystem.
Conclusione
Ntfs-3g è un insieme open source di utilità e librerie utilizzate per interagire completamente con il filesystem proprietario ntfs:non è incluso nei repository predefiniti di RHEL 8 / CentOS 8 e di solito è installato da fonti di terze parti come Epel. Poiché nel momento in cui scrivo quest'ultimo non è ancora disponibile, in questo tutorial abbiamo visto come installare ntfs-3g dal codice sorgente in pochi semplici passaggi. Abbiamo anche visto come eseguire le operazioni più comuni su questo filesystem:montaggio, formattazione e verifica della sua integrità.