Estou executando o Ubuntu e quero descobrir o UUID
sistema de arquivos específico (não a partição). Eu sei que posso usar e2label /dev/sda1
para descobrir o rótulo do sistema de arquivos, mas não parece haver uma maneira semelhante de encontrar o UUID
.
linux
command-line-interface
partition
Brad Gilbert
fonte
fonte
Respostas:
Outro comando que pode estar disponível e também funciona muito bem para isso é 'blkid'. Faz parte do pacote e2fsprogs. Exemplos de seu uso:
Procure dados em / dev / sda1:
Mostrar dados UUID para todas as partições:
Mostrar dados UUID para todas as partições em um formato mais fácil de ler: (Nota: em versões mais recentes,
blkid -L
tem um significado diferente eblkid -o list
deve ser usado)Mostre apenas o UUID para / dev / sda1 e nada mais:
fonte
blkid
, consegui exatamente o que eu queria, mas não exatamente o que eu pedi. (Eu estou aceitando isso de qualquer maneira, porque eu tenho certeza que vai usá-lo muitas vezes)blkid -L
é agorablkid -o list
; a-L
opção foi alterada para-L label
procurar um dispositivo que usa o rótulo especificado.blkid
. Obrigado por mencionar.blkid
; Eu sempre acabeils -l /dev/disk/by-uuid
. No Gentoo,blkid
está dentrosys-apps/util-linux
Somente para discos particionados GPT
Em um disco formatado por GPT, a cada partição é atribuído um GUID, que é uma forma de UUID, embora provavelmente não seja o que o pôster original estava se referindo. Portanto, essa resposta é provavelmente menos útil para o questionador original. No entanto, acredito que há uma distinção importante a ser notada.
Para obter o GUID da partição 1 no disco formatado GPT / dev / sda, assim como o rótulo da partição e assim por diante:
ou todos com:
Para inicializar com a raiz do sistema de arquivos em uma determinada partição, você usaria a sintaxe do parâmetro linux kernel de:
Nesse caso, você pode especificar apenas o início do UUID - o suficiente para ser único. Este parâmetro é mais primitivo e pode ser entendido pelo kernel no início de seu processo de inicialização.
Há uma diferença na semântica entre estes:
Um disco contém partições, uma partição contém um sistema de arquivos, um sistema de arquivos contém diretórios e arquivos. Para algumas configurações e sistemas operacionais, há mais camadas.
O GUID UUID e o rótulo associado referem-se a uma partição, mas não ao conteúdo da partição. Uma nova partição no mesmo disco ou uma partição em um novo disco terá um novo GUID UUID. A mesma partição pode conter um sistema de arquivos em um dia e outro em um dia diferente. Existe apenas para discos formatados em GPT, mas não para discos particionados herdados. Geralmente, não há mais utilidade aqui do que especificar
root=/dev/sda1
ouroot=8:1
.As outras respostas atuais se referem ao UUID de um sistema de arquivos em algumas partições que contêm. Se o sistema de arquivos for copiado, como um todo, para outra partição ou disco rígido, esse valor permanecerá o mesmo. Esse UUID é útil para encontrar um sistema de arquivos movido. Portanto, isso é provavelmente mais pertinente para a maioria das pessoas. O parâmetro do kernel do Linux
root=UUID=87654321-4321-4321-a567-123456789012
se refere a isso.Acredito
root=LABEL=
eroot=UUID=
sou implementado pelo espaço de usuário inicial, o código init que vi outro dia no meu sistema traduziu esses parâmetros para / dev / disk / by-uuid e / dev / disk / by-label (links que acredito serem criados pelo udev no espaço de usuário no meu sistema).[1] http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/init/do_mounts.c#n183
fonte
-i1
ou-i 1
, ao contrário-i:1
, com o sgdisk 1.0.1.A maneira limpa de script de fazer isso que funciona em qualquer tipo de sistema de arquivos é:
Ou, dado o ponto de montagem (ou qualquer arquivo dentro dele):
A saída é o UUID, o UUID inteiro e nada além do UUID.
fonte
blkid
na resposta de @ christopher-cashell, porque você não precisa se tornar root. Para um ponto de montagem ou um arquivo melhor fazer:lsblk -no UUID $(findmnt -n -o SOURCE --target <file>)
.findmnt -n -o SOURCE --target ~
dá:/dev/mapper/vg_svelte-home[/@home]
lsblk -no UUID $(findmnt -n -o SOURCE --target <file> | cut -d[ -f1)
deve se livrar do subvolume quando presente.A maneira mais fácil de fazer isso para ext2 / ext3 / ext4 é:
fonte
Couldn't find valid filesystem superblock.
A maneira recomendada de fazer isso é fazer
Para saber mais sobre o uso de UUIDs, consulte este artigo (da ajuda do ubuntu, mas deve funcionar para qualquer distribuição Linux usando UUIDs).
Conforme observado nos comentários a esta pergunta, vol_id pode não estar no seu caminho. No ubuntu, ele está em / sbin, para que o procedimento acima funcione. Para o fedora, parece precisar
Se outras distribuições tiverem vol_id em outros lugares, publique um comentário e o adicionarei a esta resposta.
fonte
/sbin/vol_id
que/lib/udev/vol_id
Isso parece funcionar para mim:
fonte
Supondo que você queira o UUID para sda1, tente algo como isto:
Ajuste sda1 de acordo. Para obter os UUIDs para todas as partições, solte os greps e recortes, à la:
Exemplo de saída para sda1 na minha área de trabalho:
Edit: Observe que esta solução, embora seja mais artificial que a udev-> vol_id, não requer privilégios de root, funcionará em qualquer kernel pós-2005 ou mais e depende de ferramentas presentes em qualquer distribuição Linux que são, por padrão, o caminho para qualquer usuário.
fonte
Você também pode usar isso para imprimir todos os UUIDs:
ou este comando sem dúvida mais simples, substituindo
sda1
pelo dispositivo que você deseja procurar:uma adaptação do segundo método para imprimir todos os UUIDs:
fonte
O exposto acima parece funcionar na maioria dos sistemas Linux (tudo que eu encontrei) ao longo de muitos anos. Pode ter falhas, não sei. Eu preferiria obter o número de série, mas ... este é o UUID do sistema de arquivos raiz.
Se alguém tiver uma maneira de obter o número de série sem precisar ser root (como o meu é) e não instalar pacotes "incomuns" que são diferentes em diferentes versões do Unix, eu apreciaria - sempre pode aprender algo. E estou ciente de que estou misturando coisas - o UUID do sistema de arquivos raiz, não um disco.
O objetivo, BTW, é gerar um número único por máquina que não pode ser modificado (como um número de série do disco e como endereços MAC, há muito tempo).
É usado para codificação de software em uma única máquina. O endereço MAC estava bom até permitirem que eles fossem virtuais ... alguns clientes desprezíveis simplesmente definiram seu endereço MAC como uma constante (em diferentes redes, é claro) e evitaram me pagar.
No AIX, há uma única chamada para obter um número que identifica a máquina. Ele não se importa se as alterações de hardware ou atualizações de software ocorrem, então eu não tenho idéia de como eles fazem isso ... Se a placa-mãe muda, o número muda, então acho que eles a escondem lá. E isso é mais do que raro.
fonte
Você pode usar o seguinte para obter o UUID para uma unidade específica,
ou você pode usar isso para listar todos os UUIDs da mídia anexada,
fonte