Пользовательский образ 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