Preseeding Ubuntu 16.04 для виртуальной машины Hyper-V не может установить раздел загрузки UEFI

Я создаю изображение Hyper-V (на Win10 и Win2016) Ubuntu с пакетом Packer. Машина строит отлично, и я могу загружать экспортированную виртуальную машину без проблем. Однако, если я создаю новую виртуальную машину с вновь созданным виртуальным жестким диском, она не сможет загрузиться с сообщением, сообщенным No x64-based UEFI boot loader was found

, которое я собрал из Packer , что это должно сделайте это с тем, что загрузочные файлы UEFI не записаны на диск в нужном месте.

Я обновил файл preseed для создания диска EFI и загрузочного диска, однако я не могу понять, что добавить в файл preseed или команду загрузки для установки необходимых файлов на EFI / загрузочных дисках, чтобы я мог использовать виртуальный жесткий диск с виртуальными машинами Gen 2 Hyper-V.

Конфигурация моего упаковщика выглядит следующим образом:

{ "variables": { "admin_username": "admin", "admin_password": "admin", "dir_deploy": null, "dir_http_user": null, "dir_scripts_user": null, "dir_temp": null, "iso_checksum": null, "iso_url": null, "vm_name": "not_really_a_vm_name", "vm_ram_size_in_mb": "2048", "vm_switch_name": "this_switch_does_not_exist", "vm_switch_vlan": "" }, "builders": [ { "boot_wait": "5s", "boot_command": [ "", "set gfxpayload=1024x768", "linux /install/vmlinuz ", "preseed/url=http://${NetworkHostIpAddressForPreseed}:{{.HTTPPort}}/preseed.cfg ", "debian-installer=en_US auto locale=en_US kbd-chooser/method=us ", "hostname={{.Name}} ", "fb=false debconf/frontend=noninteractive ", "keyboard-configuration/modelcode=SKIP keyboard-configuration/layout=USA ", "keyboard-configuration/variant=USA console-setup/ask_detect=false ", "initrd /install/initrd.gz", "boot" ], "communicator": "ssh", "enable_secure_boot": false, "generation": 2, "guest_additions_mode": "disable", "http_directory": "{{ user `dir_http_user` }}", "iso_url": "{{user `iso_url`}}", "iso_checksum_type": "sha256", "iso_checksum": "{{user `iso_checksum`}}", "iso_target_path": "{{ user `dir_temp` }}/packer", "output_directory": "{{ user `dir_temp` }}/{{ user `vm_name` }}", "ram_size": "{{user `vm_ram_size_in_mb`}}", "shutdown_command": "echo '{{user `admin_password`}}' | sudo -S -E shutdown -P now", "ssh_password": "{{user `admin_password`}}", "ssh_timeout": "4h", "ssh_username": "{{user `admin_username`}}", "switch_name": "{{user `vm_switch_name`}}", "type": "hyperv-iso", "vm_name": "{{ user `vm_name` }}" } ], "provisioners": [ { "type": "shell", "execute_command": "echo '{{user `admin_password`}}' | sudo -S -E sh {{.Path}}", "scripts": [ "{{ user `dir_scripts_user` }}/ubuntu/update.sh", "{{ user `dir_scripts_user` }}/ubuntu/network.sh", "{{ user `dir_scripts_user` }}/ubuntu/cleanup.sh", "{{ user `dir_scripts_user` }}/ubuntu/sysprep.sh" ] } ] }

И файл preseed выглядит так:

# preseed configuration file for Ubuntu. # Based on: https://help.ubuntu.com/lts/installation-guide/armhf/apbs04.html # # *** Localization *** # # Originally from: https://help.ubuntu.com/lts/installation-guide/armhf/apbs04.html#preseed-l10n # d-i debian-installer/locale string en_US.utf8 d-i console-setup/ask_detect boolean false d-i console-setup/layout string us d-i kbd-chooser/method select American English # # *** Network configuration *** # # Originally from: https://help.ubuntu.com/lts/installation-guide/armhf/apbs04.html#preseed-network # d-i netcfg/choose_interface select auto d-i netcfg/dhcp_failed note ignore d-i netcfg/dhcp_options select Configure network manually d-i netcfg/confirm_static boolean true d-i netcfg/get_hostname string unassigned-hostname d-i netcfg/get_domain string unassigned-domain d-i netcfg/wireless_wep string # # *** Account setup *** # # Originally from: https://help.ubuntu.com/lts/installation-guide/armhf/apbs04.html#preseed-account # d-i passwd/user-fullname string admin d-i passwd/username string admin d-i passwd/user-password password password d-i passwd/user-password-again password password d-i user-setup/encrypt-home boolean false d-i user-setup/allow-password-weak boolean true d-i user-setup/encrypt-home boolean false # # *** Clock and time zone setup *** # # Originally from: https://help.ubuntu.com/lts/installation-guide/armhf/apbs04.html#preseed-time # d-i clock-setup/utc boolean true d-i clock-setup/utc-auto boolean true d-i time/zone string UTC # # *** Partitioning *** # # Originally from: https://help.ubuntu.com/lts/installation-guide/armhf/apbs04.html#preseed-partman # d-i partman/choose_partition select finish d-i partman/confirm boolean true d-i partman/confirm_nooverwrite boolean true d-i partman-auto/method string lvm d-i partman-auto/purge_lvm_from_device boolean true d-i partman-lvm/device_remove_lvm boolean true d-i partman-lvm/device_remove_lvm_span boolean true d-i partman-lvm/confirm boolean true d-i partman-lvm/confirm_nooverwrite boolean true d-i partman-auto-lvm/guided_size string max d-i partman-auto-lvm/new_vg_name string system d-i partman-auto/choose_recipe select grub-efi-boot-root d-i partman-partitioning/confirm_write_new_label boolean true d-i partman/default_filesystem string ext4 d-i partman-auto/expert_recipe string \ grub-efi-boot-root :: \ 1 1 1 free \ $bios_boot{ } \ method{ biosgrub } \ . \ 256 256 256 fat32 \ $primary{ } \ method{ efi } \ format{ } \ . \ 512 512 512 ext4 \ $primary{ } \ $bootable{ } \ method{ format } \ format{ } \ use_filesystem{ } \ filesystem{ ext4 } \ mountpoint{ /boot } \ . \ 4096 4096 4096 linux-swap \ $lvmok{ } \ method{ swap } \ format{ } \ . \ 10000 20000 -1 ext4 \ $lvmok{ } \ method{ format } \ format{ } \ use_filesystem{ } \ filesystem{ ext4 } \ mountpoint{ / } \ . d-i partman-partitioning/no_bootable_gpt_biosgrub boolean false d-i partman-partitioning/no_bootable_gpt_efi boolean false # enforce usage of GPT - a must have to use EFI! d-i partman-basicfilesystems/choose_label string gpt d-i partman-basicfilesystems/default_label string gpt d-i partman-partitioning/choose_label string gpt d-i partman-partitioning/default_label string gpt d-i partman/choose_label string gpt d-i partman/default_label string gpt # Keep that one set to true so we end up with a UEFI enabled # system. If set to false, /var/lib/partman/uefi_ignore will be touched d-i partman-efi/non_efi_system boolean true # # *** base system installation *** # # Originally from: https://help.ubuntu.com/lts/installation-guide/armhf/apbs04.html#preseed-apt # d-i base-installer/kernel/override-image string linux-server # # *** Package selection *** # # originally from: https://help.ubuntu.com/lts/installation-guide/armhf/apbs04.html#preseed-pkgsel # tasksel tasksel/first multiselect standard, ubuntu-server # Minimum packages (see postinstall.sh). This includes the hyper-v tools d-i pkgsel/include string openssh-server ntp linux-tools-$(uname -r) linux-cloud-tools-$(uname -r) linux-cloud-tools-common d-i pkgsel/upgrade select none d-i pkgsel/update-policy select none d-i pkgsel/install-language-support boolean false # # Boot loader installation # d-i grub-installer/only_debian boolean true d-i grub-installer/with_other_os boolean true d-i grub-installer/bootdev string /dev/sda # grub-install –target=x86_64-efi –efi-directory=/boot/efi –no-nvram –removable # # *** Preseed other packages *** # d-i debconf debconf/frontend select Noninteractive d-i finish-install/reboot_in_progress note choose-mirror-bin mirror/http/proxy string

1
задан 13 September 2017 в 23:48

3 ответа

Добавив следующую строку в файл preseed, GRUB установит загрузчик UEFI в раздел efi

d-i grub-installer/force-efi-extra-removable boolean true

. При добавленной строке загрузочный загрузчик UEFI заканчивается значением виртуального жесткого диска что можно повторно использовать диск отдельно от конфигурации виртуальной машины.

1
ответ дан 22 May 2018 в 18:29

Добавив следующую строку в файл preseed, GRUB установит загрузчик UEFI в раздел efi

d-i grub-installer/force-efi-extra-removable boolean true

. При добавленной строке загрузочный загрузчик UEFI заканчивается значением виртуального жесткого диска что можно повторно использовать диск отдельно от конфигурации виртуальной машины.

1
ответ дан 18 July 2018 в 06:55

Добавив следующую строку в файл preseed, GRUB установит загрузчик UEFI в раздел efi

d-i grub-installer/force-efi-extra-removable boolean true

. При добавленной строке загрузочный загрузчик UEFI заканчивается значением виртуального жесткого диска что можно повторно использовать диск отдельно от конфигурации виртуальной машины.

1
ответ дан 24 July 2018 в 18:41
  • 1
    Правильно ли я полагаю, что использование последнего подхода позволит мне использовать безопасную загрузку? – Petrik 26 September 2017 в 21:32
  • 2
    Да, он должен это делать. Обратите внимание, что я редактировал код, поскольку то, что у меня было раньше, было неправильным. Я также вижу странную проблему, когда изображения, созданные с образа диска, загружаются с помощью черного экрана, но, похоже, работают в дальнейшем. – Peter Russell 27 September 2017 в 17:45
  • 3
    Я, наконец, протестировал это, и он работает как рекламируемый. Я исправил неверный путь в примере, когда отсутствовал раздел /efi. – Petrik 5 January 2018 в 09:41

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

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