Я использую Ubuntu и хочу узнать, UUID
какая именно файловая система (не раздел). Я знаю, что могу использовать, e2label /dev/sda1
чтобы узнать метку файловой системы, но, похоже, нет похожего способа найти UUID
.
linux
command-line-interface
partition
Брэд Гилберт
источник
источник
Ответы:
Еще одна команда, которая может быть доступна, но для этого также достаточно хорошо работает, это blkid. Это часть пакета e2fsprogs. Примеры его использования:
Посмотрите данные на / dev / sda1:
Показать данные UUID для всех разделов:
Показать данные UUID для всех разделов в удобном для чтения формате: (Примечание: в более новых выпусках
blkid -L
имеет другое значение иblkid -o list
должен использоваться вместо)Покажите только UUID для / dev / sda1 и ничего больше:
источник
blkid
, получил именно то, что я хотел, но не совсем то, что я просил. (Я все равно принимаю это, потому что я уверен, что буду использовать это часто)blkid -L
теперь используется эквивалентная команда дляblkid -o list
;-L
вариант был изменен ,-L label
чтобы посмотреть устройство , которое использует указанную метку.blkid
. Спасибо за упоминание этого.blkid
; Я всегда только что сделалls -l /dev/disk/by-uuid
. На Gentoo,blkid
находится вsys-apps/util-linux
Только для разделенных GPT дисков
На диске, отформатированном в GPT, каждому разделу присваивается GUID, который является формой UUID, хотя, вероятно, это не то, на что ссылался оригинальный автор. Поэтому этот ответ, вероятно, менее полезен для исходного спрашивающего. Тем не менее, я считаю, что следует отметить важное различие.
Чтобы получить GUID раздела 1 на отформатированном в GPT диске / dev / sda, а также метку его раздела и т. Д .:
или все с:
Для загрузки с корнем файловой системы, находящейся в определенном разделе, вы должны использовать синтаксис параметра ядра linux:
В этом случае вы можете указать только начало UUID - достаточно, чтобы быть уникальным. Этот параметр более примитивен и может быть понят ядром ранее в процессе загрузки.
Существует разница в семантике:
Диск содержит разделы, раздел содержит файловую систему, файловая система содержит каталоги и файлы. Для некоторых настроек и операционных систем существует несколько уровней.
GUID UUID и соответствующая метка относятся к разделу, но не к содержимому раздела. Новый раздел на том же диске или раздел на новом диске будет иметь новый GUID UUID. Один и тот же раздел может содержать одну файловую систему один день, а другой - другой. Он существует только для дисков в формате GPT, но не для устаревших разделенных дисков. Обычно здесь не больше полезности, чем указание
root=/dev/sda1
илиroot=8:1
.Другие текущие ответы относятся к UUID файловой системы в некотором содержащем разделе. Если файловая система в целом копируется в другой раздел или на жесткий диск, это значение остается прежним. Этот UUID полезен при поиске перемещенной файловой системы. Поэтому это, вероятно, более уместно для большинства людей. Параметр ядра Linux
root=UUID=87654321-4321-4321-a567-123456789012
относится к этому.Я полагаю,
root=LABEL=
иroot=UUID=
реализован на ранних этапах пользовательского пространства, код инициализации, который я видел на днях в моей системе, преобразовал эти параметры в / dev / disk / by-uuid и / dev / disk / by-label (ссылки, которые, я считаю, созданы udev в пространство пользователя в моей системе).[1] http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/init/do_mounts.c#n183
источник
-i1
или-i 1
, в отличие от-i:1
, с sgdisk 1.0.1.Сценарий-чистый способ сделать это, который работает на любой тип файловой системы:
Или, учитывая точку монтирования (или любой файл внутри нее):
Выходными данными является UUID, весь UUID и ничего кроме UUID.
источник
blkid
в ответе @ christopher-cashell, потому что вам не нужно становиться пользователем root. Для точки монтирования или файла лучше сделать:lsblk -no UUID $(findmnt -n -o SOURCE --target <file>)
.findmnt -n -o SOURCE --target ~
дает:/dev/mapper/vg_svelte-home[/@home]
lsblk -no UUID $(findmnt -n -o SOURCE --target <file> | cut -d[ -f1)
должен избавиться от подобъема при его наличии.Самый простой способ сделать это для ext2 / ext3 / ext4:
источник
Couldn't find valid filesystem superblock.
Рекомендуемый способ сделать это состоит в том, чтобы сделать
Дополнительную информацию об использовании UUID см. В этой статье (из справки по Ubuntu, но она должна работать для любого дистрибутива Linux, использующего UUID).
Как отмечено в комментариях к этому вопросу, vol_id может не оказаться на вашем пути. На Ubuntu он находится в / sbin, так что выше будет работать. По-видимому, для Fedora необходимо
Если в других дистрибутивах есть vol_id в других местах, тогда оставьте комментарий, и я добавлю его в этот ответ.
источник
/sbin/vol_id
на/lib/udev/vol_id
Кажется, это работает для меня:
источник
Предполагая, что вы хотите UUID для sda1, вы можете попробовать что-то вроде этого:
Отрегулируйте sda1 соответственно. Чтобы получить UUID для всех разделов, удалите greps и cuts, а ля:
Пример вывода для sda1 на моем рабочем столе:
Изменить: Обратите внимание, что это решение, хотя и более хитрое, чем udev-> vol_id, не требует привилегий root, будет работать на любом ядре после 2005 года и полагаться на инструменты, присутствующие в любом дистрибутиве Linux, которые по умолчанию находятся в путь для любого пользователя.
источник
Вы также можете использовать это для печати всех UUID:
или эту, возможно, более простую команду, заменив
sda1
ее устройством, которое вы хотите найти:адаптация второго метода для печати всех UUID:
источник
Вышеприведенное, кажется, работает на большинстве (все, что я нашел) систем Linux в течение многих лет. У него могут быть недостатки, я не знаю. Я бы предпочел получить серийный номер, но ... это UUID корневой файловой системы.
Если у кого-то есть способ получить серийный номер без необходимости иметь права root (как у меня) и не устанавливать «необычные» пакеты, которые отличаются в разных версиях Unix, я был бы признателен - всегда может чему-то научиться. И я знаю, что я смешиваю вещи - это UUID корневой файловой системы, а не диск.
Кстати, целью является создание уникального номера для каждой машины, который не может быть изменен (например, серийный номер диска и как MAC-адреса, когда-то давно).
Он используется для кодирования программного обеспечения на одной машине. MAC-адрес был в порядке, пока они не позволили им быть виртуальными ... некоторые неряшливые клиенты просто установили свой MAC-адрес на постоянный (в разных сетях, конечно) и избегали платить мне.
В AIX существует один вызов для получения одного номера, идентифицирующего машину. Это не волнует, происходят ли аппаратные изменения или обновления программного обеспечения, поэтому я понятия не имею, как они это делают ... Если меняется материнская плата, то меняется число, поэтому я думаю, что они скрывают это там. И это за редкость.
источник
Вы можете использовать следующее, чтобы получить UUID для конкретного диска,
или вы можете использовать это, чтобы перечислить все UUID для подключенного носителя,
источник