Me topé con este buen artículo sobre la manipulación de datos binarios :Manipulación de datos binarios en Bash
Principalmente explica una herramienta muy útil llamadaxxd
Por ejemplo, para volcar un archivo binario en ASCII, harás:
xxd -b myfile.bin
Para convertir una cadena corta, puede usar el viejobc
:
$ echo "obase=16; ibase=2; 1010" | bc
A
Otro método a considerar:
$ base64 < binary.file > text.file
ibase and obase define the conversion base for input and output numbers. The default for both input and output is base 10.
Я столкнулся с точно такой же проблемой и смог ее решить после нескольких часов проб и ошибок. Это плохо обрабатывается на стороне GRUB, если не сказать больше, он просто молча терпит неудачу. Документация, похоже, тоже не помогает, я не смог найти ничего полезного об этой конкретной ошибке.
Решение довольно простое -есть несколько модулей, которые должны быть предварительно -загружены . Для меня, используя GRUB 2.04 на amd64 , это были:
Полученная команда для меня была:
grub-mkstandalone --verbose --format=x86_64-efi --output=grubsax64.efi --pubkey=grub.pub --modules="verifiers gcry_sha256 gcry_sha512 gcry_dsa gcry_rsa" boot/grub/grub.cfg=grub.cfg
Важная часть здесь--modules="..." .
Я также пытался загрузить точно такие же модули, используя insmod в grub.cfg , но это не сработает , это нужно сделать, как описано выше..
Судя по результату работы grub -mkstandalone , это также должно работать для grub -mkimage(grub -mkstandalone в какой-то момент вызывает grub -mkimage ), хотя сам не проверял:
grub-mkimage... verifiers gcry_sha256 gcry_sha512 gcry_dsa gcry_rsa
Создайте образ/двоичный файл GRUB, перезагрузите компьютер, введите командную строку, и вы заметите, что список _доверенных теперь выводит результат. Дальнейшие тесты показали, что проверка подписи теперь работает так, как я ожидал.
РЕДАКТИРОВАТЬ 23.04.21 относительно GRUB 2.06:
В GRUB 2.06 верификаторы были перемещены из модуля в ядро (см. этот коммит ), т.е. это больше не отдельный модуль. Таким образом, команды, описанные выше, также необходимо изменить :
.grub-mkstandalone --verbose --format=x86_64-efi --output=grubsax64.efi --pubkey=grub.pub --modules="gcry_sha256 gcry_sha512 gcry_dsa gcry_rsa" boot/grub/grub.cfg=grub.cfg
grub-mkimage... gcry_sha256 gcry_sha512 gcry_dsa gcry_rsa