ブートパーティション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=1newuuid2番目のコマンドの前には、"現在のコマンドラインが二重引用符で囲まれており、二重引用符が含まれていないと見なされます。

答え3

まず、ブートパーティションを探してみましょう。

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

次に、以下の提案に従って出力を提供します。アンディ・ダルトン上に、黒子

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

関連情報