Вопрос или проблема
У меня есть ноутбук DELL Latitude 5491 с установленной Windows 10, с включенным безопасным загрузкой и в режиме EFI. После покупки я установил Ubuntu 20.04 рядом с Windows в режиме двойной загрузки, также с включенной безопасной загрузкой/EFI. Разделы 2, 3 и 5 предназначены для системы Windows, разделы 1 и 4 – для Ubuntu. На разделе 6 хранится ISO-образ Clonezilla Live CD для резервного копирования. На данный момент все работает хорошо.
На следующем этапе я сохранил распакованный ISO-образ Parted Magic Live CD на разделе 7, отредактировал меню grub, но загрузка Parted Magic из меню grub завершается ошибкой с недействительной подписью для BzImage…
Тем не менее, когда я загружаю Parted Magic напрямую из EFI (временное меню загрузки или настройка EFI), система загружается нормально.
В чем может быть проблема? Это выглядит так:
Схема разделов:
Устройство Начало Конец Секторы Размер Тип
/dev/sda1 2048 1394687 1392640 680M EFI System
/dev/sda2 1394688 1656831 262144 128M Microsoft reserved
/dev/sda3 1656832 507570175 505913344 241,2G Microsoft basic data
/dev/sda4 507570176 983883775 476313600 227,1G Linux filesystem
/dev/sda5 983883776 985911295 2027520 990M Windows recovery environment
/dev/sda6 985911296 987500543 1589248 776M Linux filesystem
/dev/sda7 987500544 1000214527 12713984 6,1G Microsoft basic data
Отредактированный файл 40_custom:
#!/bin/sh
exec tail -n +3 $0
# Этот файл предоставляет простой способ добавить пользовательские записи в меню. Просто напишите
# записи меню, которые вы хотите добавить, после этого комментария. Будьте осторожны, чтобы не изменить
# строку 'exec tail' выше.
menuentry "clonezilla" {
set isofile="/clonezilla-live-20210127-groovy-amd64.iso"
loopback loop (hd0,gpt6)$isofile
linuxefi (loop)/live/vmlinuz boot=live components config findiso=$isofile ip=frommedia toram=filesystem.squashfs union=overlay username=user
initrdefi (loop)/live/initrd.img
}
menuentry "partedmagic" {
insmod chain
set root=(hd0,gpt7)
configfile /boot/grub/grub.cfg
}
Файл grub.cfg:
set default="0"
set timeout="20"
set hidden_timeout_quiet=false
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
terminal_output gfxterm
set color_normal=white/black
set color_highlight=black/white
loadfont /boot/grub/unicode.pf2
background_image /boot/grub/pmagic.png
set default_settings="edd=on vga=normal mem=32G"
set live_settings="boot=live eject=no"
set linux="/pmagic/bzImage"
set initrd_img="/pmagic/initrd.img /pmagic/fu.img /pmagic/m.img"
set default=2
set message="Загрузка ядра и initramfs. Пожалуйста, подождите..."
menuentry "Parted Magic UEFI Boot Menu"{
set
}
menuentry ' '{
set
}
menuentry "1. Настройки по умолчанию (Работает из ОЗУ 4 ГБ+)"{
echo $message
search --set -f $linux
linux $linux $default_settings
initrd $initrd_img
}
menuentry "1a. Настройки по умолчанию с 4K монитором"{
echo $message
search --set -f $linux
linux $linux $default_settings m4k=yes
initrd $initrd_img
}
menuentry "1b. Настройки по умолчанию + меню выбора языка"{
echo $message
search --set -f $linux
linux $linux $default_settings lang=yes
initrd $initrd_img
}
menuentry ' '{
true
}
menuentry "2. Live с настройками по умолчанию (2ГБ+ ОЗУ)"{
echo $message
search --set -f $linux
linux $linux $default_settings $live_settings
initrd $initrd_img
}
menuentry "2a. Live с настройками по умолчанию + меню выбора языка"{
echo $message
search --set -f $linux
linux $linux $default_settings $live_settings lang=yes
initrd $initrd_img
}
menuentry ' '{
true
}
menuentry "3. Решение проблемы с черным/пустым экраном"{
echo $message
search --set -f $linux
linux $linux $default_settings nomodeset
initrd $initrd_img
}
menuentry "4. Нет официального драйвера NVIDIA - используйте Nouveau драйвер NVIDIA."{
echo $message
search --set -f $linux
linux $linux $default_settings modprobe="nouveau"
initrd $initrd_img
}
menuentry "5. *** Hyper-V ***"{
echo $message
search --set -f $linux
linux $linux $default_settings fbdev=yes
initrd $initrd_img
}
menuentry "6. Memtest86+" {
chainloader /boot/memtest/BOOTX64.EFI
}
menuentry "7. EFI Shell" {
insmod fat
insmod chain
terminal_output console
chainloader /boot/edk2/Shell.efi
}
menuentry ' '{
true
}
submenu "Меню дополнительных опций"{
set default_settings="edd=on vga=normal mem=32G"
set live_settings="boot=live eject=no"
set linux="/pmagic/bzImage"
set initrd_img="/pmagic/initrd.img /pmagic/fu.img /pmagic/m.img"
set message="Загрузка ядра и initramfs. Пожалуйста, подождите..."
menuentry "1. Super Grub2 Disk EFI" {
chainloader /boot/supergrub2disk/super_grub2_disk_standalone_x86_64_efi_2.04s1.EFI
}
menuentry "2. Clonezilla"{
echo $message
search --set -f $linux
linux $linux $default_settings clonezilla=yes
initrd $initrd_img
}
menuentry "3. Nwipe"{
echo $message
search --set -f $linux
linux $linux $default_settings nwipe=yes
initrd $initrd_img
}
menuentry "4. Загрузить модули ядра iSCSI"{
echo $message
search --set -f $linux
linux $linux $default_settings iscsi=yes
initrd $initrd_img
}
menuentry "5. Загрузить конфигурацию для модуля xf86-video-qxl"{
echo $message
search --set -f $linux
linux $linux $default_settings qxl=yes
initrd $initrd_img
}
}
}
submenu "Меню безопасной загрузки"{
set default_settings="edd=on vga=normal mem=32G"
set live_settings="boot=live eject=no"
set linux="/pmagic/bzImage"
set initrd_img="/pmagic/initrd.img /pmagic/fu.img /pmagic/m.img"
set message="Загрузка ядра и initramfs. Пожалуйста, подождите..."
menuentry "1. Без ACPI (Расширенный интерфейс конфигурации и питания)"{
echo $message
search --set -f $linux
linux $linux $default_settings acpi=off
initrd $initrd_img
}
menuentry "2. Не вынимать CD"{
echo $message
search --set -f $linux
linux $linux $default_settings eject=no
initrd $initrd_img
}
menuentry "3. Совместимость эмулятора"{
echo $message
search --set -f $linux
linux $linux $default_settings $live_settings noreplace-paravirt
initrd $initrd_img
}
menuentry "4. Консоль (загрузка в оболочку)"{
echo $message
search --set -f $linux
linux $linux $default_settings consoleboot=yes
initrd $initrd_img
}
menuentry "5. Initrd.img (загрузка в оболочку initrd.img)"{
echo $message
search --set -f $linux
linux $linux $default_settings initrd_shell=yes
initrd $initrd_img
}
menuentry "6. Radeon без установки режима"{
echo $message
search --set -f $linux
linux $linux $default_settings blacklist=radeon
initrd $initrd_img
}
menuentry "7. Без / принудительная настройка частоты процессора"{
echo $message
search --set -f $linux
linux $linux $default_settings cpufreq=no
initrd $initrd_img
}
menuentry "8. Принудительное решение vesa"{
echo $message
search --set -f $linux
linux $linux $default_settings xconfig=forcevesa
initrd $initrd_img
}
menuentry "9. Принудительная частота обновления"{
echo $message
search --set -f $linux
linux $linux $default_settings xconfig=forcerefresh nomodeset
initrd $initrd_img
}
menuentry "10. Отключить ускоренную 3D графику (DRI)"{
echo $message
search --set -f $linux
linux $linux $default_settings nodri=yes
initrd $initrd_img
}
menuentry "11. Пропавший указатель мыши"{
echo $message
search --set -f $linux
linux $linux $default_settings xmouse=yes
initrd $initrd_img
}
menuentry "12. Macbook Pro 8,x Обход двойной графики"{
echo $message
search --set -f $linux
linux $linux $default_settings
outb 0x728 1 # Переключение выбора
outb 0x710 2 # Переключение дисплея
outb 0x740 2 # Переключение DDC
outb 0x750 0 # Отключение дискретной графики
initrd $initrd_img
}
menuentry "13. Libata noncq - Диск не разблокируется"{
echo $message
search --set -f $linux
linux $linux $default_settings libata.force=1.0:noncq
initrd $initrd_img
}
menuentry "14. Без IPV6 - Остановить менеджер сети от отключения."{
echo $message
search --set -f $linux
linux $linux $default_settings blacklist=ipv6
initrd $initrd_img
}
}
menuentry ' '{
true
}
submenu "Список чит-кодов"{
menuentry "directory= Директория, содержащая папку pmagic"{set}
menuentry "iso_filename= [путь к/]имя файла iso"{set}
menuentry "root= Устройство загрузки SQFS по идентификатору раздела"{set}
menuentry "label= Устройство загрузки SQFS по метке"{set}
menuentry "uuid= Устройство загрузки SQFS по [частичному] uuid"{set}
menuentry "blacklist= Не загружать модули ядра, например, blacklist=kmod1:kmod2:kmod3"{set}
menuentry "ahci=no Не загружать модуль ядра ahci"{set}
menuentry "modprobe= Загружать модули ядра, например, modprobe=kmod4:kmod5:kmod6"{set}
menuentry "consoleboot=yes Не запускать X-windows"{set}
menuentry "eject=no Не вынимать CD"{set}
menuentry "gpm=no Отключить консольный сервер мыши"{set}
menuentry "pmodules=no Не устанавливать pmagic/pmodules"{set}
menuentry "slapt=no Не устанавливать пакеты /home/partedmagic/slapt-get/"{set}
menuentry "scripts=no Не выполнять pmagic/pmodules/scripts"{set}
menuentry "sound=no Не позволять ALSA устанавливать уровни громкости (без звука)"{set}
menuentry "numlock=on Установите numlock в включенное состояние при загрузке"{set}
menuentry "conky=no Не запускать conky автоматически"{set}
menuentry "zfs=no Не запускать службы zfs"{set}
menuentry "hostname= Установить имя хоста в XXXXXX[.YYYYYY.ZZZ]"{set}
menuentry "timeconfig=<timezone>|no Установить часовой пояс | не запускать timeconfig при загрузке"{set}
menuentry "clockfmt=<format> clockfmt=%R (24 часа), clockfmt=%l:%M%P (am/pm)"{set}
menuentry "mdadm=no Не собирать файловые системы raid"{set}
menuentry "lvm=no Не запускать модуляцию устройств"{set}
menuentry "sshd=no Не запускать демон SSH"{set}
menuentry "bluetooth=no Не запускать демон bluetooth"{set}
menuentry "consolekit=no Не запускать демон consolekit"{set}
menuentry "dmeventd=no Не запускать демон событий модуля для устройств"{set}
menuentry "dbus=no Не запускать демон Dbus"{set}
menuentry "smart=no Не запускать демон smartmontools"{set}
menuentry "fstabdaemon=no Не запускать демон Parted Magic /etc/fstab"{set}
menuentry "nfs=no Не запускать демон NFS"{set}
menuentry "acpid=no Не запускать демон acpi"{set}
menuentry "cups=no Не запускать сервер CUPS"{set}
menuentry "netw=no Не запускать сеть при загрузке"{set}
menuentry "samba=yes Запустить демоны samba"{set}
menuentry "rdate=yes Синхронизировать время с rdate при загрузке"{set}
menuentry "monday=1 Понедельник как первый день недели"{set}
menuentry "ntpd=yes Запустить демон ntpd"{set}
menuentry "cpufreq=no/yes/<gov> Нет (ноутбук), принудительно (настольный) регулятор частоты процессора"{set}
menuentry "powermanager=no/yes Нет (ноутбук), принудительно (настольный) менеджер питания"{set}
menuentry "iscsi=yes Запустить инициатор iscsi"{set}
menuentry "xconfig=XXXXXX|no Использовать /etc/X11/xorg.conf.XXXXXX | Отменить"{set}
menuentry "nodri=yes Без DRI"{set}
menuentry "qxl=yes X для запуска с устройством QXL"{set}
menuentry "xmouse=yes Попробуйте это, если ваш X не показывает указатель мыши"{set}
menuentry "clonezilla=yes Загрузка в clonezilla"{set}
menuentry "nwipe=yes Загрузка в nwipe"{set}
menuentry "cmd= Загрузка в <команда>, например cmd="nwipe --method dod"{set}
menuentry "device_list=yes Показать устройства/разделы, которые можно просканировать для SQFS"{set}
menuentry "removableonly=yes Только сканировать устройства/разделы с атрибутом "съемный""{set}
menuentry "testing=yes Дождаться завершения загрузки, используйте <Shift+Page Up|Down> для прокрутки"{set}
menuentry " Нажмите <Enter> чтобы продолжить"{set}
menuentry ""{set}
menuentry "Картинки клавиатуры:"{set}
menuentry "azerty be-latin1 fr-latin1 fr-latin9 fr-pc fr wangbe wangbe2 ANSI-dvorak"{set}
menuentry "dvorak-l dvorak-r dvorak tr_f-latin5 trf bg-cp1251 bg-cp855 bg_bds-cp1251"{set}
menuentry "bg_bds-utf8 bg_pho-cp1251 bg_pho-utf8 br-abnt br-abnt2 br-latin1-abnt2"{set}
menuentry "br-latin1-us by cf cz-cp1250 cz-lat2-prog cz-lat2 cz defkeymap"{set}
menuentry "defkeymap_V1.0 dk-latin1 dk emacs emacs2 es-cp850 es et-nodeadkeys et"{set}
menuentry "fi-latin1 fi-latin9 fi gr-pc gr hu101 hypermap.m4 il-heb il-phonetic il"{set}
menuentry "is-latin1-us is-latin1 it-ibm it it2 jp106 la-latin1 lt.baltic lt.l4 lt"{set}
menuentry "mk-cp1251 mk-utf mk mk0 nl nl2 no-latin1.doc no-latin1 no pc110 pl pl2"{set}
menuentry "pt-latin1 pt-latin9 ro_win ru-cp1251 ru-ms ru-yawerty ru ru1 ru2 ru3 ru4"{set}
menuentry "ru_win se-fi-ir209 se-fi-lat6 se-ir209 se-lat6 sk-prog-qwerty sk-qwerty"{set}
menuentry "speakup-jfw speakup-jfw.readme speakupmap sr-cy sv-latin1 tr_q-latin5 tralt"{set}
menuentry "trq ua-utf-ws ua-utf ua-ws ua uk us-acentos us croat cz-us-qwertz"{set}
menuentry "de-latin1-nodeadkeys de-latin1 de de_CH-latin1 fr_CH-latin1 fr_CH hu"{set}
menuentry "sg-latin1-lk450 sg-latin1 sg sk-prog-qwertz sk-qwertz slovene"{set}
menuentry "Пример:"{set}
menuentry "На меню загрузки нажмите <TAB> и затем измените 'keymap=us' на 'keymap=fr-latin1'"{set}
menuentry ""{set}
menuentry "Режимы VGA:"{set}
menuentry "Обычная VGA консоль: vga=normal"{set}
menuentry "Консоль кадрового буфера VESA @ 1024x768x64k: vga=791"{set}
menuentry "Консоль кадрового буфера VESA @ 1024x768x32k: vga=790"{set}
menuentry "Консоль кадрового буфера VESA @ 1024x768x256: vga=773"{set}
menuentry "Консоль кадрового буфера VESA @ 800x600x64k: vga=788"{set}
menuentry "Консоль кадрового буфера VESA @ 800x600x32k: vga=787"{set}
menuentry "Консоль кадрового буфера VESA @ 800x600x256: vga=771"{set}
menuentry "Консоль кадрового буфера VESA @ 640x480x64k: vga=785"{set}
menuentry "Консоль кадрового буфера VESA @ 640x480x32k: vga=784"{set}
menuentry "Консоль кадрового буфера VESA @ 640x480x256: vga=769"{set}
}
Тем не менее путь к “загрузчику” раздела 7 в настройках EFI:
\EFI\boot\bootx64.efi
Когда я использовал этот путь для редактирования файла 40_custom вместо использования файла grub.cfg, это заканчивается ошибкой.
Спасибо за ваши ответы.
П.
ИЗМЕНЕНИЕ:
Вариант 1:
Я использовал следующее редактирование файла custom_40
menuentry "partedmagic" {
insmod chain
set root=(hd0,gpt7)
configfile /boot/EFI/bootx64.efi
}
Когда я пытался отредактировать этот файл следующим образом:
menuentry "partedmagic" {
insmod chain
set root=(hd0,gpt7)
chainloader /boot/EFI/bootx64.efi
}
Я получил сообщение об ошибке:
Загрузчик не подтвердил загруженное изображение…
Система скомпрометирована. Остановка.
Вариант 2:
Процесс повторной подписи BzImage Parted Magic был успешно завершен, но когда я пытаюсь загрузить это, все еще появляется ошибка.
… имеет недействительную подпись, вам нужно загрузить ядро сначала.
Ответ или решение
Для решения проблемы загрузки Parted Magic с помощью GRUB в условиях, когда включён Secure Boot, необходимо обратить внимание на несколько важных аспектов, касающихся настройки вашего загрузчика и подписи ядра. Ниже приведены рекомендации, которые помогут вам успешно загрузить Parted Magic.
Проблема
Вы сталкиваетесь с ошибками при попытке загрузить Parted Magic через GRUB, а сообщение о недопустимой подписи bzImage указывает на то, что Secure Boot блокирует его запуск. При этом вы можете загрузить Parted Magic напрямую через EFI, что говорит о том, что сам загрузчик или его конфигурация неправильно настроены для работы с Secure Boot.
Решения
1. Использование Chainloading
Вместо использования конструкции configfile
, попробуйте использовать chainloader
, который позволит GRUB передать управление загрузчику Parted Magic непосредственно:
menuentry "partedmagic" {
insmod chain
set root=(hd0,gpt7)
chainloader /EFI/boot/bootx64.efi
}
Убедитесь, что путь верный. Проверьте, что bootx64.efi
действительно находится в указанной директории.
2. Подпись ядра Parted Magic
Если вы хотите загрузить Parted Magic с помощью GRUB без отключения Secure Boot, вам потребуется подписать его ядро (bzImage
) вашим собственным сертификатом. Вы можете использовать MOK (Machine Owner Key), если он у вас хотя бы единожды установлен в BIOS при включении поддержки сторонних модулей:
- Экспортируйте MOK:
openssl x509 -in /var/lib/shim-signed/mok/MOK.der -inform DER -out /var/lib/shim-signed/mok/MOK.pem
- Создайте резервную копию оригинального ядра:
mv /mnt/sda7/pmagic/bzImage /mnt/sda7/pmagic/bzImage.orig
- Подпишите ядро:
sbsign --key /var/lib/shim-signed/mok/MOK.priv --cert /var/lib/shim-signed/mok/MOK.pem \
--output /mnt/sda7/pmagic/bzImage \
/mnt/sda7/pmagic/bzImage.orig
или, если доступен другой инструмент:
osslsigncode -certs /var/lib/shim-signed/mok/MOK.pem -key /var/lib/shim-signed/mok/MOK.priv \
-in /mnt/sda7/pmagic/bzImage.orig -out /mnt/sda7/pmagic/bzImage
3. Работа с сертификатами Secure Boot
Если ваш BIOS позволяет управлять whitelist’ом сертификатов Secure Boot, вы также можете добавить сертификаты Parted Magic и Canonical в whitelist. Для этого:
- Извлеките сертификат из существующего подписанного .efi файла:
osslsigncode extract-signature -pem somefile.efi certificate.pkcs7
openssl pkcs7 -inform pem -print_certs -text -in certificate.pkcs7 > certificate.pem
- Добавьте сертификаты в список разрешённых с помощью утилиты
keytool.efi
или через настройки BIOS.
Альтернативный вариант
Если ничего из вышеперечисленного не помогает, вы можете рассмотреть возможность отключения Secure Boot. Это позволит загрузить любые операционные системы и утилиты. Однако это может уменьшить уровень безопасности вашего устройства, так как Secure Boot защищает от выполнения неподписанных загрузчиков.
Заключение
Следуя указанным шагам, вы сможете успешно загрузить Parted Magic через GRUB при включённом Secure Boot. Если вы выполните подписку ядра и корректную настройку GRUB, это обеспечит необходимую защиту системы и функциональность.