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

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

16 август 2023 17:35

Данная статья о том, как настроить на компьютере в ОС Linux Ubuntu / Mint / Debian виртуальную машину Oracle VirtualBox для прямого доступа к USB flash, для хранения на неё гостевой операционной системы.

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

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"), семейства процессоров для сокета AM2 - Athlon 64 и Athlon 64 X2 шагов версий "F" или "G", 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).

3. USB flash объёмом 8 ГБ или больше.

4. Подключение к Интернет для загрузки ISO-файла установочного диска гостевой ОС.

Способы запуска операционной системы с USB-носителя

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

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

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

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

Вариант №3. Загрузочная флешка используется не в Oracle VM, а непосредственно на "железе" - при старте компьютера нужно войти в загрузочное "Boot menu" нажатием при включении компьютера кнопки F9 или F12 (или зайти в меню BIOS Setup, где указать приоритет запуска HDD. Например, "HDD USB General Udisk"). Включаем ПК или перезагружаем ПК - ОС стартует с диска USB Flash. Данный вариант рассмотрен не будет, кроме совета по созданию загрузочной флешки в конце статьи.

Вариант №4 Специальные утилиты "Ventoy", "YUMI", "WinSetupFromUSB" и другие, для создания загрузочных флешек для нескольких операционных систем ("мультизагрузочная флешка") - виртуальная машина не используется, а система стартует как в варианте №3, но с возможность выбора операционной системы. Данный вариант не рассматриваю, т.к. интересует способ настройки виртуальной машины Linux для использования "флешки" как устройства хранения реальной ОС, а не ISO-образа.

Достоинство: простота реализации (только записать флешку при помощи dd или "Balena Etcher"), загрузка при выборе запуска с USB HDD на большинстве ПК, возможность "Постоянства" - "Persistence" (хранение данных сессии на флешке) в дистрибутиве дистрибутивах Linux antiX и MX Linux при специальной разметке в Rufus или MX_Live_USB_Maker. Экономия места на SSD-диске.
Недостатки: не все компьютеры умеют загружаться с USB flash, некоторые старые ПК умеют стартовать только с CD/DVD. Невозможность запуска на компьютере с BIOS флешки UEFI. Необходимость манипуляции с Boot Menu при старте ПК. Для записи флешки с Persistence нужно использовать не утилиты DD или "Balena Etcher", а rufus или MX_Live_USB_Maker. См. подробную статью про запись загрузочной USB флешки с постоянством.

В этой статье будет рассмотрен главным образом Вариант №2 — запуск виртуальной машины в Oracle VirtualBox с подготовленной USB флешки и файлом VMDK для эмуляции при помощи USB flash контроллера AHCI. Так называемый, "прямой доступ" к USB флеш из виртуальной машины. Живой образ машины хранится на флешке, файловая система которой имеет формат RAW.

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

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

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

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

Если процессор поддерживает аппаратную виртуализацию, с ядром 5.15 и выше будет работать VirtualBox 6.1 (Внимание! 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 reboot

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

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

Данный способ актуален для современных ОС Linux, для процессоров с поддержкой VT-X или AMD-V.

Если устанавливать VirtualBox из репозитория (apt install virtualbox), в версии Ubuntu 22.04 установится VirtualBox 6.1. Тогда как более новая версия Oracle Virtualbox 7.0 вышла 18 июля 2023.

Удаление Virtualbox 6.1:

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

Установка Oracle VirtualBox 7.0, 7.1 или 7.2 в Linux:

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 26.04 "Resolute"

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

  • Для Ubuntu 24.04 "Noble" и производных от неё ОС (Linux Green 22, Linux Mint 22).

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

  • Для Ubuntu 22.04 "jammy" и производных от неё ОС (Linux Green 21 "Victoria" на пакетной базе Ubuntu 22.04 LTS или Linux Mint 21):

    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

Версии VirtualBox 7.0-7.2 доступны для Debian 11-13: "Bullseye", "Bookworm", "Trixie".

Следующая команда выводит на экран имена пакетов репозитория, которые начинаются со слова "virtualbox":

sudo apt update
apt-cache search virtualbox | grep "^virtualbox*"

Установка зависимостей модулей ядер linux-headers:

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

Затем установка самого virtualbox, версии 7.0, 7.1 или 7.2

sudo apt install virtualbox-7.0

или

sudo apt install virtualbox-7.1

или

sudo apt install virtualbox-7.2

7.0 крупный мажорный выпуск. 7.1/7.2 расширяют совместимость с новыми релизами хост‑ОС и устраняют проблемы совместимости (особенно с новыми версиями macOS и Linux-ядра). Версия 7.2 — наиболее безопасная из трёх. Поэтому данная статья для версии 7.2.

После установки пакета "virtualbox-7.2", запускаю службу "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

Способ №1 - Создание VM при использовании ISO-файла и файла локальной виртуальной машины на жестком диске ПК

  • Запускаем приложение Oracle VirtualBox менеджер (команда терминала virtualbox или "Пуск" - "Все приложения" - "Oracle VirtualBox")
  • меню "Машина" - "Создать"
  • указываем имя, например "sparky" (образ гостевой ОС можно скачать с сайта SourceForge)
  • папку оставляем по умолчанию (/home/user/VirtualBox VMs)
  • выбираем ISO-образ, файл *.iso
  • Далее.

Способ №2 - Создание виртуальной машины при использовании загрузочной флешки

Создаём файл типа VMDK. Он будет имитировать контроллер AHCI на физической флешке формата RAW.

Подключаем чистую флешку объёмом 8 или 16 ГБ и ждем, пока будет показано содержимое (пустая папка).

Чтобы узнать имя устройства, выполняем команду:

lsblk

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

sdd      8:48   1   7,5G  0 disk 
└─sdd1   8:49   1   7,5G  0 part

Версия VirtualBox 5.2

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

Версия VirtualBox 6.0 - 6.1

sudo VBoxManage internalcommands createrawvmdk --filename=/home/user/usb_harddisk.vmdk  --rawdisk /dev/sdc

либо

sudo VBoxManage internalcommands createrawvmdk --variant RawDisk --format=VMDK --filename=/home/user/usb_harddisk.vmdk --property RawDrive=/dev/sdc

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

Версии VirtualBox 7.0, 7.1 и 7.2 имеют новый синтаксис команды - параметр "createmedium":

Выполняем в терминале команду:

sudo VBoxManage createmedium --variant RawDisk  --format=VMDK --filename=/home/user/usb_harddisk.vmdk --property RawDrive=//dev/sdc

Результат:

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Medium created. UUID: ab7b961b-b901-4d96-b676-ef5cdb13488e

Если файл usb_harddisk.vmdk уже существует, он не будет перезаписан и произойдет ошибка выполнения.
Каждый запуск sudo VBoxManage createmedium --variant RawDisk --format=VMDK создает новый идентификатор UUID,
который сохраняется в файле на жестком диске в текстовом файле /home/user/usb_harddisk.vmdk (с правами доступа только для root).

Запускаем Oracle VirtualBox от пользователя root
(Так как от обычного пользователя нет доступа к USB на запись через виртуальный контроллер SATA).

sudo VirtualBox
  • меню Oracle VirtualBox: "Машина" - "Создать"

deb01

  • придумываем имя виртуальной машины. В данном примере имя: sparky.
    deb02

  • в пункте "Образ ISO" ничего не выбираем

  • остальные пункты: Linux Debian (64 bit)

deb03

  • далее, далее, готово
    deb04

Изменим параметры только что созданной виртуальной машины: параметры - раздел "Носители".
deb05

Укажем наш носитель USB Flash и загрузочный ISO-файл.

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

  • *.vmdk (в данном примере он называется "usb_harddisk.vmdk") на локальном компьютере.

deb06

В результате контроллер vmdk для нашей USB Flash появится в настройках виртуальной мишины в разделе "Контроллер SATA":

deb07

Снимите галочки с Audio. Можно включить кеширование ввода-вывода.

deb08

Теперь подключим виртуальный привод CD/DVD для загрузки с ISO-образа гостевой ОС для её установки.

deb09

В окне добавьте привод нажатием на кнопку "Плюс" как показано на рисунке.

deb10

Выберите файл ISO образа загрузочного диска. В данном случае это Sparky Linux. Этим мы добавляем ISO в виртуальный привод CD/DVD.

deb11

Выбрать
deb12

CD/DVD загрузочный диск добавлен.
Удалим запись "Пусто" из контроллера IDE.
deb13

В виртуальный привод CD/DVD установлен загрузочный диск "Sparky Linux", все готово для запуска.
deb14
deb15
Запускаем виртуальную машину:

deb16

Шаги по установке Sparky в виртуальной машине оставлю без комментариев, т.к. из рисунков всё понятно.
deb17
deb18
deb19
deb20
deb21
deb22
deb23
deb24
deb25
deb26
deb27
deb28
deb29
deb30
deb31

Установка Sparky Linux на виртуальную машину, хранящуюся на USB Flash, прошла успешно!


Миграция на 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 можно запустить максимум только в 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).

Совет по варианту установки №3. Лучшие способы создания загрузочной флешки

Как сделать обычную загрузочною USB-флешку (для способа запуска №3, через загрузочное Boot-меню компьютера):

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

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

В Linux:

Приложение Balena Etcher записывает загрузочные USB flash в формате CD-R ISO9660 ("Только чтение"). Для записи USB флешки в функцией сохранения постоянства см. статью "Как записать загрузочный USB flash для antiX / MX Linux с Постоянством (persistence)".


Источники:

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


Дата последнего изменения: 01.06.2026



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