Estoy ejecutando Ubuntu, y quiero averiguar el UUID
de un sistema de archivos en particular (no partición). Sé que puedo usar e2label /dev/sda1
para encontrar la etiqueta del sistema de archivos, pero no parece haber una forma similar de encontrarlo UUID
.
linux
command-line-interface
partition
Brad Gilbert
fuente
fuente
Respuestas:
Otro comando que podría estar disponible y que también funciona bastante bien para esto es 'blkid'. Es parte del paquete e2fsprogs. Ejemplos de su uso:
Busque datos en / dev / sda1:
Mostrar datos UUID para todas las particiones:
Muestra los datos de UUID para todas las particiones en un formato más fácil de leer: (Nota: en versiones más recientes,
blkid -L
tiene un significado diferente yblkid -o list
debería usarse en su lugar)Mostrar solo el UUID para / dev / sda1 y nada más:
fuente
blkid
, me consiguió exactamente lo que quería, pero no exactamente lo que pedí. (Lo estoy aceptando de todos modos, porque estoy seguro de que lo usaré a menudo)blkid -L
es ahorablkid -o list
; la-L
opción se ha cambiado para-L label
buscar un dispositivo que usa la etiqueta especificada.blkid
. Gracias por mencionarlo.blkid
; Siempre lo acabo de hacerls -l /dev/disk/by-uuid
. En Gentoo,blkid
está ensys-apps/util-linux
Solo para discos particionados GPT
En un disco con formato GPT, a cada partición se le asigna un GUID, que es una forma de UUID, aunque probablemente no a lo que se refería el póster original. Por lo tanto, esta respuesta probablemente sea menos útil para el interrogador original. Sin embargo, creo que hay una distinción importante a destacar.
Para obtener el GUID de la partición 1 en el disco con formato GPT / dev / sda, así como su etiqueta de partición, etc.:
o todos con:
Para arrancar con la raíz del sistema de archivos en una determinada partición, usaría la sintaxis del parámetro del kernel de Linux de:
En este caso, puede especificar solo el comienzo del UUID, lo suficiente como para ser único. Este parámetro es más primitivo y puede ser entendido por el núcleo anteriormente en su proceso de arranque.
Hay una diferencia en la semántica entre estos:
Un disco contiene particiones, una partición contiene un sistema de archivos, un sistema de archivos contiene directorios y archivos. Para algunas configuraciones y sistemas operativos hay más capas.
El UUID GUID y la etiqueta asociada se refieren a una partición, pero no al contenido de la partición. Una nueva partición en el mismo disco o una partición en un nuevo disco tendrá un nuevo GUID UUID. La misma partición podría contener un sistema de archivos un día y otro en un día diferente. Solo existe para discos formateados GPT, pero no para discos particionados heredados. Por lo general, no hay más utilidad aquí que especificar
root=/dev/sda1
oroot=8:1
.Las otras respuestas actuales se refieren al UUID de un sistema de archivos en algunas particiones que contienen. Si el sistema de archivos se copia, como un todo, a otra partición o disco duro, ese valor permanece igual. Este UUID es útil para encontrar un sistema de archivos movido. Por lo tanto, esto es probablemente más pertinente para la mayoría de las personas. El parámetro del kernel de Linux se
root=UUID=87654321-4321-4321-a567-123456789012
refiere a esto.Creo
root=LABEL=
y estoyroot=UUID=
implementado por el espacio de usuario temprano, el código de inicio que vi el otro día en mi sistema tradujo estos parámetros a / dev / disk / by-uuid y / dev / disk / by-label (creo que los enlaces son creados por udev en espacio de usuario en mi sistema).[1] http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/init/do_mounts.c#n183
fuente
-i1
o-i 1
, a diferencia de-i:1
, con sgdisk 1.0.1.La forma limpia de script para hacer esto que funciona en cualquier tipo de sistema de archivos es:
O, dado el punto de montaje (o cualquier archivo dentro de él):
La salida es el UUID, el UUID completo y nada más que el UUID.
fuente
blkid
en la respuesta de @ christopher-cashell, porque no necesitas convertirte en root. Para un punto de montaje o un archivo mejor hacer:lsblk -no UUID $(findmnt -n -o SOURCE --target <file>)
.findmnt -n -o SOURCE --target ~
da:/dev/mapper/vg_svelte-home[/@home]
lsblk -no UUID $(findmnt -n -o SOURCE --target <file> | cut -d[ -f1)
debe deshacerse del subvolumen cuando está presente.La forma más fácil de hacer esto para ext2 / ext3 / ext4 es:
fuente
Couldn't find valid filesystem superblock.
La forma recomendada de hacer esto es hacer
Para obtener más información sobre el uso de UUID, consulte este artículo (de la ayuda de ubuntu, pero debería funcionar para cualquier distribución de Linux que use UUID).
Como se señaló en los comentarios a esta pregunta, es posible que vol_id no esté en su camino. En ubuntu está en / sbin, por lo que lo anterior funcionará. Para fedora parece necesitar
Si otras distribuciones tienen vol_id en otros lugares, publique un comentario y lo agregaré a esta respuesta.
fuente
/sbin/vol_id
a/lib/udev/vol_id
Esto parece funcionar para mí:
fuente
Suponiendo que desea el UUID para sda1, puede intentar algo como esto:
Ajuste sda1 en consecuencia. Para obtener los UUID para todas las particiones, suelte los greps y cortes, a la:
Salida de muestra para sda1 en mi escritorio:
Editar: Tenga en cuenta que esta solución, aunque es más ingeniosa que la udev-> vol_id, no requiere privilegios de root, funcionará en cualquier núcleo posterior a 2005 o más, y se basa en herramientas presentes en cualquier distribución de Linux que están por defecto en La ruta para cualquier usuario.
fuente
También puede usar esto para imprimir todos los UUID:
o este comando posiblemente más simple, reemplazando
sda1
con el dispositivo que desea buscar:Una adaptación del segundo método para imprimir todos los UUID:
fuente
Lo anterior parece funcionar en la mayoría de los sistemas Linux (todo lo que he encontrado) durante muchos años. Puede tener defectos, no lo sé. Preferiría obtener el número de serie pero ... este es el UUID del sistema de archivos raíz.
Si alguien tiene una forma de obtener el número de serie sin necesidad de ser root (como el mío) y no instalar paquetes "inusuales" que son diferentes en diferentes versiones de Unix, lo agradecería, siempre puede aprender algo. Y sé que estoy mezclando cosas: es el UUID del sistema de archivos raíz, no un disco.
El propósito, por cierto, es generar un número único por máquina que no pueda modificarse (como un número de serie del disco y como las direcciones MAC que fueron hace mucho tiempo).
Se utiliza para codificar software en una sola máquina. La dirección MAC estuvo bien hasta que les permitió ser virtuales ... algunos clientes de mala calidad simplemente establecieron su dirección MAC en una constante (en diferentes redes, por supuesto) y evitaron pagarme.
En AIX hay una sola llamada para obtener un número que identifica la máquina. No importa si los cambios de hardware o las actualizaciones de software ocurren, así que no tengo idea de cómo lo hacen ... Si la placa base cambia, entonces el número cambia, así que creo que lo ocultan allí. Y eso es más que raro.
fuente
Puede usar lo siguiente para obtener el UUID para una unidad en particular,
o puede usar esto para enumerar todos los UUID para los medios adjuntos,
fuente