gawk решение:
for f in /directory/*; do gawk -i inplace '{getline nl; print nl$0}' "$f"; done
для f в /directory/*
- для каждого файла по указанному пути
gawk -i inplace
- включить in place редактирование файла
getline nl
- прочитать следующую запись из ввода awk в переменную nl
(следующая строка)
print nl$0
- вывести текущую и следующая запись поменялась местами
Открытый ключ, встраиваемый с помощью опции -m
параметра grub-mkimage
, предназначен для подписи любых файлов, которые GRUB будет читать. При этом используются отдельные файлы подписи в стиле GPG -(*.sig
). Но это не имеет ничего общего с безопасной загрузкой как таковой.
Для подписи безопасной загрузки требуется подпись другого типа. Подпись, совместимая с Secure Boot -, встроена в сам двоичный файл PE32+. Есть как минимум три инструмента, которые могут сделать такую подпись:
sbsign
из sbsigntools Джереми Керра/Ubuntupesign
автор Питер Джонс/RedHat . osslsigncode
автор Михал ТройнараВам потребуется настроить прокладку для использования MOK (Ключ владельца машины ). Вы можете сделать это, используя mokutil
,или дистрибутивы, связанные с Debian/Ubuntu -, могут предлагать более удобный для начинающих -update-secureboot-policy
скрипт для выполнения этой работы. Если вы используете его, вы найдете сертификат MOK (в формате DER )и соответствующий закрытый ключ в /var/lib/shim-signed/mok
.
Для инструментов подписи sbsign
и osslsigncode
потребуется сертификат MOK в формате PEM. Закрытый ключ уже будет в формате PEM. Преобразование сертификата просто:
sudo openssl x509 -inform DER -in /var/lib/shim-signed/mok/MOK.der -outform PEM -out ~/MOK_certificate.pem
Инструменту pesign
потребуется MOK, хранящийся в базе данных сертификатов в стиле NSS -. Вы можете использовать openssl pkcs12 -export
, чтобы сначала преобразовать сертификат и закрытый ключ в один файл PKCS #12, а затем pk12util
импортировать этот файл в новый каталог базы данных сертификатов NSS (каталог с тремя файлами в нем. :cert8.db
, key3.db
и secmod.db
).
Затем вы должны использовать один из упомянутых выше -инструментов для подписи grubx64.efi
сертификата MOK и соответствующего закрытого ключа :
sbsign --key <MOK private key file.pem> --cert <MOK certificate.pem> --output grubx64.efi.signed grubx64.efi
# or
pesign --in=grubx64.efi --out=grubx64.efi.signed -c <name of certificate in NSS certificate store> -n <NSS certificate store directory> -s
# or
osslsigncode -certs <MOK certificate.pem> -key <MOK private key file.pem> -h sha256 -in grubx64.efi -out grubx64.efi.signed