"Un Identificador universalmente único (universally unique identifier o UUID) es un identificador estándar usado en el desarrollo de software"
"Un UUID es un número de 16-byte (128-bit). El número teórico de posibles UUID es entonces de unos 3 × 1038. En su forma canónica, un UUID consiste de 32 dígitos hexadecimales, mostrados en cinco grupos separados por guiones, de la forma
8-4-4-4-12 para un total de 36 caracteres (32 dígitos y 4 guiones). Por ejemplo: 550e8400-e29b-41d4-a716-446655440000"
Gracias amada wikipedia, no lo podría haber dicho mejor ;)
¿Cómo funciona el montado de devices en linux con UUID?
linux-7nli:/home/xianur0 # ls -alh /dev/disk/by-uuid/
total 0
drwxr-xr-x 2 root root 100 abr 1 11:07 .
drwxr-xr-x 5 root root 100 abr 1 11:01 ..
lrwxrwxrwx 1 root root 10 abr 1 11:07 471f4811-2b4d-421f-8883-2bd5f60b7877 -> ../../dm-1
lrwxrwxrwx 1 root root 10 abr 1 11:07 58ac1371-1dd9-4996-9be4-366f4758551c -> ../../sda3
lrwxrwxrwx 1 root root 10 abr 1 11:02 8c787ac4-88c4-4b85-9c07-7d88449c37e1 -> ../../sda2
Al hacer un ls a la lista de discos por uuid, notaremos que hacen un enlace simbólico al dispositivo, agregamos una memoria usb cualquiera:
lrwxrwxrwx 1 root root 10 abr 1 13:54 B4FE-5315 -> ../../sdb4
Notaremos que el uuid tiene un formato diferente (esta memoria fue formateada en FAT)
Formateamos desde linux en swap (en mi caso) y notaremos que el uuid cambia... entonces esto nos puede hacer pensar que el uuid se escribe directamente en los encabezados de la memoria usb y que no es algo fijo.
linux-7nli:/home/xianur0 # blkid | grep sdb
/dev/sdb1: LABEL="openSUSE-DV" UUID="B4FE-5315" TYPE="vfat"
/dev/sdb4: UUID="4850bce1-67ae-4c6c-97cf-54c2c5b9cb12" TYPE="swap"
dd:
linux-7nli:/home/xianur0 # dd if=/dev/sdb4 of=/home/xianur0/sdb4 ibs=2040 count=1
1+0 registros leídos
3+1 registros escritos
2040 bytes (2,0 kB) copiados, 0,00251428 s, 811 kB/s
Hex editor:

PD: El UUID está grabado dentro de los primeros 2040 bytes (normalmente).
Subimos los cambios (en esos 2040 bytes) al dispositivo (sobrescribimos):
linux-7nli:/home/xianur0 # dd if=sdb4-edited of=/dev/sdb4 conv=notrunc
3+1 registros leídos
3+1 registros escritos
2040 bytes (2,0 kB) copiados, 0,00582027 s, 350 kB/s
linux-7nli:/home/xianur0 # blkid
/dev/sda2: UUID="8c787ac4-88c4-4b85-9c07-7d88449c37e1" TYPE="reiserfs"
/dev/sda3: UUID="58ac1371-1dd9-4996-9be4-366f4758551c" TYPE="crypto_LUKS"
/dev/mapper/cr_sda3: UUID="471f4811-2b4d-421f-8883-2bd5f60b7877" TYPE="reiserfs"
/dev/sdb1: LABEL="openSUSE-DV" UUID="B4FE-5315" TYPE="vfat"
/dev/sdb4: UUID="58ac1371-1dd9-4996-9be4-366f4758551c" TYPE="swap"
Ahora la parte bonita:
linux-7nli:/home/xianur0 # ls -alh /dev/disk/by-uuid/
total 0
drwxr-xr-x 2 root root 100 abr 1 14:51 .
drwxr-xr-x 5 root root 100 abr 1 14:51 ..
lrwxrwxrwx 1 root root 10 abr 1 11:07 471f4811-2b4d-421f-8883-2bd5f60b7877 -> ../../dm-1
lrwxrwxrwx 1 root root 10 abr 1 14:51 58ac1371-1dd9-4996-9be4-366f4758551c -> ../../sda3
lrwxrwxrwx 1 root root 10 abr 1 11:02 8c787ac4-88c4-4b85-9c07-7d88449c37e1 -> ../../sda2
linux-7nli:/home/xianur0 # ls -alh /dev/disk/by-uuid/
total 0
drwxr-xr-x 2 root root 120 abr 1 14:51 .
drwxr-xr-x 6 root root 120 abr 1 14:51 ..
lrwxrwxrwx 1 root root 10 abr 1 11:07 471f4811-2b4d-421f-8883-2bd5f60b7877 -> ../../dm-1
lrwxrwxrwx 1 root root 10 abr 1 14:51 58ac1371-1dd9-4996-9be4-366f4758551c -> ../../sdb4
lrwxrwxrwx 1 root root 10 abr 1 11:02 8c787ac4-88c4-4b85-9c07-7d88449c37e1 -> ../../sda2
lrwxrwxrwx 1 root root 10 abr 1 14:51 B4FE-5315 -> ../../sdb1
Lo que pasó es que se remplazo el enlace simbólico original por el de la usb :P
También podemos hacer este procedimiento con UAT en un solo paso:
linux-7nli:/home/xianur0/arduinohack/UAT # python usb-change.py --device=/dev/sdb4 --search=4850bce167ae4c6c97cf54c2c5b9cb12 --replace=58ac13711dd949969be4366f4758551c
Found in: 1037
Ok
Y tenemos los datos cambiados :P
Happy Hacks
2 comentarios:
What in the name of god you did . . . mi no entender podrias explicar para que cambias el UUID
Xianuro, hace poco me toco realizar un cambio en unos discos tuve que reconstruir la metadata de un lvm.
See pvcreate --uuid 233443-343443-32434343-3434 /dev/sda1
;)
Publicar un comentario en la entrada