Por segunda o tercera vez me ocurre el problema que al crear una partición
ext4
en un pendrive con mi PC, al intentar utilizarlo en otro PC con un SO
distinto no puedo montar la partición.
El mensaje que aparece en dmesg
es el siguiente:
[12317.658982] sd 113:0:0:0: Attached scsi generic sg2 type 0
[12317.659600] sd 113:0:0:0: [sdc] 7864320 512-byte logical blocks: (4.02 GB/3.75 GiB)
[12317.660054] sd 113:0:0:0: [sdc] Write Protect is off
[12317.660063] sd 113:0:0:0: [sdc] Mode Sense: 43 00 00 00
[12317.660071] sd 113:0:0:0: [sdc] Assuming drive cache: write through
[12317.684195] sd 113:0:0:0: [sdc] Assuming drive cache: write through
[12317.694281] sdc: sdc1
[12317.697375] sd 113:0:0:0: [sdc] Assuming drive cache: write through
[12317.705220] sd 113:0:0:0: [sdc] Attached SCSI removable disk
[12317.815980] EXT4-fs (sdc1): couldn't mount RDWR because of unsupported optional features (400)
Utilizando fsck
para intentar corregir el problema se obtiene:
fsck from util-linux-ng 2.17.2
/dev/sdc1 has unsupported feature(s): 64bit FEATURE_R10
e2fsck: Get a newer version of e2fsck!
Obviamente el problema es una versión vieja del paquete e2fsprogs
, pero
¿como conseguir que el pendrive formateado en mi SO funcione en otro con una
versión más vieja de e2fsprogs
?
Según el manual de mkfs.ext4
(man mkfs.ext4
), los parámetros y features, que
son las que nos dan el problema actual, se toman por defecto del archivo
/etc/mke2fs.conf
. La descripción de las features se puede encontrar en el
manual de ext4
(man ext4
).
El problema en concreto se debe a que a partir de la versión 1.43 se agregaron las features metadata_csum y 64bit. De http://e2fsprogs.sourceforge.net/e2fsprogs-release.html:
E2fsprogs 1.43 (May 17, 2016)
...
Mke2fs will now create file systems with the metadata_csum and 64bit features enabled by default.
Para confirmar que la feature FEATURE_R10
del mensaje de fsck
es
metadata_csum
se puede ver el código fuente del paquete e2fsprogs
.
Para ver el código se utiliza el sitio http://sources.debian.org, que contiene
los fuentes de debian (mi SO):
-
http://sources.debian.net/src/e2fsprogs/1.43.5-1/lib/e2p/feature.c/#L67: aquí se listan las distintas features. La que nos interesa es la entrada correspondiente a
metadata_csum
, ya que es la feature que sospechamos que no está soportada aún:{ E2P_FEATURE_RO_INCOMPAT, EXT4_FEATURE_RO_COMPAT_METADATA_CSUM, "metadata_csum"}
. -
http://sources.debian.net/src/e2fsprogs/1.43.5-1/lib/e2p/feature.c/#L128: la función
e2p_feature2string
es la que se encarga de imprimir las features y allí es donde se genera el stringFEATURE_R10
. Se puede ver que laR
corresponde a los features de tipoE2P_FEATURE_RO_INCOMPAT
. Para confirmar el número de feature se debe calcular:for (fnum = 0; mask >>= 1; fnum++);
-
http://sources.debian.net/src/e2fsprogs/1.43.5-1/lib/ext2fs/ext2_fs.h/#L811: aquí se define la constante
EXT4_FEATURE_RO_COMPAT_METADATA_CSUM
utilizada como valor para la mascara. Dicho valor es0x0400
y haciendo el cálculo anterior confirmamos que el número de feature es el10
.
Para formatear una partición ext4
sin las features anteriores se puede
utilizar (suponiendo que la partición a formatear es /dev/sdb1
):
# mkfs.ext4 -F -L "mylabel" -O ^64bit,^metadata_csum /dev/sdb1
Como alternativa, si ya existe la partición puede utilizarse el comando
tune2fs
para modificar los features de la partición:
# tune2fs -O ^64bit,^metadata_csum /dev/sdb1 # remover features
# tune2fs -l /dev/sdb1 | grep features # listar features
Al utilizar el comando tune2fs
para modificar los features este suele imprimir
en consola si se necesita ejecutar un comando adicional.