петлевой модуль для личинки с безопасной начальной загрузкой

Я создаю палку usb мультиначальной загрузки с производными человечности. Я следовал нескольким учебным руководствам, найденным онлайн: по существу Вы помещаете isos на палку usb, и затем Вы загружаете их использующий личинку, которая установлена на палке.

Однако у меня есть следующая проблема: моя палка должна работать также с Защищенной загрузкой на. Однако мне нужен петлевой модуль личинки для начальной загрузки isos, и когда я загружаюсь с безопасной начальной загрузкой на, безопасная начальная загрузка запрещает личинке загрузку петлевого модуля. Так, я не могу загрузиться

Кто-либо смог загрузить ISO от личинки с безопасной начальной загрузкой на?

Спасибо

valerio

2
задан 30 June 2015 в 12:50

2 ответа

Я пытаюсь работать вокруг этого в данный момент.

похоже, что личинка человечности была явно исправлена для предотвращения загрузки модулей во время безопасной начальной загрузки. Сообщение об ошибке немного бесполезно: это смутно ссылается на имя файла, когда ошибка происходит независимо от того, какой модуль загружается:

apt-get source grub-common
   ...
grep -C 10 "Secure Boot forbids" -r .
   ...
#ifdef GRUB_MACHINE_EFI
  if (grub_efi_secure_boot ())
    {
      grub_error (GRUB_ERR_ACCESS_DENIED,
                  "Secure Boot forbids loading module from %s", filename);
      return 0;
    }
#endif
...

патч, который добавляет это, является./debian/patches/no_insmod_on_sb.patch

, Ваш лучший выбор состоит в том, чтобы, вероятно, восстановить личинку или петлевая поддержка жесткого кодирования или разрешение загрузки модулей, или возможно можно просто отключить безопасную начальную загрузку при начальной загрузке от usb (так как это имеет тенденцию быть вполне редким действием).

последствия безопасности разрешения личинки к загрузочным модулям являются скорее сложными, таким образом, я собираюсь постараться не комментировать их, потому что кто-то немедленно скажет мне, что я неправ, и у нас должен будет быть аргумент.

3
ответ дан 2 December 2019 в 02:56

Похоже, что текущие версии подписанного образа grub (по крайней мере, та, которую я тестировал, которая поставляется с Ubuntu 20.04) содержат модуль loopback, поэтому нет необходимости загружать/вставлять его. На самом деле это невозможно, как уже отмечалось в ответе выше. Я публикую конфигурацию, которую использовал для создания внешнего диска, который может загружать установочную/живую среду Ubuntu и установку Windows 10.

В итоге я использовал несколько разделов: EFI на 512 МБ, NTFS на 20 ГБ для распакованных файлов Windows и большой раздел FAT32 для всего остального, включая Ubuntu ISO. Файл NTFS необходим, так как Windows теперь включает установочные файлы размером более 4 ГБ. Я не думаю, что на данный момент подписанный образ grub включает модуль exfat, поэтому NTFS — единственный вариант. В качестве примечания: распакованные файлы Windows должны находиться в корне раздела, их размещение в подкаталоге мне не помогло.

Ниже показана конфигурация, которую я использовал для установки grub в раздел EFI:

sudo grub-install \
--boot-directory=[EFI mount point]/boot \
--efi-directory=[EFI mount point] \
--uefi-secure-boot \
--removable \
--target=x86_64-efi \
--no-bootsector \
/dev/sdaX

А вот файл grub.cfg (я думаю, что строки над первым пунктом меню избыточны, но это фактический конфиг, который я использовал):

search --no-floppy --set=root --fs-uuid [UUID of EFI partition]
set prefix=($root)'/boot/grub'
configfile $root/EFI/BOOT/grub.cfg

set menu_color_normal=white/black
set menu_color_highlight=black/light-gray

menuentry 'Ubuntu 20.04.1' --class ubuntu --class gnu-linux --class gnu --class os {        
    set isodir='/images/ubuntu'
    set isoname='ubuntu-20.04.1-desktop-amd64.iso'
    set isofile=$isodir/$isoname
    
    search --no-floppy --set=isodev --fs-uuid [UUID of FAT32 partition]

    loopback loop0 ($isodev)/$isofile
    linux (loop0)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet splash
    initrd (loop0)/casper/initrd
}

menuentry 'Windows 20H2' {
    set efi_path=/efi/boot/bootx64.efi
    
    search --no-floppy --set=windev --fs-uuid [UUID of NTFS partition]
    chainloader ($windev)/$efi_path
}

menuentry 'UEFI Firmware Settings' {
    fwsetup
}

И это все, надеюсь, кому-то это будет полезно.

0
ответ дан 24 November 2020 в 00:57

Другие вопросы по тегам:

Похожие вопросы: