16
августа
2023
Использование Virtualbox с USB флешкой
17:35

Использование Virtualbox с USB флешкой

16 августа 2023 17:35

Обычно при создании виртуальной машины в Oracle VM выбирают ISO-файл с образом загрузочной флешки. Но можно и использовать для загрузки в VM физический носитель - USB диск с записанной на неё операционной системой Live CD.

Системные требования

1. Для Oracle VirtualBox 6.x и 7.x требуется аппаратная поддержка процессором опции для аппаратной виртуализации VT-X.

  • процессор Intel произведён позднее 2011 года ("Sandy Bridge" и новее). Например компанией Intel Core i5-3330 был выпущен в 2012 году с поддержкой VT-X для Socket 1155.
  • практически все Intel Atom.
  • Pentium Dual-Core E5500 независимо от маркировки, некоторые E5300, E5400 для Socket 775.
  • Core 2 Duo "Conroe" E6300...E6850 ядром Wolfdale-2M. В BIOS должен быть пункт меню "Virtualization technology" - включите его.

Не поддерживают виртуализацию VT-X процессоры Intel® Core 2 Duo "Allendale" E4300...E4700 и Intel® Pentium® D Processor 945, Pentium® Dual-Core E2200 и Celeron выпуска до 2010 года.

У AMD технология аппаратной виртуализации называется AMD-V™.
Она реализована в процессорах AMD Athlon 64 ("Orleans"), Athlon 64 X2 ("Windsor"), Athlon 64 FX ("Windsor"), Athlon 64 и Athlon 64 X2 семейство процессоров степингов "F" или "G" для сокета AM2, Turion 64 X2 и Opteron 2-го и 3-го поколений, Phenom и Phenom II.
Естественно, поддерживают аппаратную виртуализацию все процессоры AMD Ryzen (архитектур Zen, Zen 2, Zen 3, Zen 4).

Узнать модель процессора можно командой:

sudo lshw -class cpu

Затем свериться с сайтом производителя, узнав о поддержке VT-X. Если процессор не поддерживает VT-X, нужно откатиться на Oracle VirtualBox версии 5.22 (см. последний параграф).

В BIOS или UEFI BIOS пункт меню для включения виртуализации называется "Virtualization technology" или SVM или VT-X - его надо включить - Enabled. Также желательно наличие виртуализации VT-D для проброса портов ввода-вывода и устройств PCI (Аналог IOMMU у AMD).

2. Требуется поддержка процессором инструкций SSE2 (Streaming SIMD Extensions 2). Поддерживается большинством процессоров - класса железа IA-32 также обозначаемый i486, i586 и i686 или новее (x64): практически все процессоры Intel и AMD. Данные инструкции не реализованы в процессорах до Athlon 64 (например, Athlon XP).

Способы запуска

1) На флешке хранится ISO-файл загрузочного диска, а на локальном жестком диске создается файл виртуального жесткого диска (например, VHD). Загрузочный файл ISO выбирается в Oracle VM при создании виртульной машины и затем выполняется загрузка VM с ISO-файла и запуск в Live-режиме или установка операционной системы.

Достоинство: на флешке можно хранить несколько файлов ISO.
Недостаток: для каждой VM нужно создавать свой виртуальный жесткий диск, что накладно при использовании SSD-диска, т.к. тратится свободное место.

2) Загрузочная флешка - подготовленный загрузочный диск запускается в Oracle VM. Физический диск - "флешка" с образом системы используется при помощи файла VMDK как SATA 0 контроллер.

Достоинство: экономия места на жестком диске, информация хранится только на flash-накопителе.
Недостаток: сложнее первоначальная инициализация (см. ниже) и ниже скорость обращения, чем с локальным SSD.

3) Загрузочная флешка используется не в Oracle VM, а непосредственно на "железе" - при старте компьютера выбиратся Boot menu - F9 или F12 (или в меню BIOS указыватеся приоритет запуска с Removable dev.), затем стартует операционная система с флешки.

Достоинство: обещана загрузка чуть ли не на любом ПК при выборе запуска с USB, некоторые дистрибутивы Linux (antiX) поддерживаеют persistance (хранение данных сессии на флешке). Экономия места на диске.
Недостаток: не все компьютеры умеют загружаться с USB флеш, некоторые старые умеют только с CD/DVD. Необходимость манипуляции с Boot Menu при старте ПК.

Лучшие способы создания загрузочной флешки

Кроме копирования dd if=some.iso of=/dev/sdc bs=1M, существуют два новых способа:

В Windows - программа rufus:

В Linux:

Какую версию дистрибутива выбрать для гостевой ОС - x86 или x64?

Если ОС хозяина - хоста имеет полноценную поддержку x64 и процессор современный - поддерживает аппаратную виртуализацию VT-X или AMD-V - можно смело выбирать ОС x64 (файл ISO в имени файла содержит пометку "x64").

Если ОС типа x86 или процессор не поддерживает VT-X, приходится выбирать версии i386 - i486 или i686 (файл ISO обычно в имени файла содержит пометку "x86").

Установка VirtualBox из репозитория Ubuntu 22.04 для процессоров с VT-X

Если процессор поддерживает аппаратную виртуализацию, с ядром 5.15 будет работать VirtualBox 6.1 из репозитория Ubuntu или Linux Mint.

Установка VirtualBox 6.1 (переустановка) проста:

sudo apt update
sudo apt install --reinstall linux-headers-$(uname -r) virtualbox-dkms dkms virtualbox-qt
sudo reboot

После перезагрузки, от имени суперпользователя выполняем команду загрузки модуля

sudo modprobe vboxdrv

Теперь можно запускать virtualbox либо в меню, либо командой консоли

virtualbox

Если при запуске виртуальной машины возникает ошибка VT-x is not available (VERR_VMX_NO_VMX). Код ошибки: NS_ERROR_FAILURE (0x80004005), значит процессор не поддерживает аппаратную виртуализацию VT-X. Проблему решить можно апгрейдом материнской платы и процессора.

Отказ от VirtualBox 6 и установка VirtualBox 7 для новых процессоров с VT-X

Данный способ актуален для ОС 22.04 и выше, для процессоров с поддержкой VT-X или AMD-V.
Если устанавливаеть VirtualBox из репозитория (apt install virtualbox), установится VirtualBox 6.1.
Тогда как более новая версия Oracle Virtualbox 7.0 вышла 18 июля 2023.

Деинсталлируем virtualbox любой версии

sudo apt remove --purge virtualbox virtualbox-guest-utils

Подробная статья по установке VirtualBox 7.0 на английском языке.

sudo apt update
sudo apt upgrade
sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https curl -y

Импортируем ключ gpg для репозитория

curl -fSsL https://www.virtualbox.org/download/oracle_vbox_2016.asc | gpg --dearmor | sudo tee /usr/share/keyrings/virtualbox.gpg > /dev/null

Для Ubuntu 22.04 "jammy" и производных от неё ОС:

echo deb [arch=amd64 signed-by=/usr/share/keyrings/virtualbox.gpg] http://download.virtualbox.org/virtualbox/debian jammy contrib | sudo tee /etc/apt/sources.list.d/virtualbox.list

Для Ubuntu 20.04 "focal" и производных от неё ОС:

echo deb [arch=amd64 signed-by=/usr/share/keyrings/virtualbox.gpg] http://download.virtualbox.org/virtualbox/debian focal contrib | sudo tee /etc/apt/sources.list.d/virtualbox.list

Устанавливаем версию 7.0

sudo apt update
sudo apt install virtualbox-7.0 linux-headers-$(uname -r) dkms virtualbox-dkms build-essential module-assistant -y

Запускаем службу "vboxdrv":

sudo systemctl enable vboxdrv --now

Включаем в ядре драйвер VM:

sudo modprobe vboxdrv

Удаляем следы драйверов старой VM. Иначе ошибка несоответствия версии драйверов и версии VM

sudo mv /lib/modules/$(uname -r)/updates/dkms/vbox* /tmp

где $(uname -r) подставляет версию ядра, например 5.15.0-79.

Установка драйверов новой Oracle VM (!)

sudo /sbin/vboxconfig

Создание VM при использовании ISO-файла

  • Запускаем Oracle VM
  • меню "Машина" - "Создать"
  • указываем имя, например "winxp"
  • папку оставляем по умолчанию (/home/имя_пользователя/VirtualBox VMs)
  • выбираем ISO-образ, например, winxp.iso
  • далее.

Создание VM при использовании загрузочной флешки

Создаём файл типа VMDK для связи с физической флешкой.

lsblk

По объёму диска находим флешку и смотрим имя - sdb или sdc.

Версия 5.2

Доступ к физическому устройству с помощью параметра RawDisk не поддерживается. (Способ с VMDK бесполезен.) Возможно лишь создание виртуального жесткого диска VDI или VHD на локальном жестком диске компьютера с установкой ОС с обычного ISO-файла).

Версия 6.0

VBoxManage internalcommands createrawvmdk --filename=~/usb.vmdk  --rawdisk /dev/sdc

либо

VBoxManage internalcommands createrawvmdk --variant RawDisk --format=VMDK --filename=~/usb.vmdk --property RawDrive=/dev/sdc

где /dev/sdc имя заменяем на свой случай, например, может быть /dev/sdb.

Версия 7.0 имеет новый синтаксис команды - параметр "createmedium":

VBoxManage createmedium --variant RawDisk  --format=VMDK --filename=~/usb.vmdk --property RawDrive=//dev/sdc
  • Запускаем в меню Пуск - Системные - Oracle VM Virtualbox
  • меню "Машина" - "Создать"
  • в пункте "Образ ISO" ничего не выбираем
  • остальные пункты по логике
  • далее, далее

Использовать существующий виртуальный жесткий диск - выбираем

  • usb.vmdk

Права

sudo addgroup vboxusers
sudo usermod -a -G vboxusers vladimir
sudo usermod -a -G disk vladimir

Настройка параметров VM

Можно отключить виртуализацию в самой VM и изменить работу со страницами памяти

VBoxManage modifyvm usb --hwvirtex off --nestedpaging off

где usb - имя виртуальной машины.

Указание использовать для ВМ одно ядро процессора:

VBoxManage modifyvm usb --cpus 1

где usb - имя виртуальной машины.

Миграция на VirtualBox 5.2 для старых процессоров без VT-X

В версих 6.0 и 7.0 на процессорах без аппаратной виртуализации (или при выключенном соответствующем параметре BIOS) выдается ошибка VERR_CMX_NO_VMX. Единственный выход - откатить версию до 5.2.

Virtualbox 5.2 для Ubuntu 18.04 "Bionic Beaver" вышла в июле 2020 года, во времена ядер 5.0 - 5.6. VirtualBox 5.2 можно запустить максимум только в (https://linuxmint.com/edition.php?id=278)[Linux Mint 19.3 "Tricia"] (19.3 Mate) или ОС Ubuntu 20.04 (пока поддерживается - до апреля 2025) или российской ОС Linux Lite 5.6, разработанной на базе Ubuntu 20.04.
В последней Linux Mint 22.04 не запускается ни ядро 5.6, ни VirtualBox 5.2.
В версии 5.2 нет возможности подключиться к физической флешке как к RAW устройству (главня тема данной статьи), возможна лишь (https://www.virtualbox.org/manual/ch01.html#intro-starting-vm-first-time)[установка ОС из ISO-файла] на виртуальный жесткий диск.

1) Перед установкой VirtualBox 5.2, необходимо удалить следы старой версии VirtualBox 6 или 7

sudo apt remove virtualbox-6.1 virtualbox-7.0
sudo mv /lib/modules/$(uname -r)/updates/dkms/vbox* /tmp

2) Скачать VirtualBox 5.2 (для Ubuntu 18.04 / 18.10 / 19.04).

3) Установить зависимости для VirtualBox 5.2 - библиотеку libvpx5 и среду программирования python 2.7.

sudo apt update
sudo apt install ca-certificates
wget http://ftp.de.debian.org/debian/pool/main/libv/libvpx/libvpx5_1.7.0-3+deb10u1_amd64.deb
sudo dpkg -i libvpx5_1.7.0-3+deb10u1_amd64.deb

Проверил версию python:

python -v

Если python 2 не установлен (по умолчанию в Linux Mint 19.3 он есть и установка не требуется), устанавливаем его:

sudo apt install python2

Версия python должна быть 2.7.
Если основной пакет virtualbox не устанавливается без ошибок, может помочь команда sudo apt install python-is-python2.

Последняя зависимость, которую необходимо разрешить вручную - библиотека libqt5opengl5:

sudo apt install libqt5opengl5

5) Установка ядра 5.0, 5.4, 5.6 или 5.10 для VirtualBox 5.2

В Linux Mint 19.3 "Tricia" ядро по умолчанию установлено 5.0 - подходит для VirtualBox. Ничего устанавливать не нужно.
Пакеты, идущие в комплекте с ОС Linux Mint 19.3:

  • linux-headers-5.0.0-32
  • linux-headers-5.0.0-32-generic
  • linux-image-5.0.0-32-generic
  • linux-modules-5.0.0-32-generic
  • linux-modules-extra-5.0.0-32-generic.
  • linux-tools-5.0.0-32-generic

Ядро 5.4 устанавливать не нужно. Тем не менее, VirtualBox запуститься и с ядром 5.4, которое можно установить из пакетов:

  • linux-headers-5.4.0-100
  • linux-headers-5.4.0-100-generic
  • linux-image-5.4.0-100-generic
  • linux-modules-5.4.0-100-generic
  • linux-modules-extra-5.4.0-100-generic.
  • linux-tools-5.4.0-100-generic

В Ubuntu 20.04 (Linux Lite 3.6) можно обновить ядро Linux Kernel до версии 5.6: в "Менеджере обновлений" - Вид - Ядра Linux устанавливаем ядро 5.6 (linux-image-5.6.0-1028-oem). Либо в Synaptic устанавливаем пакеты:

  • linux-headers-5.6.0-1028-oem
  • linux-image-5.6.0-1028-oem
  • linux-modules-5.6.0-1028-oem
  • linux-modules-extra-5.6.0-1028-generic.
  • linux-tools-5.6.0-1028-oem

Установка ядра Linux Kernel 5.10 возможна в Linux 20.04: в "Менеджере обновлений" - Вид - Ядра Linux устанавливаем ядро 5.10 (linux-image-5.10.0-1016-oem). Либо в Synaptic устанавливаем пакеты:

  • linux-headers-5.10.0-1016-oem
  • linux-image-5.10.0-1016-oem
  • linux-modules-5.10.0-1016-oem
  • linux-modules-extra-5.10.0-1016-generic.
  • linux-tools-5.10.0-1016-oem

Данная операция возможна лишь на Ubuntu 20.04 и ниже, например на 19.04, 18.10, 18.04 или 16.04. В последней Ubuntu 22.04 или Linux Mint 21.x - старые ядра не работают из-за неудовлетворенных зависимостей.

Если обновили ядро, выполняем перезагрузку и в меню Grub2 в дополнительных параметрах запуска выбираем ядро 5.4, 5.6 или 5.10:

sudo reboot

Выбираем ядро 5.0, 5.4, 5.6 или 5.10 нажимаем Enter.

Если после загрузки ядер выше 5.0 разрешение 640 x 480, а не то, что ожидалось, редактируем /etc/default/grub, добавляем в него строку
GRUB_GFXMODE=1280x1024 # разрешение вашего монитора

После чего выполняем
sudo update-grub

И ещё раз перезагружаем ПК с выбором того же ядра. Теперь разрешение дисплея нормальное.

6) Установка Virtual Box 5.2
Удаляем предыдущую установку VirtualBox 5.2, если он оказался не настроенным (с ошибками).

sudo apt --fix-broken install

Устанавливаем virtualbox командой:

sudo ~/Загрузки
sudo dpkg -i virtualbox-5.2_5.2.44-139111~Ubuntu~bionic_amd64.deb

7) Устанавливаем драйверы ядра для virtualbox 5.2 в ядро.

sudo /sbin/vboxconfig

8) Проверки:

lsmod | grep vbox
sudo systemctl status vboxdrv

9) Запуск производится через меню "Пуск" (поиск по наименованию VirtualBox).
Или из командной строки:

 virtualbox

virtualbox => Справка => О программе показывает версию 5.2.44.

В VirtualBox 5.2 и процессоре без поддержки VT-X в виртуальной машине возможна установка ОС только 32-bit версий дистрибутивов (i386 - i486 - i586 - i686).


Источники:

Документация:



Похожие публикации