/etc/default/grub
を編集し、fips=1 boot=UUID=????
をGRUB_CMDLINE_LINUX=
に追加するためのやや自動化されたメソッドをスクリプト化したい
偶然にも/etc/fstab
にはUUID=12345blabla /boot xfs defaults 0 0
が含まれています。しかし、マウントタイプが/ etc/fstabのUUIDによるものではない場合、Linux [RHEL/Centos7.6システム以降]でブートパーティションのUUIDを推測する信頼できる方法は何ですか?
まず、これは/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が変更される状況を見ていますか?
まず、ブートパーティションを見つけましょう
fdisk -l | grep '^/dev/[a-z]*[0-9]' | awk '$2 == "*"'
次に、上記の Andy Dalton によって親切に提案されているように、その出力を blkid にフィードします。
fdisk -l | grep '^/dev/[a-z]*[0-9]' | awk '$2 == "*"' | blkid $1
実行中のシステムに/boot
としてマウントされているデバイスのUUIDを探している場合、クリーンな方法はutil-linux
からfindmnt
です。
$ findmnt --output=UUID --noheadings --target=/boot
2b8c6b62-0f68-47d1-a5e7-3e56acce98ac
これらの自明のオプションを使用すると、UUIDのみが出力されます。また、どのデバイスが適切なデバイスであるかを判断する手間も省けます。
マウントされているかどうかに関係なく、知っているデバイスのUUIDを探しているだけの場合は、 Andy Daltonの回答 で説明されているように、blkid
を使用できます。
$ Sudo blkid -s UUID -o value /dev/vda1
2b8c6b62-0f68-47d1-a5e7-3e56acce98ac
-s tag
および-o format
オプションは、出力をUUIDタグの値のみに制限します。
次に、次のコマンドを使用してUUIDをGRUB_CMDLINE_LINUX
に追加できます。
sed -i.bkp 's/^\([[:blank:]]*GRUB_CMDLINE_LINUX=".*\)\(".*\)$/\1 fips=1 boot=UUID='"$newuuid"'\2/' /etc/default/grub
これは、-i
オプションの構文がGNU sed
であることを前提としています。ファイルをインプレースで編集し、grub.bkp
バックアップファイルも作成します。boot
コマンドラインパラメータがすでに存在するかどうかはチェックしていないことに注意してください。 2番目のfips=1
の前に"
newuuid
を追加しているだけなので、現在のコマンドラインが囲まれていると仮定します二重引用符で囲み、二重引用符は含まれません。