Używam Ubuntu i chcę dowiedzieć się UUID
o konkretnym systemie plików (nie partycji). Wiem, że mogę użyć e2label /dev/sda1
etykiety systemu plików, ale wydaje się, że nie ma podobnego sposobu na znalezienie UUID
.
linux
command-line-interface
partition
Brad Gilbert
źródło
źródło
Odpowiedzi:
Kolejnym poleceniem, które może być dostępne i działa całkiem dobrze, jest „blkid”. Jest to część pakietu e2fsprogs. Przykłady jego użycia:
Wyszukaj dane w / dev / sda1:
Pokaż dane UUID dla wszystkich partycji:
Pokaż dane UUID dla wszystkich partycji w łatwiejszym do odczytania formacie: (Uwaga: w nowszych wersjach
blkid -L
ma inne znaczenie iblkid -o list
należy go użyć)Pokaż tylko UUID dla / dev / sda1 i nic więcej:
źródło
blkid
, dostałem dokładnie to, czego chciałem, ale nie do końca to, o co prosiłem. (I tak to akceptuję, bo jestem pewien, że będę go często używać)blkid -L
jest teraz równoważneblkid -o list
;-L
opcja została zmieniona, aby-L label
zajrzeć do urządzenia, które wykorzystuje określonego etykietę.blkid
. Dzięki, że o tym wspomniałeś.blkid
; Zawsze to robiłemls -l /dev/disk/by-uuid
. Na Gentooblkid
jest wsys-apps/util-linux
Tylko dla dysków partycjonowanych GPT
Na dysku sformatowanym GPT każdej partycji przypisany jest identyfikator GUID, który jest formą UUID, choć prawdopodobnie nie do tego, do którego odnosi się oryginalny plakat. Dlatego odpowiedź ta jest prawdopodobnie mniej pomocna dla pierwotnego pytającego. Niemniej jednak uważam, że należy zauważyć istotne rozróżnienie.
Aby uzyskać identyfikator GUID partycji 1 na dysku / dev / sda w formacie GPT, a także etykietę partycji i tak dalej:
lub wszystkie z:
Aby uruchomić system z systemem plików znajdującym się na określonej partycji, należy użyć składni parametru jądra linux:
W takim przypadku możesz podać tylko początek UUID - wystarczy, aby być unikalnym. Ten parametr jest bardziej prymitywny i może być zrozumiany przez jądro wcześniej w procesie uruchamiania.
Istnieje różnica w semantyce między nimi:
Dysk zawiera partycje, partycja zawiera system plików, system plików zawiera katalogi i pliki. W przypadku niektórych konfiguracji i systemów operacyjnych jest więcej warstw.
Identyfikator UUID GUID i powiązana etykieta odnoszą się do partycji, ale nie do jej zawartości. Nowa partycja na tym samym dysku lub partycja na nowym dysku będzie miała nowy identyfikator GUID UUID. Ta sama partycja może pomieścić jeden system plików jednego dnia, a drugi w innym dniu. Istnieje tylko dla dysków sformatowanych GPT, ale nie dla starszych dysków partycjonowanych. Zwykle nie ma tu więcej narzędzi niż określenie
root=/dev/sda1
lubroot=8:1
.Pozostałe aktualne odpowiedzi odnoszą się do UUID systemu plików w niektórych partycjach zawierających. Jeśli system plików zostanie skopiowany jako całość na inną partycję lub dysk twardy, ta wartość pozostanie taka sama. Ten identyfikator UUID jest przydatny do znajdowania przeniesionego systemu plików. Dlatego jest to prawdopodobnie bardziej odpowiednie dla większości ludzi.
root=UUID=87654321-4321-4321-a567-123456789012
Odnosi się do tego parametr jądra Linux .Wierzę
root=LABEL=
iroot=UUID=
są wdrażane przez wczesną przestrzeń użytkownika, kod init, który widziałem innego dnia w moim systemie, przetłumaczył te parametry na / dev / disk / by-uuid i / dev / disk / by-label (linki, które moim zdaniem są tworzone przez udev w przestrzeń użytkownika w moim systemie).[1] http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/init/do_mounts.c#n183
źródło
-i1
lub-i 1
, w przeciwieństwie do-i:1
sgdisk 1.0.1.Sposobem na wyczyszczenie skryptu, który działa na dowolnym systemie plików, jest:
Lub, biorąc pod uwagę punkt montowania (lub dowolny plik w nim):
Dane wyjściowe to UUID, cały UUID i tylko UUID.
źródło
blkid
w odpowiedzi z @ christopher-cashell, ponieważ nie musisz się rootować. Przez punkt montowania lub pliku lepiej zrobić:lsblk -no UUID $(findmnt -n -o SOURCE --target <file>)
.findmnt -n -o SOURCE --target ~
daje:/dev/mapper/vg_svelte-home[/@home]
lsblk -no UUID $(findmnt -n -o SOURCE --target <file> | cut -d[ -f1)
powinien pozbyć się podobjętości, gdy jest obecny.Najłatwiejszym sposobem na to w przypadku ext2 / ext3 / ext4 jest:
źródło
Couldn't find valid filesystem superblock.
Zalecany sposób to zrobić
Aby uzyskać więcej informacji na temat używania UUID, zobacz ten artykuł (z pomocy Ubuntu, ale powinien działać dla każdej dystrybucji Linuksa używającej UUID).
Jak zauważono w komentarzach do tego pytania, vol_id może nie znajdować się na twojej drodze. Na Ubuntu jest w / sbin, więc powyższe będzie działać. W przypadku fedory wydaje się, że potrzebuje
Jeśli inne dystrybucje mają vol_id w innych miejscach, opublikuj komentarz, a ja dodam go do tej odpowiedzi.
źródło
/sbin/vol_id
do/lib/udev/vol_id
Wydaje mi się, że to działa:
źródło
Zakładając, że chcesz mieć UUID dla sda1, możesz spróbować czegoś takiego:
Dostosuj odpowiednio sda1. Aby uzyskać UUID dla wszystkich partycji, upuść greps i cięcia, a la:
Przykładowe dane wyjściowe dla sda1 na moim pulpicie:
Edycja: Należy pamiętać, że to rozwiązanie, choć bardziej wymyślne niż udev-> vol_id, nie wymaga uprawnień roota, będzie działać na dowolnym jądrze po 2005 roku i opiera się na narzędziach obecnych w dowolnej dystrybucji Linuksa, która jest domyślnie w ścieżka dla dowolnego użytkownika.
źródło
Możesz także użyć tego do wydrukowania wszystkich UUID:
lub to prawdopodobnie łatwiejsze polecenie, zastępując
sda1
urządzenie, które chcesz wyszukać:adaptacja drugiej metody drukowania wszystkich UUID:
źródło
Powyższe wydaje się działać na większości (wszystkich, jakie znalazłem) systemów Linux na wiele lat. To może mieć wady, nie wiem. Wolałbym uzyskać numer seryjny, ale ... to jest UUID głównego systemu plików.
Jeśli ktoś ma sposób na uzyskanie numeru seryjnego bez konieczności rootowania (tak jak mój) i nie instalowania „nietypowych” pakietów różniących się w różnych wersjach Uniksa, doceniłbym to - zawsze mogę się czegoś nauczyć. I wiem, że mieszam różne rzeczy - to UUID głównego systemu plików, a nie dysk.
BTW ma na celu wygenerowanie unikalnego numeru na maszynę, którego nie można zmodyfikować (np. Numer seryjny dysku i adresy MAC dawno temu).
Służy do kodowania oprogramowania na jednym komputerze. Adres MAC był w porządku, dopóki nie pozwolili im być wirtualnymi ... niektórzy sprytni klienci po prostu ustawili swój adres MAC na stały (oczywiście w różnych sieciach) i unikali płacenia mi.
W systemie AIX jest jedno wywołanie, aby uzyskać jeden numer identyfikujący maszynę. Nie ma znaczenia, czy nastąpią zmiany sprzętu lub aktualizacji oprogramowania, więc nie mam pojęcia, jak to robią ... Jeśli zmieni się płyta główna, to zmieni się liczba, więc myślę, że tam ją ukrywają. I to jest niezwykle rzadkie.
źródło
Aby uzyskać identyfikator UUID dla określonego dysku, możesz użyć następujących elementów,
lub możesz użyć tego, aby wyświetlić wszystkie UUID dla podłączonego nośnika,
źródło