virt-manager – Изменение прошивки ПОСЛЕ установки

Вопрос или проблема

virt-manager по умолчанию использует BIOS в качестве прошивки. Есть возможность изменить это на UEFI непосредственно перед установкой, после настройки тома.

before

Однако после установки выпадающее меню для изменения прошивки исчезает.

after

Установленная система загружается только с UEFI, а не с BIOS. Установка была сложной процедурой, и я хотел бы избежать повторения этого, если возможно.

Существует ли способ преобразовать прошивку в UEFI, сохранив содержимое системы (диска) нетронутым?

Вам необходимо отредактировать XML вашего виртуального компьютера с помощью virsh и добавить в секцию <os /> два элемента: <flash /> (ro efi) и <nvram /> (rw environment).

Вы можете прочитать другой предварительно настроенный файл для uefi, чтобы найти больше информации об этих двух флагах.

Похоже, вы разобрались со своей проблемой, но для ответа: вы не можете сделать это через интерфейс, потому что для существующей установленной виртуальной машины обычно нельзя переключиться с BIOS на UEFI так, чтобы все ‘просто работало’. Например, если вы установили Fedora, то способ настройки загрузки изначально зависит от того, была ли установка выполнена на BIOS или UEFI, поэтому изменение этой настройки на уровне виртуальной машины, вероятно, сделает виртуальную машину незагружаемой.
Если вы хотите изменить вашу прошивку, игнорируя предупреждение, измените начальный тег <os> на <os firmware="efi">. Это так просто.

Я повторно импортировал изображение qcow2, чтобы исправить проблему, следуя этому руководству:

На Archlinux я сначала установил:

sudo pacman -S edk2-ovmf

Затем:

Reconfigure
Edit

Наконец, файл конфигурации XML был изменен с:

<os>
    <type arch="x86_64" machine="pc-q35-7.2">hvm</type>
    <boot dev="hd"/>
</os>

на:

<os>
    <type arch="x86_64" machine="q35">hvm</type>
    <loader readonly="yes" type="pflash">/usr/share/edk2/x64/OVMF_CODE.fd</loader>
    <boot dev="hd"/>
</os>

Я только что узнал, что можно перемещать диск (файл с расширением qcow2) из одной виртуальной машины в другую. Просто создайте другую виртуальную машину и добавьте этот диск. Затем вы сможете сделать все, что вам нужно до установки.

Если вы хотите изменить вашу прошивку вопреки предупреждению Cole, измените начальный тег <os> на <os firmware="efi">. Это так просто.

У меня недостаточно репутации, чтобы оставить комментарий, поэтому я просто поделюсь своим опытом здесь.

Я попытался сделать то, что сказал @George Bungarzescu, но его теги, вероятно, устарели. Поэтому я скопировал настройки на новую машину, которая изначально настроена на работу с UEFI. Результат? Ошибка при загрузке:
Error
Я даже скопировал новый machine_VARS.fd для старого. Это не сработало.

Просто создайте новую виртуальную машину, как предложил @nomad, используйте тот же файл qcow2 и настройте свои uefi настройки соответственно.

[Ответ, специфичный для Ubuntu 24.04 (в моем случае Mint 22), поскольку пути к файлам отличаются]

Чтобы исправить это в моем случае, файлы прошивки UEFI находились в другом месте по сравнению с ArchLinux, о которых упоминается в других ответах и комментариях. На моей системе это были видимые графические опции при создании виртуальной машины:
скриншот опций virt-manager для создания новой виртуальной машины с прошивкой UEFI

Эти файлы предоставляются пакетом ovmf на моей системе.

Это фрагмент того, что virt-manager создал для меня для опции OVMF_CODE_4M.ms.fd. В моем случае меню загрузки также было включено – вы можете настроить это и порядок загрузки в графическом интерфейсе позже.

  <os>
    <type arch="x86_64" machine="q35">hvm</type>
    <loader readonly="yes" type="pflash">/usr/share/OVMF/OVMF_CODE_4M.ms.fd</loader>
    <bootmenu enable="yes"/>
  </os>

Для “стандартного” secboot (в сравнении с ms), местоположение pflash меняется на /usr/share/OVMF/OVMF_CODE_4M.secboot.fd.

После того, как вы сохраните свои изменения, в разделе <os> добавятся некоторые дополнительные детали автоматически. Вам не нужно вводить их вручную, система добавит их за вас.

  <os firmware="efi">
    <type arch="x86_64" machine="pc-q35-8.2">hvm</type>
    <firmware>
      <feature enabled='yes' name="enrolled-keys"/>
      <feature enabled='yes' name="secure-boot"/>
    </firmware>
    <loader readonly='yes' secure="yes" type="pflash">/usr/share/OVMF/OVMF_CODE_4M.ms.fd</loader>
    <nvram template="/usr/share/OVMF/OVMF_VARS_4M.ms.fd">/var/lib/libvirt/qemu/nvram/win10_VARS.fd</nvram>
    <bootmenu enable="yes"/>
  </os>

Ответ или решение

Как изменить прошивку в virt-manager с BIOS на UEFI после установки системы

Создание виртуальных машин с использованием virt-manager часто подразумевает выбор между типами прошивок BIOS и UEFI. По умолчанию используется BIOS, однако можно выбрать UEFI до инициирования установки. После установки возможность изменить прошивку через интерфейс virt-manager исчезает, что вызывает сложности, особенно если система уже готова к использованию только с UEFI.

Теоретическая основа

UEFI (Unified Extensible Firmware Interface) — это современная замена BIOS, обеспечивающая более быстрый старт системы и поддержку больших жестких дисков. Она также предоставляет возможности для безопасной загрузки и поддержки графического интерфейса.

Когда система устанавливается с одной прошивкой, например, с UEFI, загрузочные записи и схемы разделов создаются специально под эту прошивку. Если изменить прошивку с BIOS на UEFI после установки, система может стать непригодной для загрузки, поскольку настройки загрузки будут несовместимы с первоначальной архитектурой.

Практический пример: редактирование конфигурации XML

  1. Подготовка окружающей среды. Убедитесь, что пакеты, необходимые для работы с UEFI, установлены. Например, в Arch Linux для этого используется пакет edk2-ovmf.

    sudo pacman -S edk2-ovmf
  2. Редактирование XML файла виртуальной машины. Используйте команду virsh для редактирования XML-конфигурации.

    Убедитесь, что виртуальная машина остановлена:

    virsh shutdown <имя_виртуальной_машины>

    Откройте XML файл для редактирования:

    virsh edit <имя_виртуальной_машины>

    Найдите секцию <os> и измените её следующим образом:

    • Замените текущую строку <os> на <os firmware="efi">.
    • Добавьте параметры для загрузки с флеш памяти:
    <os firmware="efi">
        <type arch="x86_64" machine="q35">hvm</type>
        <loader readonly="yes" type="pflash">/usr/share/edk2-ovmf/x64/OVMF_CODE.fd</loader>
        <nvram>/var/lib/libvirt/qemu/nvram/<имя_виртуальной_машины>_VARS.fd</nvram>
        <bootmenu enable="yes"/>
    </os>
  3. Проверка и запуск виртуальной машины. После сохранения изменений и выходя из режима редактора, проверьте запуск виртуальной машины:

    virsh start <имя_виртуальной_машины>

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

Применение на практике

Изменив конфигурацию виртуалки, перейдите к тестированию интеграции новой прошивки UEFI с установленной операционной системой. Это может потребовать внесения изменений в загрузочные записи или даже использования утилит восстановления, таких как Boot-repair в окружении Linux.

Заключение

Переход с BIOS на UEFI на виртуальной машине после установки ОС позволяет сохранить данные и избежать повторной, трудоемкой установки. Тем не менее, рекомендуется всегда создавать резервные копии данных и XML конфигураций перед внесением критических изменений, поскольку манипуляции с настройками могут нести потенциальные риски для стабильной работы. Если все изменения выполнены правильно, результатом будет улучшенное функционирование и совместимость виртуальной машины с современными стандартами загрузки.

Оцените материал
Добавить комментарий

Капча загружается...