Soluzione 1:
Un altro comando che potrebbe essere disponibile e che funziona abbastanza bene per questo è 'blkid'. Fa parte del pacchetto e2fsprogs. Esempi del suo utilizzo:
Cerca i dati su /dev/sda1:
[email protected]:~$ sudo blkid /dev/sda1
/dev/sda1: UUID="727cac18-044b-4504-87f1-a5aefa774bda" TYPE="ext3"
Mostra dati UUID per tutte le partizioni:
[email protected]:~$ sudo blkid
/dev/sda1: UUID="727cac18-044b-4504-87f1-a5aefa774bda" TYPE="ext3"
/dev/sdb: UUID="467c4aa9-963d-4467-8cd0-d58caaacaff4" TYPE="ext3"
Mostra i dati UUID per tutte le partizioni in un formato più leggibile:(Nota:nelle versioni più recenti, blkid -L
ha un significato diverso e blkid -o list
dovrebbe essere usato invece)
[email protected]:~$ sudo blkid -L
device fs_type label mount point UUID
-------------------------------------------------------------------------------
/dev/sda1 ext3 / 727cac18-044b-4504-87f1-a5aefa774bda
/dev/sdc ext3 /home 467c4aa9-963d-4467-8cd0-d58caaacaff4
Mostra solo l'UUID per /dev/sda1 e nient'altro:
[email protected]:~$ sudo blkid -s UUID -o value /dev/sda1
727cac18-044b-4504-87f1-a5aefa774bda
Soluzione 2:
Solo per dischi partizionati GPT
Su un disco formattato GPT a ciascuna partizione viene assegnato un GUID, che è una forma di UUID, anche se probabilmente non è quello a cui si riferiva il poster originale. Pertanto questa risposta è probabilmente meno utile per l'interrogante originale. Tuttavia credo che ci sia un'importante distinzione da notare.
Per ottenere il GUID della partizione 1 sul disco formattato GPT /dev/sda, nonché l'etichetta della partizione e così via:
sudo sgdisk -i 1 /dev/sda
o tutti con:
ls -l /dev/disk/by-partuuid
Per eseguire l'avvio con la radice del file system su una determinata partizione, dovresti usare la sintassi dei parametri del kernel linux di:
root=PARTUUID=87654321-4321-4321-abcd-123456789012
In questo caso è possibile specificare solo l'inizio dell'UUID, sufficiente per essere univoco. Questo parametro è più primitivo e può essere compreso dal kernel all'inizio del suo processo di avvio.
C'è una differenza semantica tra questi:
Un disco contiene partizioni, una partizione contiene un file system, un file system contiene directory e file. Per alcune configurazioni e sistemi operativi ci sono più livelli.
L'UUID GUID e l'etichetta associata fanno riferimento a una partizione, ma non al contenuto della partizione. Una nuova partizione sullo stesso disco o una partizione su un nuovo disco avrà un nuovo UUID GUID. La stessa partizione potrebbe contenere un file system un giorno e un altro in un giorno diverso. Esiste solo per i dischi formattati GPT, ma non per i dischi partizionati legacy. Di solito qui non c'è più utilità che specificare root=/dev/sda1
o root=8:1
.
Le altre risposte attuali si riferiscono all'UUID di un file system in qualche partizione contenente. Se il file system viene copiato, nel suo insieme, in un'altra partizione o disco rigido, tale valore rimane lo stesso. Questo UUID è utile per trovare un file system spostato. Quindi questo è probabilmente più pertinente per la maggior parte delle persone. Parametro del kernel Linux root=UUID=87654321-4321-4321-a567-123456789012
si riferisce a questo.
Credo root=LABEL=
e root=UUID=
sono implementati dal primo spazio utente, il codice init che ho visto l'altro giorno sul mio sistema ha tradotto questi parametri in /dev/disk/by-uuid e /dev/disk/by-label (i collegamenti che credo siano creati da udev nello spazio utente sul mio sistema).
[1] http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/init/do_mounts.c#n183
Soluzione 3:
Il modo script-clean per farlo che funziona su qualsiasi tipo di filesystem è:
lsblk -no UUID <device-containing-FS>
Oppure, dato il punto di montaggio (o qualsiasi file al suo interno):
lsblk -no UUID $(df -P <file> | awk 'END{print $1}')
L'output è l'UUID, l'intero UUID e nient'altro che l'UUID.
Soluzione 4:
Il modo più semplice per farlo per ext2/ext3/ext4 è:
/sbin/tune2fs -l /dev/sda1
Soluzione 5:
Il modo consigliato per farlo è fare
sudo vol_id -u /dev/sda2
Per ulteriori informazioni sull'utilizzo degli UUID, consulta questo articolo (dalla guida di Ubuntu, ma dovrebbe funzionare per qualsiasi distribuzione Linux che utilizza gli UUID).
Come notato nei commenti a questa domanda, vol_id potrebbe non essere nel tuo percorso. Su Ubuntu è in /sbin quindi quanto sopra funzionerà. Per fedora sembra aver bisogno di
sudo /lib/udev/vol_id -u /dev/sda2
Se altre distribuzioni hanno vol_id in altri posti, pubblica un commento e lo aggiungerò a questa risposta.