Загрузите физический диск с EFI в VirtualBox на хосте Ubuntu 18.04

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

Раньше я использовал загрузку с устаревшего BIOS на этой машине для двойной загрузки Ubuntu 16.04 и Windows 10 на трех жестких дисках. Я использовал GRUB для загрузки в Ubuntu на комбинации SSD и HDD, а Windows 10 на своем SSD, но я также мог загрузить этот диск с Windows 10 в виртуальной машине под Ubuntu.

Когда я обновился до Ubuntu 18.04, я переустановил как Ubuntu, так и Windows в режиме UEFI. Все работает, как ожидалось, за исключением того, что я больше не могу использовать физический диск Windows 10 в Virtualbox.

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

Я действительно не знаком с разделами загрузки EFI или тем, как они работают. Я даже не уверен, нужен ли мне раздел EFI для каждой операционной системы, но я хотел бы иметь возможность использовать диск Windows 10 на других машинах без жестких дисков Ubuntu.

Может кто-то сказать, что я делаю неправильно?

Вот моя конфигурация. /dev/sda – это мои точки монтирования home и var. sdc – это мой корень. sdb – это диск с Windows.

Диск /dev/sda: 931.5 GiB, 1000204886016 байт, 1953525168 сектор(ов)
Единицы: сектора по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 4096 байт
Размер I/O (минимум/оптимум): 4096 байт / 4096 байт
Тип метки диска: gpt
Идентификатор диска: 1D529F06-982A-4C10-86F1-9AABFA271304

Устройство          Начало        Конец    Секторы   Размер Тип
/dev/sda1        2048   16777215   16775168     8G Linux swap
/dev/sda2    16777216   25165823    8388608     4G Linux filesystem
/dev/sda3    25165824 1659922431 1634756608 779.5G Linux filesystem
*** ИГНОИРУЙТЕ ЭТИ РАЗДЕЛЫ ***
/dev/sda4  1659922432 1695938559   36016128  17.2G Linux filesystem
/dev/sda5  1695938560 1704327167    8388608     4G Linux filesystem
/dev/sda6  1704327168 1828964351  124637184  59.4G Linux filesystem
/dev/sda7  1828964352 1926782975   97818624  46.7G Microsoft basic data

Диск /dev/sdb: 238.5 GiB, 256060514304 байт, 500118192 сектор(ов)
Единицы: сектора по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимум/оптимум): 512 байт / 512 байт
Тип метки диска: gpt
Идентификатор диска: C76B0EBA-27D6-4FE0-A92F-F78276F26981

Устройство       Начало       Конец   Секторы   Размер Тип
/dev/sdb1     2048   1023999   1021952   499M Windows recovery environment
/dev/sdb2  1024000   1228799    204800   100M EFI System
/dev/sdb3  1228800   1261567     32768    16M Microsoft reserved
/dev/sdb4  1261568 500117503 498855936 237.9G Microsoft basic data

Диск /dev/sdc: 29.8 GiB, 32017047552 байт, 62533296 сектор(ов)
Единицы: сектора по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимум/оптимум): 512 байт / 512 байт
Тип метки диска: gpt
Идентификатор диска: D7616B5D-A0FA-4ACD-9122-DAB9BA2F21ED

Устройство      Начало      Конец  Секторы  Размер Тип
/dev/sdc1    2048   411647   409600  200M EFI System
/dev/sdc2  411648 62531583 62119936 29.6G Linux filesystem

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

На данное время я использую оболочку EFI для загрузки Windows.

Вы можете вручную запустить загрузчик, используя оболочку EFI: введите
fs0:, чтобы получить доступ к первой файловой системе, которая обычно является ESP. Введите cd
EFI{имя_ос}, где {имя_ос} – это название директории, в которой ваша
ОС установила свой загрузчик. (Вы не сказали, какую ОС вы
установили, поэтому я не могу точно сказать, что это. Ввод команды ls EFI покажет
вам, что там есть.) Запустите загрузчик, введя его имя. Опять же, я
не могу знать, что это. Для Linux это обычно grubx64.efi. Для
Windows это bootmgfw.efi.

Смотрите, как в ответе здесь:
Как выйти из оболочки EFI в виртуальных машинах

Вы также можете воссоздать физический диск, не включая раздел хоста.

При создании файла vmdk параметр -mbr не требуется, но
убедитесь, что вы НЕ включаете раздел, в котором находится хостовая ОС,
то есть включение всего физического диска в vmdk приведет к сбою. Моя окончательная
команда (с исключением раздела #3 хоста) была:

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe internalcommands
createrawvmdk -filename e:\VirtualBox\Ubuntu.vmdk -rawdisk
\.\PhysicalDrive0 -partitions 1,2,4,5,6,7

Источник:
https://stackoverflow.com/questions/34371180/virtualbox-fail-to-bootup-guest-from-gpt-physical-partition

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

Загрузка физического диска с EFI в VirtualBox на хосте с Ubuntu 18.04

Введение

Виртуализация операционных систем предоставляет значительную гибкость для пользователей, позволяя запускать несколько операционных систем на одном физическом устройстве. В вашем случае вы работаете с VirtualBox и хотите загрузить физический диск Windows 10 с поддержкой EFI на хосте, где установлена Ubuntu 18.04. Эта задача может быть сложной, особенно при переходе с BIOS на UEFI, поскольку необходимо правильно настраивать параметры виртуальной машины и учитывать нюансы работы с EFI.

Основные этапы для решения проблемы

  1. Создание виртуальной машины (VM) в VirtualBox:

    1. Запустите VirtualBox и создайте новую виртуальную машину.
    2. Выберите соответствующую версию Windows, соответствующую установленной версии Windows 10.
    3. Убедитесь, что вы выбрали тип "Linux" и версию "Ubuntu (64-bit)" для другой виртуальной машины, если создаете такую.
  2. Настройка параметров UEFI:

    1. В настройках виртуальной машины перейдите в раздел "Система".
    2. Убедитесь, что опция "Enable EFI" (включить EFI) активирована. Это позволит вашей виртуальной машине использовать UEFI вместо традиционного BIOS.
  3. Создание VMDK файла для физического диска:

    1. Для доступа к физическому диску Windows 10 необходимо создать формат VMDK, который будет ссылаться на ваш физический диск. Для этого выполните следующую команду в терминале:
      VBoxManage internalcommands createrawvmdk -filename /path/to/your/vmdk/file.vmdk -rawdisk /dev/sdb

      Обязательно замените /path/to/your/vmdk/file.vmdk на фактический путь, который вам нужен.

  4. Настройка прав доступа:

    1. Вам потребуется предоставить пользователю, под которым вы работаете, права на доступ к физическому диску. Для этого добавьте пользователя в группу vboxusers:
      sudo usermod -aG vboxusers $(whoami)
    2. После этого выполните перезагрузку системы, чтобы изменения вступили в силу.
  5. Добавление EFI загрузочной записи:

    1. При запуске виртуальной машины нажмите Delete, чтобы войти в меню EFI.
    2. Используйте команду для добавления нового загрузочного элемента:
      efibootmgr -c -d /dev/sdb -p 2 -L "Windows" -l "\EFI\Microsoft\Boot\bootmgfw.efi"
      • Здесь /dev/sdb – это диск Windows 10, а -p 2 указывает на номер EFI раздела.
  6. Загрузка через EFI оболочку (опционально):

    • Если загрузка не происходит автоматически, вы можете запустить загрузчик Windows вручную через EFI оболочку, используя приведенные инструкции:
      • Введите fs0: для доступа к первому файловой системе.
      • Далее введите команды cd EFI/Microsoft/Boot и bootmgfw.efi для запуска загрузчика Windows.

Рекомендации

  • Избегайте создания зеркала целого диска с использованием параметра -mbr, это может привести к несовместимости с виртуализацией. Убедитесь, что вы исключили все разделы, кроме необходимых для загрузки Windows.

  • Важно придерживаться структуры каталогов при работе с EFI, чтобы обеспечить правильное обнаружение различных загрузчиков. Поддерживайте текущие резервные копии системы для минимизации возможных рисков.

Заключение

Проблема с загрузкой Windows 10 в VirtualBox на хосте с Ubuntu 18.04 может быть решена с помощью ряда действий, описанных выше. Дальнейшая работа с EFI и физическими дисками в виртуальных машинах требует аккуратности в управлении разделами и файлами загрузки. Помните о важности быть осторожным при изменении конфигураций, так как ошибки могут привести к невозможности загрузки.

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

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