Если вы ищете UUID устройства, смонтированного как /boot
в работающей системе, чистый способ — 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.
Затем вы можете добавить 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
; мы просто добавляемfips=1
newuuid
перед вторым "
, таким образом, предполагая, что ваша текущая командная строка заключена в двойные кавычки и не содержит двойных кавычек.
Если в SystemD нет «хорошего» решения, вы можете сделать перезагрузку частью файла модуля. Просто добавьте к существующей записи ExecReload
еще одну запись :
ExecReload=systemctl restart B