부팅 파티션 UUID를 얻는 안정적인 스크립팅 방법

부팅 파티션 UUID를 얻는 안정적인 스크립팅 방법

/etc/default/grub편집 하고 fips=1 boot=UUID=????추가 하는 약간 자동화된 방법을 작성하고 싶습니다.GRUB_CMDLINE_LINUX=

우연히 /etc/fstab포함되었습니다 UUID=12345blabla /boot xfs defaults 0 0. 그러나 마운트 유형이 /etc/fstab의 UUID가 아닌 경우 Linux(RHEL/Centos 7.6 이상 시스템)에서 부팅 파티션의 UUID를 유추하는 안정적인 방법은 무엇입니까?

답변1

이것이 자동 수정에 대한 귀하의 질문 부분을 해결하지 못한다는 말로 시작하겠습니다 /etc/default/grub. 그러나 실제로는 필요하지 않은 것 같습니다.

파티션을 다시 포맷하지 않는 한 UUID는 정적이어야 합니다. 기본 장치를 알고 있다고 가정하면 /dev/disk/by-uuid다음과 같은 내용을 볼 수 있습니다.

$ ls -l /dev/disk/by-uuid
... 9577f213-665a-427b-aa45-8927b177224e -> ../../sda1
...

따라서 부팅 파티션에 해당하는 장치를 찾으면 됩니다.

다음 명령 도 있습니다 blkid.

$ blkid /dev/sda1
/dev/sda1: UUID="9577f213-665a-427b-aa45-8927b177224e" ...

어떤 이유로 UUID가 변경되는 상황을 겪은 적이 있습니까?

답변2

/boot실행 중인 시스템에 설치된 장치의 UUID를 찾고 있는 경우 깔끔한 접근 방식 findmnt은 다음과 같습니다 util-linux.

$ findmnt --output=UUID --noheadings --target=/boot 
2b8c6b62-0f68-47d1-a5e7-3e56acce98ac

이러한 설명이 필요 없는 옵션을 사용하면 UUID만 출력됩니다. 또한 어떤 장치가 문제의 장치인지 확인하는 수고를 덜 수 있습니다.

설치 여부에 관계없이 알고 있는 장치의 UUID를 찾고 있는 경우 blkid다음 설명에 따라 사용할 수 있습니다.앤디 달튼의 답변:

$ sudo blkid -s UUID -o value /dev/vda1 
2b8c6b62-0f68-47d1-a5e7-3e56acce98ac

-s tag옵션은 출력 -o format을 UUID 태그 값으로만 ​​제한합니다.

GRUB_CMDLINE_LINUX그런 다음 다음을 사용하여 UUID를 명령에 추가할 수 있습니다.

sed -i.bkp 's/^\([[:blank:]]*GRUB_CMDLINE_LINUX=".*\)\(".*\)$/\1 fips=1 boot=UUID='"$newuuid"'\2/' /etc/default/grub

-i이 옵션에 대한 GNU 구문을 가정합니다 sed. 즉, 파일을 그 자리에서 편집하고 grub.bkp동시에 백업 파일을 생성합니다. 명령줄 인수가 이미 존재하는지
확인하지 않는다는 점에 유의하세요 . boot우리는 그냥 덧붙인다fips=1newuuid두 번째 명령 앞에는 "현재 명령줄이 큰따옴표로 묶여 있고 큰따옴표가 포함되어 있지 않은 것으로 간주됩니다.

답변3

먼저 부팅 파티션을 찾아보겠습니다.

fdisk -l | grep '^/dev/[a-z]*[0-9]' | awk '$2 == "*"' 

그런 다음 아래 제안된 대로 출력을 제공합니다.앤디 달튼위에, 에쿠로코

fdisk -l | grep '^/dev/[a-z]*[0-9]' | awk '$2 == "*"' | blkid $1

관련 정보