Пользовательский образ Ubuntu не работает после обновления Grub (при использовании UEFI)

Поэтому я работаю над созданием пользовательского образа Ubuntu 16.04.5. Я следую инструкциям здесь, чтобы войти в файловую систему, которая устанавливается на компьютеры, и делаю apt update && apt full-upgrade, После этого я упаковываю все в ISO и использую это для создания образа компьютера. Я делаю большую часть своего тестирования в VirtualBox, и когда я говорю ВМ для загрузки с использованием UEFI, установка Ubuntu выдает мне ошибку:

The 'grub-efi-amd64-signed' package failed to install into /target/.
Without the GRUB boot loader, the installed system will not boot.

Поэтому я вернулся в среду chroot, установил пакет 'grub-efi-amd64-подписанный' (в процессе установки нет подключения к Интернету), и все в порядке. Это работало хорошо для меня до недавнего времени. Теперь, после установки, я перешел в командную строку Grub.

Теперь кажется, что есть обновление для Grub2; от 2.02~beta2-36ubuntu3.18 до 3.19. Если я не установлю это обновление, я не смогу использовать UEFI из-за этой ошибки. Если я установлю "grub-efi-amd64-подписанный", то if заставит другие пакеты Grub обновиться. Если я действительно установлю этот пакет и все обновления, то компьютер загрузится в командную строку Grub. Я действительно не знаю, с чего начать это исправить. Что я могу сделать, чтобы обновить Grub и устранить проблему?

Может ли это быть из-за того, что ISO использует предыдущую версию Grub?

РЕДАКТИРОВАТЬ: Что-то еще, что я заметил. Я могу заставить все установить (и загрузиться) правильно, если я удерживаю apt-mark на следующих пакетах:

linux-generic-hwe-16.04
linux-image-generic-hwe-16.04
linux-headers-generic-hwe-16.04
linux-signed-generic-hwe-16.04
grub-common
grub2-common

После этого я могу apt full-upgrade, создайте ISO и выполните установку... Так почему же он ломается, когда я обновляю ядро ​​и Grub?

FWIW, вот мой файл preseed:

### Localization
d-i debian-installer/locale                       string en_US
d-i console-setup/ask_detect                      boolean false
d-i console-setup/layoutcode                      string us


### Network Configuration
d-i netcfg/dhcp_timeout                           string 300
d-i netcfg/dhcp_failed                            note
d-i netcfg/dhcp_options                           select Do not configure the network at this time
d-i netcfg/get_hostname                           string dev
d-i netcfg/get_domain                             string example.com


### Account Setup
d-i passwd/user-fullname                          string User
d-i passwd/username                               string user
d-i passwd/user-password-crypted                  password $6$...
d-i user-setup/allow-password-weak                boolean true
d-i user-setup/encrypt-home                       boolean false


### Clock and Time Zone Setup
d-i clock-setup/utc                               boolean true
d-i time/zone                                     string US/Eastern
d-i clock-setup/ntp                               boolean true


### Partitioning and Encryption
# Use LVM for encryption
d-i partman-auto/method                           string crypto

# Suppress LVM and RAID warnings about previous configurations
d-i partman-lvm/device_remove_lvm                 boolean true
d-i partman-md/device_remove_md                   boolean true

# Confirm writing on existing partitions
d-i partman-lvm/confirm                           boolean true

# Use the entire logical volume
d-i partman-auto-lvm/guided_size                  string max

# Have all files on this partition only
d-i partman-auto/choose_recipe                    select atomic

# Specify ext4 since the default is ext3
d-i partman/default_filesystem                    string ext4

# Begin the partitioning without user interaction
d-i partman-partitioning/confirm_write_new_label  boolean true
d-i partman/choose_partition                      select finish
d-i partman/confirm                               boolean true
d-i partman/confirm_nooverwrite                   boolean true

# Use the encryption key to perform the encryption
partman-crypto partman-crypto/passphrase          string password
partman-crypto partman-crypto/passphrase-again    string password

# Agree to use weak passphrase and confirm if prompted
partman-crypto partman-crypto/weak_passphrase     boolean true
partman-crypto partman-crypto/confirm             boolean true


### Package Selection
tasksel tasksel/first                             multiselect standard
tasksel tasksel/first                             multiselect ubuntu-desktop
d-i pkgsel/updatedb                               boolean false


### Boot Loader Installation
d-i grub-installer/only_debian                    boolean true


### Finishing Up the Installation
ubiquity ubiquity/reboot                           boolean true

1 ответ

Я полагаю, что вы столкнулись с той же проблемой, найденной здесь: 16.04 новая установка дает grub-efi-amd64-подписанную неудачную установку /target/ ubuntu 16.04 в конце

Я думаю, вам нужно создать раздел / boot / efi вручную и пометить его загрузочным флагом. Мы столкнулись с этим недавно и решили с помощью семян, как показано ниже, при необходимости отредактируйте свой диск. Это создаст правильные разделы, использует весь диск (до 1000 ТБ) и подкачку (8 ГБ или 2xRAM):

d-i partman-auto/disk                            string /dev/sda
d-i partman-auto/method                          string crypto
d-i partman-lvm/device_remove_lvm                boolean true
d-i partman-lvm/device_remove_lvm_span           boolean true
d-i partman-auto/purge_lvm_from_device           boolean true
d-i partman-auto-lvm/new_vg_name                 string system
d-i partman-auto/expert_recipe string         \
   boot-crypto ::                             \
      1 1 1 free                              \
         $bios_boot{ }                        \
         method{ biosgrub } .                 \
      256 256 256 fat32                       \
         $primary{ } $lvmignore{ }            \
         method{ efi } format{ } .            \
      512 512 512 ext3                        \
         $primary{ } $bootable{ }             \
         method{ format } format{ }           \
         use_filesystem{ } filesystem{ ext3 } \
         mountpoint{ /boot } .                \
      2000 10000 1000000000 ext4              \
         $lvmok{ }                            \
         method{ format } format{ }           \
         use_filesystem{ } filesystem{ ext4 } \
         mountpoint{ / } .                    \
      8000 8000 200% linux-swap               \
         $lvmok{ }                            \
         method{ swap } format{ } .
d-i partman-lvm/confirm                          boolean true
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition                     select finish
d-i partman/confirm                              boolean true
d-i partman/confirm_nooverwrite                  boolean true
Другие вопросы по тегам