NTFS no es compatible de forma predeterminada en RHEL 8 / CentOS 8. Para que nuestro sistema pueda leer y escribir dispositivos de bloque formateados con este sistema de archivos propietario, debemos instalar ntfs-3g
software, que generalmente es proporcionado por repositorios de terceros como Epel
. Sin embargo, al momento de escribir este artículo, aún no existe una versión de esta fuente de software para Rhel8, por lo tanto, veremos cómo instalarla desde la fuente en unos pocos y sencillos pasos.
Requisitos de software y convenciones de la línea de comandos de Linux Categoría | Requisitos, convenciones o versión de software utilizada |
Sistema | RHEL 8 / CentOS 8 |
Software | El grupo de paquetes "Herramientas de desarrollo" |
Otro | Privilegios de root para instalar ntfs-3g |
Convenciones | # – requiere que los comandos de Linux dados se ejecuten con privilegios de root, ya sea directamente como usuario root o mediante el uso de sudo comando $ – requiere que los comandos de Linux dados se ejecuten como un usuario normal sin privilegios |
¿Qué es ntfs-3g?
El ntfs-3g
El software de código abierto implementa soporte completo (lectura y escritura) para el propietario ntfs
sistema de archivos creado por Microsoft y utilizado en todas las versiones recientes del sistema operativo Windows. La mayoría de las distribuciones de Linux incluyen el paquete ntfs-3g en sus repositorios, sin embargo, este no es el caso de Red Hat Enterprise Linux 8.
En esta distribución, el paquete generalmente lo proporcionan repositorios de terceros como Epel (paquetes adicionales para Enterprise Linux); Sin embargo, en el momento de escribir este artículo, la versión específica de Rhel8 de esta fuente de software aún no está disponible. Como solución alternativa, podemos compilar e instalar ntfs-3g
de la fuente Aprenderemos cómo hacerlo en este tutorial.
Instalar las dependencias de compilación
Para poder compilar e instalar ntfs-3g, necesitamos instalar algunas dependencias en nuestro sistema. Todo lo que necesitamos generalmente se incluye en el grupo de paquetes Herramientas de desarrollo. Para aquellos de ustedes que no están familiarizados con el concepto de grupo de paquetes, pueden pensar en un grupo de paquetes como un "metapaquete", lo que nos permite instalar muchos paquetes relacionados usando solo un comando. Para instalar el grupo de paquetes "Herramientas de desarrollo" podemos ejecutar:
$ sudo dnf groupinstall "Development Tools"
En caso de que hayamos instalado una versión mínima de Rhel8, para poder descomprimir el tarball fuente ntfs-3g también necesitaremos instalar tar
que (sorprendentemente) no está incluido por defecto en el conjunto de paquetes de este tipo de instalación:
$ sudo dnf install tar
Descarga y compilación del código fuente
Ahora que hemos instalado todas las dependencias necesarias, podemos continuar y descargar el código fuente ntfs-3g. El tarball de origen está disponible en esta dirección. Podemos combinar el curl
y tar
comandos para descargarlo y extraerlo en un solo paso:
$ curl https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2017.3.23.tgz | tar -xvpz
Después de ejecutar este comando, deberíamos encontrar que ntfs-3g_ntfsprogs-2017.3.23
se creó la carpeta:
$ ls ntfs-3g_ntfsprogs-2017.3.23
El siguiente paso es ingresar a este directorio y ejecutar configure
script, que preparará el código fuente para la compilación real:
$ cd ntfs-3g_ntfsprogs-2017.3.23 && ./configure --prefix=/usr/local --disable-static
Al ejecutar configure
script podemos proporcionar algunas opciones que influirán en la forma en que se instala el software. Uno de los más importantes son prefix
y --exec-prefix
. El primero se usa para configurar dónde deben instalarse los archivos independientes de la arquitectura en el sistema de archivos (por defecto, /usr/local
directorio). Este último tiene la misma función pero para archivos independientes de la arquitectura:por defecto está configurado para asumir el mismo valor de PREFIX
.
De forma predeterminada, todos los archivos se instalarán en /usr/local
, en los directorios correspondientes:los archivos binarios se colocarán en /usr/local/bin
, bibliotecas bajo /usr/local/lib
, etc. Para lograr un control detallado, es posible especificar la ruta de destino para cada grupo de archivos usando opciones como --libdir
o --bindir
. Para leer todos los cambios posibles que podemos usar al ejecutar el script "configure", podemos iniciarlo con -h
opción (abreviatura de –ayuda).
En el ejemplo anterior, podríamos haber omitido especificar un prefijo, ya que usamos el valor predeterminado de todos modos, pero usamos otra opción, --disable-static
, que es necesario para deshabilitar el uso de las versiones estáticas de las bibliotecas que necesita el programa:en resumen, cuando static
está habilitado (el valor predeterminado), las bibliotecas de las que dependen los ejecutables, se "fusionan" en el programa en el momento de la compilación. Esta configuración puede tener sus ventajas, pero producirá ejecutables más grandes. Lo que queremos, en cambio, es que las mismas bibliotecas sean compartidas por todos los programas que las necesitan.
Inicie el comando anterior y espere hasta que finalice. El siguiente paso es compilar el código fuente ejecutando:
$ make
Comenzará la compilación y se mostrarán muchos mensajes en la pantalla. Una vez completada la tarea, podemos continuar e instalar los archivos compilados. Desde el destino especificado con --prefix
, necesitamos privilegios de root para realizar la acción:
$ sudo make install
El comando copiará los archivos compilados en sus directorios de destino. Los binarios y los binarios del sistema (los binarios que necesitan privilegios de superusuario para funcionar correctamente), por ejemplo, se colocarán respectivamente en /usr/local/bin
y /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
El comando también realizará algunos pasos adicionales:algunos archivos se crearán en el directorio /bin y se vincularán a /usr/bin:/bin/ntfs-3g
se vinculará como /sbin/mount.ntfs-3g
y /bin/lowntfs-3g
a /sbin/mount.lowntfs-3g
. Finalmente, un enlace simbólico a /usr/local/sbin/mkntfs
se creará como /sbin/mkfs.ntfs
. Algunos de estos enlaces son necesarios para que los programas relativos sean invocados por root sin tener que especificar la ubicación completa del sistema de archivos, ya que, por defecto, solo el /sbin
, /bin
, /usr/sbin
y /usr/bin
los directorios están incluidos en su PATH
.
Operaciones del sistema de archivos
Ahora que ntfs-3g está instalado, podemos ver cómo usarlo para realizar operaciones típicas como montar y verificar un sistema de archivos o formatear un dispositivo de bloque con él.
Montar un dispositivo de bloque formateado con el sistema de archivos ntfs
Supongamos que tenemos el /dev/sdb1
dispositivo formateado con el sistema de archivos ntfs, y queremos montarlo en /mnt/data
. Aquí está el comando que debemos ejecutar:
$ sudo mount /dev/sdb1 -t ntfs-3g /mnt/data
Observe cómo usamos el -t
cambiar para especificar el tipo de sistema de archivos (ntfs-3g). En caso de que queramos que el sistema de archivos se monte automáticamente al arrancar, debemos agregar una entrada para ello en /etc/fstab
, en este caso:
/dev/sdb1 /mnt/data ntfs-3g defaults 0 0
Donde /dev/sdb1
es el dispositivo de bloque que aloja el sistema de archivos, /mnt/data
es el punto de montaje a usar y ntfs-3g
es el tipo de sistema de archivos. En este caso, usamos las opciones de montaje predeterminadas, pero, por supuesto, puede usar las que necesite.
Formatear un dispositivo de bloque con el sistema de archivos ntfs
Otra operación que podemos querer realizar es formatear un dispositivo de bloque existente con el sistema de archivos ntfs. El comando a ejecutar para realizar la tarea es:
$ sudo mkfs.ntfs /dev/sdb1
Donde de nuevo, /dev/sdb1
es el dispositivo de bloque que se va a formatear con el sistema de archivos ntfs, que se debe desmontar para que la operación tenga éxito.
Comprobar la integridad del sistema de archivos ntfs
Verificar la integridad de un sistema de archivos es una operación muy importante que también debe realizarse cuando el sistema de archivos no está montado. Incluso en este caso, el comando para ejecutar es muy simple (aquí debemos proporcionar la ruta completa de la utilidad ya que no existe un enlace en la RUTA del usuario root):
$ sudo /usr/local/bin/ntfsfix /dev/sdb1
Otras utilidades
Ntfs-3g proporciona también otras utilidades muy útiles para realizar operaciones específicas en un sistema de archivos ntfs. Entre los otros:ntfsundelete
que se utiliza para recuperar archivos eliminados de un sistema de archivos ntfs, ntfsresize
que nos permite cambiar el tamaño de un sistema de archivos ntfs sin pérdida de datos, y ntfsclone
que se utiliza para clonar, generar imágenes y restaurar un sistema de archivos ntfs.
Desinstalar ntfs-3g
Dado que instalamos ntfs-3g desde el código fuente, no podemos usar el administrador de paquetes de distribución para desinstalarlo. Para eliminar los archivos de nuestro sistema primero debemos volver a la carpeta donde compilamos la aplicación, que también contiene el Makefile
y ejecuta:
$ sudo make uninstall
Todos los archivos y enlaces creados anteriormente se eliminarán del sistema de archivos.
Conclusión
Ntfs-3g es un conjunto de utilidades y bibliotecas de código abierto que se utiliza para interactuar completamente con el sistema de archivos ntfs patentado:no está incluido en los repositorios predeterminados de RHEL 8 / CentOS 8 y, por lo general, se instala desde fuentes de terceros como Epel. Dado que en el momento de escribir este último aún no está disponible, en este tutorial vimos cómo instalar ntfs-3g desde el código fuente en unos pocos y sencillos pasos. También vimos cómo realizar las operaciones más comunes en este sistema de archivos:montar, formatear y verificar su integridad.