우분투를 실행 중이며 UUID
특정 파일 시스템 (파티션이 아닌) 을 찾고 싶습니다 . e2label /dev/sda1
파일 시스템 레이블을 찾는 데 사용할 수 있지만를 찾는 비슷한 방법이없는 것 같습니다 UUID
.
우분투를 실행 중이며 UUID
특정 파일 시스템 (파티션이 아닌) 을 찾고 싶습니다 . e2label /dev/sda1
파일 시스템 레이블을 찾는 데 사용할 수 있지만를 찾는 비슷한 방법이없는 것 같습니다 UUID
.
답변:
사용 가능한 또 다른 명령은 'blkid'입니다. e2fsprogs 패키지의 일부입니다. 사용법의 예 :
/ dev / sda1에서 데이터를 검색하십시오.
topher@crucible:~$ sudo blkid /dev/sda1
/dev/sda1: UUID="727cac18-044b-4504-87f1-a5aefa774bda" TYPE="ext3"
모든 파티션에 대한 UUID 데이터를 표시하십시오.
topher@crucible:~$ sudo blkid
/dev/sda1: UUID="727cac18-044b-4504-87f1-a5aefa774bda" TYPE="ext3"
/dev/sdb: UUID="467c4aa9-963d-4467-8cd0-d58caaacaff4" TYPE="ext3"
모든 파티션의 UUID 데이터를 읽기 쉬운 형식으로 표시합니다 (참고 : 최신 릴리스에서는 blkid -L
다른 의미를 가지며 blkid -o list
대신 사용해야 함)
topher@crucible:~$ 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
/ dev / sda1에 대한 UUID 만 표시하십시오.
topher@crucible:~$ sudo blkid -s UUID -o value /dev/sda1
727cac18-044b-4504-87f1-a5aefa774bda
blkid
하면 원하는 것을 정확히 얻었지만 요청한 것은 아닙니다. (어쨌든 잘 사용하고 있기 때문에 잘 받아들입니다)
blkid -L
은 이제 blkid -o list
; -L
옵션이 변경되었습니다 -L label
지정된 라벨을 사용하는 장치를 검색 할 수 있습니다.
blkid
. 언급 해 주셔서 감사합니다.
blkid
. 나는 항상 방금 했어요 ls -l /dev/disk/by-uuid
. 젠투 blkid
에서sys-apps/util-linux
GPT 파티션 된 디스크 만
GPT 형식의 디스크에서 각 파티션에는 GUID가 할당되는데, 이는 UUID의 형태이지만 원래 포스터가 언급 한 것은 아닙니다. 따라서이 답변은 아마도 원래 질문자에게는 도움이되지 않을 것입니다. 그럼에도 불구하고 주목해야 할 중요한 차이점이 있다고 생각합니다.
GPT 포맷 디스크 / dev / sda에서 파티션 1의 GUID와 파티션 레이블 등을 얻으려면 다음을 수행하십시오.
sudo sgdisk -i 1 /dev/sda
또는 모두 :
ls -l /dev/disk/by-partuuid
특정 파티션에있는 파일 시스템의 루트로 부팅하려면 다음의 linux 커널 매개 변수 구문을 사용하십시오.
root=PARTUUID=87654321-4321-4321-abcd-123456789012
이 경우 고유 한 UUID의 시작 부분 만 지정할 수 있습니다. 이 매개 변수는 더 원시적이며 부팅 프로세스 초기에 커널에서 이해할 수 있습니다.
이들 사이에는 의미에 차이가 있습니다.
디스크는 파티션을 보유하고, 파티션은 파일 시스템을 보유하고, 파일 시스템은 디렉토리와 파일을 보유합니다. 일부 설정 및 운영 체제에는 더 많은 계층이 있습니다.
GUID UUID 및 관련 레이블은 파티션의 내용이 아니라 파티션을 나타냅니다. 동일한 디스크의 새 파티션 또는 새 디스크의 파티션에는 새로운 GUID UUID가 있습니다. 동일한 파티션이 하루에 한 파일 시스템을 보유하고 다른 날에 다른 파일 시스템을 보유 할 수 있습니다. GPT 포맷 디스크에만 존재하지만 레거시 파티션 된 디스크에는 존재하지 않습니다. 더 이상의 유틸리티를 지정하는 대신 여기에 일반적으로 없습니다 root=/dev/sda1
나 root=8:1
.
다른 현재 답변은 일부 포함 파티션 에있는 파일 시스템 의 UUID를 나타냅니다 . 파일 시스템이 전체적으로 다른 파티션이나 하드 디스크로 복사 된 경우 해당 값은 동일하게 유지됩니다. 이 UUID는 이동 된 파일 시스템을 찾는 데 유용합니다. 따라서 이것은 아마도 대부분의 사람들에게 더 적합 할 것입니다. 리눅스 커널 매개 변수 root=UUID=87654321-4321-4321-a567-123456789012
가 이것을 참조합니다.
내가 믿는 root=LABEL=
및 root=UUID=
초기 사용자 공간 구현, 내 시스템에 다른 일 본 초기화 코드는 이러한 매개 변수 내가에서 udev에 의해 만들어집니다 믿고는 / dev / 디스크 /별로 UUID와는 / dev / 디스크 /별로 라벨 (링크를 번역 내 시스템의 사용자 공간).
[1] http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/init/do_mounts.c#n183
-i1
또는으로 나타납니다 . -i 1
-i:1
모든 유형의 파일 시스템에서 작동하는 스크립트 정리 방법은 다음과 같습니다.
lsblk -no UUID <device-containing-FS>
또는 마운트 지점 (또는 그 안에있는 파일)이있는 경우 :
lsblk -no UUID $(df -P <file> | awk 'END{print $1}')
출력은 UUID, 전체 UUID이며 UUID 만입니다.
blkid
루트가 될 필요가 없기 때문에 @ christopher-cashell의 답변 보다 낫습니다 . 마운트 지점 또는 파일의 경우 다음을 수행하십시오 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에서 가장 쉬운 방법은 다음과 같습니다.
/sbin/tune2fs -l /dev/sda1
Couldn't find valid filesystem superblock.
권장되는 방법은
sudo vol_id -u /dev/sda2
UUID 사용에 대한 자세한 내용은 이 기사를 참조 하십시오 (우분투 도움말에서 제공하지만 UUID를 사용하는 모든 Linux 배포판에서 작동해야 함).
이 질문에 대한 의견에서 언급했듯이 vol_id가 경로에 없을 수도 있습니다. 우분투에서는 / sbin에 있으므로 위와 같이 작동합니다. 페도라의 경우 필요한 것 같습니다
sudo /lib/udev/vol_id -u /dev/sda2
다른 배포판에 다른 위치에 vol_id가 있으면 주석을 게시하고이 답변에 추가하겠습니다.
/sbin/vol_id
./lib/udev/vol_id
이것은 나를 위해 작동하는 것 같습니다 :
sudo dumpe2fs /dev/sda1 | grep UUID
sda1의 UUID를 원한다고 가정하면 다음과 같이 시도 할 수 있습니다.
for v in /dev/disk/by-uuid/* ; do echo "`readlink $v`: $v" | grep ../sda1 | cut -d\: -f2 | cut -d/ -f5 ; done
이에 따라 sda1을 조정하십시오. 모든 파티션에 대한 UUID를 얻으려면 grep과 cuts를 삭제하십시오.
for v in /dev/disk/by-uuid/* ; do echo "`readlink $v`: $v" ; done
데스크탑에서 sda1의 샘플 출력 :
[mihailim@home ~]$ for v in /dev/disk/by-uuid/* ; do echo "`readlink $v`: $v" | grep ../sdb3 | cut -d\: -f2 | cut -d/ -f5 ; done
dc8c49f1-e2dc-46bc-ba02-013f26c85f70
편집 :이 솔루션은 udev-> vol_id 솔루션보다 더 많이 고안되었지만 루트 권한이 필요 하지 않으며 2005 년 이후 커널에서 작동하며 기본적으로 Linux 배포판에있는 도구를 사용합니다. 모든 사용자의 경로
이것을 사용하여 모든 UUID를 인쇄 할 수도 있습니다.
for disk in /dev/disk/by-uuid/*; do
basename "$(readlink "$disk")"
basename "$disk"
echo
done
또는이 간단한 명령 sda1
으로 검색하려는 장치로 대체 합니다.
disk=sda1
find /dev/disk/by-uuid -type l -exec sh -c "readlink {} | grep -o $disk && basename {}" \;
모든 UUID를 인쇄하는 두 번째 방법의 적응 :
find /dev/disk/by-uuid -type l -exec sh -c 'basename $(readlink {}); basename {}; echo' \;
ls -l /dev/disk/by-uuid | grep `lsblk | grep "/" | awk '{print $1}'` | awk '{print $9}'
위의 내용은 수년 동안 대부분의 Linux 시스템에서 작동하는 것 같습니다. 잘 모르겠습니다. 나는 일련 번호를 얻는 것을 선호하지만 ... 이것은 루트 파일 시스템의 UUID입니다.
누구나 루트가 아니더라도 시리얼 번호를 얻을 수 있고 유닉스 버전이 다른 "비정상적인"패키지를 설치하지 않는 방법을 알고 있다면 항상 배울 수 있습니다. 그리고 나는 내가 혼합하는 것을 알고 있습니다-디스크가 아닌 루트 파일 시스템 UUID입니다.
BTW의 목적은 수정 될 수없는 머신 당 고유 번호를 생성하는 것입니다 (디스크 일련 번호 및 MAC 주소와 같이 오래 전에 사용 된 것).
단일 시스템으로 소프트웨어를 인코딩하는 데 사용됩니다. MAC 주소는 그들이 가상이 될 때까지 괜찮 았습니다 ... 일부 유쾌한 고객은 단순히 (물론 다른 네트워크에서) MAC 주소를 일정하게 설정하고 지불하지 않았습니다.
AIX에서는 기계를 식별하는 하나의 번호를 얻기위한 단일 호출이 있습니다. 하드웨어 변경이나 소프트웨어 업데이트가 발생하는지는 신경 쓰지 않으므로 어떻게하는지 모릅니다 ... 마더 보드가 변경되면 숫자가 변경되어 숨어 있다고 생각합니다. 그리고 그것은 드문 일이 아닙니다.
다음을 사용하여 특정 드라이브에 대한 UUID를 얻을 수 있습니다.
sudo vol_id -u /dev/sda1
또는이를 사용하여 연결된 미디어의 모든 UUID를 나열 할 수 있습니다.
ls /dev/disk/by-uuid