Вопрос или проблема
Я пытался обновить свой KVM гостевой Windows 10 до Windows 11, следуя официальной документации, и возникли некоторые проблемы:
- Процессор не поддерживается, и я пробовал Skylake, Broadwell и т.д., без успеха
- Windows 11 требует наличие компьютера с включенной безопасной загрузкой и UEFI. А моя ВМ работает на BIOS
- Windows 11 требует TPM 2.0
Пункт 3 был очень простым, но 1) и особенно 2) сложнее
Я работал с KVM на Ubuntu 22.04 и последней версией KVM из репозитория Ubuntu. Моя KVM-гостевая система – это Windows 10 с последними обновлениями и чипсетом q35. Все изменения вносились при выключенной ВМ, если не указано иное.
Проблемы, с которыми я столкнулся при обновлении до Windows 11, были следующими:
- Не поддерживается процессор
- Требуется безопасная загрузка
- Windows 11 требует версии TPM 2.0 или более поздней
Пункт три был первым, с чем я столкнулся, и это просто, вам просто нужно добавить оборудование TPM в вашу гостевую KVM-систему через графический интерфейс. Нажмите на TPM и установите версию 2.
Для пункта 1 это зависит от вашего реального оборудования, на сегодня (сентябрь 2022) ни один из 64-битных процессоров не подходит для установки Windows 11. Решением является выбор режима passthrough CPU, если ваш хост работает на процессе Intel 9-го поколения или новее.
Пункт 2 был более сложным. Вот шаги для решения этой проблемы:
- Переход с BIOS на UEFI
- Настройка безопасной загрузки для KVM.
- Решение проблемы с Apparmor, если она возникнет
1) Переход с BIOS на UEFI
С гостевой KVM Windows 10 версии 21H1 или новее откройте командную строку от имени администратора и введите из каталога Windows/system32 mbr2gpt /validate /allowFullOS
. Если результат успешен, то введите mbr2gpt /convert /allowFullOS
. Если вы видите сообщения об ошибках, начинающиеся с MBR2GPT в конце, игнорируйте их (для более точных инструкций и устранения неполадок смотрите эту страницу: https://geekflare.com/change-bios-mode-from-legacy-to-uefi/)
Если все прошло хорошо, выключите ВМ и продолжите с
2) Настройка безопасной загрузки для KVM
В Ubuntu 22.04 если у вас установлен KVM, это не обязательно, но проверьте директорию /usr/share/OVMF/. Если она существует и содержит много файлов с расширением .fd, все в порядке; иначе введите sudo apt install ovmf
.
Из терминала введите virsh edit <Domain Name>
и найдите запись <smm state="on"/>
внутри тэга features. Если ее нет, введите ее.
Теперь найдите тэг os и сделайте его таким:
<os>
<type arch="x86_64" machine="pc-q35-3.1">hvm</type>
<loader readonly='yes' secure="yes" type="pflash">/usr/share/OVMF/OVMF_CODE.fd</loader>
<nvram template="/usr/share/OVMF/OVMF_CODE.secboot.fd">/usr/share/OVMF/OVMF_CODE.secboot.fd</nvram>
<boot dev='hd'/>
<bootmenu enable="yes"/> //Может быть 'no', если хотите
</os>
Поскольку ВМ была на BIOS ранее, удалите запись <boot order="1"/>
внутри тэга disk, который находится внутри тэга devices. Теперь сохраните (ctrl+o) и выйдите (ctrl+x). Если все прошло успешно, появится что-то вроде “Конфигурация XML домена Domain Name отредактирована.”. Часть информации для этой настройки в Ubuntu взята с https://specs.openstack.org/openstack/nova-specs/specs/train/approved/allow-secure-boot-for-qemu-kvm-guests.html
Если все прошло успешно, гостевая система Windows 10 готова для перехода к обновлению до Windows 11. Однако, если есть проблема с apparmor, вот что я сделал, потому что попробовал другие решения, такие как переустановка apparmor, и это не сработало.
3) Решение проблемы с Apparmor, если возникнет
Просто при запуске ВМ возникает ошибка с Apparmor, не удается найти файл для libvirt-hard drive UUID. Решением является создание новой ВМ с использованием virsh или графического интерфейса с UEFI и безопасной загрузкой, добавив все необходимое оборудование (TPM 2.0 и passthrough CPU) и все другое оборудование, которое было на неработоспособной ВМ, но жесткий диск нужно использовать тот же, что и на неработоспособной. Если у вас есть решение этой проблемы, пожалуйста, помогите мне. В последний раз я решал проблему с apparmor, перенастраивая его, но я не помню шагов.
Запустите вашу ВМ с Windows 10 и следуйте официальным шагам. Надеюсь, это будет полезно.
Отличный ответ от George. Моя ситуация была достаточно другой, чтобы было полезно дать другой ответ.
Моя ситуация
- Гость на MBR
- Неподдерживаемый процессор
- Аппаратный TPM 1.2
- Хост на Ubuntu 22.04.5 LTS
Шаги
- Сделайте копию вашего хранилища Windows 10 для резервного копирования
- На текущей копии установите ключ реестра
AllowUpgradesWithUnsupportedTPMOrCPU
, как описано здесь или в других источниках. Это решает проблему неподдерживаемого процессора - Измените файловую систему на gpt (если нужно). Откройте терминал от имени администратора и введите
mbr2gpt /validate /allowFullOS
, а затемmbr2gpt /convert /allowFullOS
, как описал George - Выключите ВМ
- Если у вас на ВМ менее 40 ГБ свободного места, выполните следующее:
sudo qemu-img resize <имя вашего образа> +40G
затем используйте gparted для изменения размера вашего раздела C (узнайте в других источниках, как использовать gparted)
sudo udisksctl loop-setup -f <имя вашего образа>
gparted /dev/loop<что показала последняя команда>
sudo udisksctl loop-delete -b /dev/loop<что показала последняя команда>
- Теперь создайте новую ВМ в virt-manager повторно используя этот образ. Используйте настройки Windows 11 по умолчанию
- С помощью графического интерфейса virt-manager добавьте эмулированное оборудование TPM и измените настройку вашего хранилища на VirtIO, если ваш образ был использован.
- Перейдите на aka.ms/DownloadWindows11, выберите “Скачать образ диска Windows 11 (ISO) для x64 устройств” и сохраните ISO-файл в своей папке Загрузки (обратите внимание, что эта страница скачивания имеет странную последовательность из нескольких шагов, так что будьте внимательны)
- После загрузки ISO-файла щелкните правой кнопкой на него, чтобы смонтировать, затем дважды нажмите setup.exe. Следуйте инструкциям
.
Ответ или решение
Обновление виртуальной машины (VM) с Windows 10 до Windows 11 в KVM может быть сложной задачей из-за ряда технических требований, выдвигаемых новой операционной системой. Ваша проблема состоит в том, что вам необходимо решить три основные задачи: поддержка процессора, переход на безопасный загрузчик (Secure Boot) и реализация TPM 2.0. Рассмотрим, как справиться с каждым из этих вопросов.
Шаг 1: Поддержка процессора
Проблема поддержки процессора часто возникает из-за строгих требований Windows 11 к процессорам. Вам необходимо обеспечить поддержку "сквозного" режима процессора (CPU passthrough) на вашей хостовой машине, если у вас процессор Intel 9-го поколения или новее. Для этого в файле конфигурации вашей виртуальной машины измените тип процессора на "host-passthrough", что позволит использовать функциональные возможности вашего реального процессора.
Шаг 2: Переход с BIOS на UEFI и настройка Secure Boot
Windows 11 требует наличия UEFI и включения Secure Boot. Чтобы поддержать это:
-
Переход с MBR на GPT:
- Запустите гостевую OS (Windows 10) и откройте командную строку от имени администратора.
- Выполните команду
mbr2gpt /validate /allowFullOS
. Если проверка успешна, выполнитеmbr2gpt /convert /allowFullOS
.
-
Настройка UEFI в KVM:
- Убедитесь, что в системе установлены файлы OVMF, выполняя команду
sudo apt install ovmf
, если их нет. - Откройте конфигурацию виртуальной машины с помощью команды
virsh edit <Domain Name>
. - Измените секцию
<os>
и укажите загрузчик (<loader>
) в режиме UEFI и включите Secure Boot, используя файлы OVMF. - Удалите любые записи о загрузке в режиме BIOS.
- Убедитесь, что в системе установлены файлы OVMF, выполняя команду
Шаг 3: Реализация TPM 2.0
TPM 2.0 можно добавить через интерфейс virt-manager. Достаточно выбрать соответствующий тип TPM и добавить его в конфигурацию вашей виртуальной машины.
Шаг 4: Решение проблем с AppArmor (если они возникнут)
Если возникнут ошибки, связанные с AppArmor, например, при загрузке VM, вы можете создать новую виртуальную машину с аналогичными настройками (включая TPM и CPU) и указать её использовать тот же жёсткий диск, что и исходная VM.
Финальный Шаг: Обновление до Windows 11
После выполнения всех вышеуказанных шагов запустите виртуальную машину, загрузите ISO-образ Windows 11 с официального сайта Microsoft, смонтируйте его внутри гостевой OS и следуйте инструкциям по обновлению.
Этот процесс решает основные проблемы, связанные с обновлением Windows 10 до Windows 11 внутри KVM на платформе Ubuntu. Важно уделять внимание каждому этапу, так как соблюдение всех требований Windows 11 критично для успешного обновления.