VirtualBox (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
VirtualBox
. Дата последней синхронизации: 17 ноября 2020. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Ссылки по теме
VirtualBox/Install Arch Linux as a guest
Moving an existing install into (or out of) a virtual machine
Category:Hypervisors (Русский)
PhpVirtualBox
RemoteBox
VirtualBox
—
гипервизор
, предназначенный для запуска операционных систем в специальной среде, называемой
виртуальной машиной
, поверх существующей операционной системы. VirtualBox постоянно развивается и внедряет новые возможности. Взаимодействовать с виртуальными машинами можно как через графический интерфейс на базе
Qt
, так и с помощью
headless
- и
SDL
– утилит командной строки.
Для интеграции функций хостовой системы в гостевую систему, таких как: совместный доступ к папкам и буферу обмена, ускорение видео и бесшовная интеграция окон, – для некоторых гостевых ОС были разработаны
гостевые дополнения
(Guest Additions)
Установка
Установите VirtualBox по указаниям ниже, чтобы создавать и запускать виртуальные машины в Arch Linux.
Установка основных пакетов
Установите
пакет
virtualbox
. Кроме того, необходимо выбрать и установить пакет с host-модулями:
для ядра
linux
установите
virtualbox-host-modules-arch
,
для ядра
linux-lts
установите
virtualbox-host-modules-lts
,
для любого другого
ядра
установите
virtualbox-host-dkms
.
Для компиляции модулей VirtualBox
virtualbox-host-dkms
также необходимо установить соответствующий(е) header-пакет(ы) для установленного ядра (например,
linux-rt-headers
для
linux-rt
).
[1]
Благодаря
DKMS
-
хуку Pacman
модули
virtualbox-host-dkms
автоматически перекомпилируются после каждого обновления VirtualBox и/или ядра.
Подписывание модулей
При использовании нестандартного ядра с включённой опцией
CONFIG_MODULE_SIG_FORCE
необходимо подписать ваши модули ключом, сгенерированным во время компиляции ядра.
Перейдите в дерево каталогов вашего ядра и выполните:
# for module in `ls /lib/modules/$(uname -r)/kernel/misc/{vboxdrv.ko,vboxnetadp.ko,vboxnetflt.ko}` ; do ./scripts/sign-file sha1 certs/signing_key.pem certs/signing_key.x509 $module ; done
Примечание
Алгоритм хэширования может отличаться от указанного, но он должен быть встроен в ядро.
Загрузка модулей ядра для VirtualBox
virtualbox-host-modules-arch
и
virtualbox-host-dkms
используют службу
systemd-modules-load.service
для загрузки модулей VirtualBox при запуске системы. Если необходимо загрузить модули сразу после установки, то либо перезагрузитесь, либо однократно загрузите их вручную; список модулей можно найти в файлах
/usr/lib/modules-load.d/virtualbox-host-modules-arch.conf
,
/usr/lib/modules-load.d/virtualbox-host-modules-lts.conf
или
/usr/lib/modules-load.d/virtualbox-host-dkms.conf
.
Примечание
Если вы не хотите, чтобы происходила автоматическая загрузка модулей VirtualBox при запуске системы, замаскируйте файлы по умолчанию
/usr/lib/modules-load.d/virtualbox-host-modules-arch.conf
,
/usr/lib/modules-load.d/virtualbox-host-modules-lts.conf
или
/usr/lib/modules-load.d/virtualbox-host-dkms.conf
, создав пустой файл (или символическую ссылку на
/dev/null
) с таким же именем в каталоге
/etc/modules-load.d/
.
Среди используемых VirtualBox
модулей ядра
обязательным является
vboxdrv
. Если он не был загружен, то запуск виртуальных машин не получится.
Чтобы загрузить модуль вручную, выполните:
# modprobe vboxdrv
Следующие модули необходимы только в некоторых сложных конфигурациях:
vboxnetadp
и
vboxnetflt
необходимы для сетевых взаимодействий в режимах
bridged
и
host-only networking
. Если точнее,
vboxnetadp
позволяет создать в хостовой системе программный сетевой интерфейс через настройки VirtualBox, а
vboxnetflt
даёт виртуальной машине возможность его использовать.
Примечание
Если модули ядра для VirtualBox были загружены во время их обновления, то необходимо перезагрузить их вручную для использования обновлённой версии. Для этого выполните команду
vboxreload
с правами root.
Доступ к USB-устройствам хоста из гостевой ОС
Добавьте пользователя в
группу
vboxusers
, если необходимо предоставить ему доступ к USB-портам хоста из виртуальной машины.
Диск с гостевыми дополнениями
Также рекомендуется установить пакет
virtualbox-guest-iso
в хостовой системе. Он работает как образ диска, с которого можно установить гостевые дополнения, если гостевая система не Arch Linux. Файл
.iso
будет находиться в каталоге
/usr/lib/virtualbox/additions/VBoxGuestAdditions.iso
и может быть смонтирован внутри виртальной машины. После смонтирования можно запустить установщик в гостевой системе.
Расширения
Oracle VM VirtualBox Extension Pack
предоставляет
набор дополнительной функциональности
и распространяется под несвободной лицензией
только для личного пользования
. Расширения доступны в виде пакета
virtualbox-ext-oracle
AUR
или в скомпилированном виде в неофициальном репозитории
seblu
.
Более "традиционный" способ — скачать расширения самостоятельно и установить их либо через графический интерфейс (
File > Tools > Extension Pack Manager
), либо с помощью команды
VBoxManage extpack install <.vbox-extpack>
. Предварительно убедитесь, что у вас есть инструмент вроде
Polkit
для выдачи привилегированного доступа к VirtualBox. Установка расширений требует
прав root
.
Одна из возможностей из расширений – поддержка протокола удалённого рабочего стола (Remote Desktop Protocol). Эта часть функционала может быть получена с помощью
VNC Extension Pack
, если установить пакет
virtualbox-ext-vnc
.
Интерфейсы
Для VirtualBox разработано четыре интерфейса:
для использования стандартного графического интерфейса, выполните
VirtualBox
.
для запуска и управления виртуальными машинами через интерфейс командной строки, выполните
VBoxSDL
, который создаёт простое окно виртуальной машины без оверлеев.
для использования VirtualBox без отображения окон (например, на сервере), выполните
VBoxHeadless
. Расширение VRDP позволяет получить доступ к экрану виртуальной машины.
для удалённого управления виртуальными машинами, веб-служба VirtualBox (
vboxwebsrv
) позволяет пользоваться бэкендом со стороны сервера. Может быть использован с
RemoteBox
(графическая оболочка) или
phpVirtualBox
(веб-интерфейс).
Инструкции по созданиию виртуальных машин можно найти в
руководстве пользователя
.
Важно
Если вы собираетесь хранить образы виртуальных дисков в файловой системе
Btrfs
, то перед их созданием необходимо отключить
copy-on-write
для целевого каталога.
Настройки безопасности Wayland (например, при использовании GDM) не дают VirtualBox полностью захватить ввод с клавиатуры, что мешает, например, использовать в гостевой ОС комбинации клавиш. Чтобы это обойти, добавьте VirtualBox в белый список:
$ gsettings get org.gnome.mutter.wayland xwayland-grab-access-rules
$ gsettings set org.gnome.mutter.wayland xwayland-grab-access-rules "['VirtualBox Machine']"
Первая команда выведет текущий список приложений в белом списке. 'VirtualBox Machine' необходимо добавить к этому списку (вторая команда в примере выше не добавляет, а создаёт список из ровно одного элемента).
Пошаговая установка Arch Linux как гостевой ОС
Установка Arch Linux в виртуальную машину
Примечание
Хостам с ОС Windows, возможно, придется отключить Hyper-V для того, чтобы использовать возможности виртуализации устройств и создания 64-битных виртуальных машин в VirtualBox. Чтобы узнать, как отключить или снова включить Hyper-V,
посмотрите пост на StackOverflow
.
Загрузите установочный носитель Arch через один из виртуальных дисков виртуальной машины. Затем совершите установку базовой системы Arch, как описано в
руководстве по установке
, без установки графических драйверов: мы будем устанавливать драйвера, поставляемые VirtualBox на следующем этапе.
Установка в режиме EFI
Если вы хотите установить Arch Linux в режиме EFI внутри VirtualBox, в настройках виртуальной машины, перейдите в закладку
Настройки
, и установите флажок
Enable EFI (special OSes only)
. После выбора ядра из меню установочного носителя Arch Linux, установка будут висеть в течение минуты-двух, и после этого будет загружено ядро . Подождите и не прекращайте установку.
При загрузке в режиме EFI, VirtualBox будет пытаться выполнить
/EFI/BOOT/BOOTX64.EFI
из ESP. Если первый вариант не удается, VirtualBox будет пытаться выполнить сценарий оболочки EFI
startup.nsh
из корня ESP. Если вы не хотите вручную запускать загрузчик из оболочки EFI каждый раз, вы должны будете переместить свой загрузчик в этот путь по умолчанию. Не заморачивайтесь с VirtualBox Boot Manager (доступен по
F2
при загрузке): EFI данные будут добавлены в него вручную при загрузке или
efibootmgr
будет сохранять их после перезагрузки,
но терять после закрытия виртуальной машины
.
Установка гостевых дополнений
После завершения установки гостевой системы, установите
дополнения гостевой ОС
, которые включают драйверы и приложения, оптимизирующие гостевую операционную систему. Они могут быть установлены с помощью
virtualbox-guest-utils
.
Примечание
Метод, описанный в
VirtualBox руководстве
не работает на гостевой Arch Linux, в результате
Unable to determine your Linux distribution
несколько раз повторено, как сообщение об ошибке. Если Вы уже попробовали этот первый метод и вы используете правильное описанное выше решение впоследствии, это не удастся. Вы получите ошибку
/usr/bin/VBox* exists in filesystem
и
/usr/lib/VBox* exists in filesystem
. Решение заключается в удалении конфликтующих файлов:
# rm /usr/bin/VBox* /usr/lib/VBox*
Эти файлы на самом деле являются символическими ссылками на места, где были установлены гостевые дополнения; По умолчанию, это
/opt/VBoxGuestAdditions-
номер версии
. Удалите и эти файлы
# rm -r /opt/VBoxGuestAdditions-
номер версии
,так как они не нужны. Теперь вы можете перезапустить установку правильным, вышеописанным способом.
Загрузка модулей ядра VirtualBox
Для автоматической загрузки модулей
включите
службу
vboxservice.service
, которая загрузит нужные модули и синхронизирует время с хостом.
Для загрузки модулей вручную выполните:
# modprobe -a vboxguest vboxsf vboxvideo
Запуск гостевых сервисов VirtualBox
После довольно непростой установки с модулями ядра VirtualBox, необходимо обеспечить взаимодействие гостевой ОС и хоста посредством сервисов. Гостевой сервис — на самом деле просто исполняемый файл
VBoxClient
, который будет взаимодействовать с вашей X Window System.
VBoxClient
управляет следующими функциями:
общий буфер обмена и перетаскивание объектов между хостом и гостевой ОС;
бесшовный оконный режим;
гостевой дисплей автоматически изменяет свой размер в соответствии с размером окна гостевой ОС;
проверка версии VirtualBox, установленной на хосте.
Все эти особенности могут быть включены независимо следующими параметрами:
$ VBoxClient --clipboard
$ VBoxClient --draganddrop
$ VBoxClient --seamless
$ VBoxClient --checkhostversion
$ VBoxClient --vmsvga
Обратите внимание, что
VBoxClient
принимает только один флаг за раз; каждый вызов запускает отдельный процесс в фоне. Для удобства есть bash-скрипт
VBoxClient-all
, запускающий все эти функции.
Пакет
virtualbox-guest-utils
устанавливает файл
/etc/xdg/autostart/vboxclient.desktop
, который запускает
VBoxClient-all
при входе в систему. Если ваша
среда рабочего стола
или ваш
оконный менеджер
не поддерживает
XDG Autostart
, настройте автозапуск вручную, как описано в разделах
Автозапуск#Запуск среды рабочего стола
и
Автозапуск#Запуск оконного менеджера
соответственно.
VirtualBox также может синхронизировать время между хостом и гостевой ОС. Для этого
включите
службу
vboxservice.service
.
Теперь у вас есть рабочая гостевая Arch Linux. Поздравляем!
Если вы хотите расшарить директории между вашим компьютером и гостевым Arch Linux, читайте дальше.
Расшаривание директорий
Общие папки управляются в хосте через настройки виртуальной машины, доступной через графический интерфейс VirtualBox, на вкладке
Shared Folders
. Там путь к директории и имя точки монтирования определены как
Имя папки
и аргументы, такие как
Read-only
,
Auto-mount
и
Make permanent
Эти параметры могут быть определены через утилиту
VBoxManage
. См.
для более подробной информации
.
Независимо от того, какой метод вы будете использовать, чтобы смонтировать директорию, требуются некоторые начальные действия.
Чтобы избежать проблемы
/sbin/mount.vboxsf: mounting failed with the error: No such device
, убедитесь, что модуль ядра
vboxsf
загружен правильно. Он должен быть загружен, поскольку мы включили все гостевые модули ядра ранее.
Два дополнительных шага необходимы для того, чтобы точки монтирования должны быть доступны из пользователей кроме root-а:
Пакет
virtualbox-guest-utils
создает группу
vboxsf
;
Ваше имя пользователя должно быть в этой группе, используйте команду
gpasswd -a $USER vboxsf
, чтобы добавить свое имя пользователя и запустите
newgrp
, чтобы применить изменения немедленно.
Ручное монтирование
Выполните следующую команду для монтирования директории в гостевой Arch Linux:
# mount -t vboxsf
имя_расшариваемой_директории
точка_монтирования_в_гостевой_ОС
Файловая система
vboxsf
предоставляет и другие способы, просмотреть которые можно выполнив:
# mount.vboxsf
Например, если пользователь не добавлен в
vboxsf
группу, мы могли бы использовать эту команду, чтобы смонтировать директорию в гостевой ОС:
# mount -t vboxsf -o uid=1000,gid=1000 home /mnt/
Где
UID
и
GID
являются значениями, соответствующими пользователям, которым мы хотим дать доступ к монтированию директории. Эти значения можно узнать из вывода команды
id
, выполненной из сессии этого пользователя.
Автомонтирование
Чтобы функция автоматического монтирования заработала, вы должны включить флажок в графическом интерфейсе или использовать дополнительный аргумент
--automount
при команде
VBoxManage общая_директория
Теперь общая директория должна появиться в
/media/sf_
имя_расшаренной_директории
.
Вы можете использовать символические ссылки, если хотите иметь более удобный доступ:
$ ln -s /media/sf_
имя_расшаренной_директории
~/
мои_документы
Монтирование при загрузке
Вы можете монтировать директории с помощью
fstab
. Во избежание проблем с systemd, необходимо добавить в
/etc/fstab
строчку
comment=systemd.automount
.
Таким образом, общие папки монтируются только тогда, когда доступны точки подключения, а не во время запуска. Это может избежать некоторых проблем, особенно если гостевая ОС еще не загружена, когда systemd уже начал читать fstab и монтировать разделы.
desktop   /media/desktop    vboxsf  uid=user,gid=group,rw,dmode=700,fmode=600,comment=systemd.automount 0 0
mount.vboxsf
может не поддерживать
[
устаревшая ссылка
2020-08-06 ⓘ]
nofail
аргумент:
desktop   /media/desktop    vboxsf  uid=user,gid=group,rw,dmode=700,fmode=600,nofail 0 0
Управление виртуальными дисками
Форматы, поддерживаемые VirtualBox
VirtualBox поддерживает следующие форматы виртуальных дисков:
VDI
: Virtual Disk Image — собственный контейнер VirtualBox, используемый по умолчанию, когда вы создаёте виртуальную машину в VirtualBox.
VMDK
: Virtual Machine Disk — изначально разработан VMware для своих продуктов. Изначально спецификация была закрытой, но сейчас это открытый формат, который VirtualBox полностью поддерживает. Этот формат даёт возможность разбивать диск на несколько файлов по 2ГБ. Эта функция особенно полезна, если вы хотите сохранить виртуальную машину на компьютерах, которые не поддерживают очень большие файлы. Другие форматы, за исключением формата HDD от Parallels, не предоставляют подобную функцию.
VHD
: Virtual Hard Disk — формат, который использует Microsoft в Windows Virtual PC и Hyper-V. Если вы собираетесь использовать любой из этих продуктов Microsoft, вам придётся выбрать этот формат.
Совет
Начиная с Windows 7, этот формат может быть примонтирован непосредственно без каких-либо дополнительных приложений.
VHDX
(только для чтения): Это расширенная (eXtended) версия формата Virtual Hard Disk, разработанный в Microsoft и выпущенный в 2012-09-04 с Hyper-V 3.0 при переходе на Windows Server 2012. Эта новая версия имеет повышенную производительность (лучшее расположение блоков), бо́льшие размеры блоков и поддержку журнала. VirtualBox
поддерживает этот формат только для чтения
.
HDD
(версия 2): Формат HDD разработан Parallels Inc и используются в их гипервизорах, например Parallels Desktop для Mac. Новые версии этого формата (т.е. 3 и 4) не поддерживаются из-за отсутствия документации для этого формата.
Примечание
Существуют споры в отношении поддержки версии 2 формата. Официальное руководство VirtualBox
сообщает, что поддерживается только 2 версия
, авторы Википедии утверждают, что
частично может работать и первая версия
. Приветствуется помощь, если вы можете выполнить некоторые тесты с первой версией формата HDD.
QED
: QEMU Enhanced Disk — старый формат для QEMU, свободный и открытый. Этот формат был разработан в 2010 году таким образом, чтобы обеспечить превосходную альтернативу qcow2 и другим форматам. Этот формат имеет полностью асинхронный ввод-вывод, хорошую целостность данных, откат файлов и разреженные файлы. Формат QED поддерживается только для совместимости с виртуальными машинами, созданными в старых версиях QEMU.
QCOW
: QEMU Copy On Write — нынешний формат для QEMU. Формат QCOW поддерживает прозрачное сжатие на основе ZLIB и шифрование (однако у шифрования есть проблемы, поэтому использовать его не рекомендуется). QCOW доступен в двух версиях: QCOW и QCOW2. Последний, как правило, заменяет первый. QCOW
в настоящее время полностью поддерживается в VirtualBox
. QCOW2 имеет две ревизии: QCOW2 0.10 и QCOW2 1.1 (используемый по умолчанию при создании виртуального диска с QEMU). VirtualBox не поддерживает QCOW2.
OVF
: Open Virtualization Format — открытый формат, который был разработан для обеспечения взаимодействия и распределения виртуальных машин между различными гипервизорами. VirtualBox поддерживает все версии этого формата через
импорт/экспорт в VBoxManage
, но с
известными ограничениями
.
RAW
: это режим, когда виртуальный диск непосредственно пробрасывается на диск без определённого формата контейнера. VirtualBox поддерживает эту функцию несколькими способами: преобразование RAW-диска
в определённый формат
, или
клонирование диска в формате RAW
, или непосредственно через файл VMDK,
который указывает на физический диск или просто файл
.
Преобразование виртуальных дисков разных форматов
VMDK в VDI и VDI в VMDK
VirtualBox может конвертировать VDI в VMDK и обратно с использованием
VBoxManage clonehd
.
VMDK в VDI:
$ VBoxManage clonehd
source.vmdk
destination.vdi
--format VDI
VDI в VMDK:
$ VBoxManage clonehd
source.vdi
destination.vmdk
--format VMDK
VHD в VDI и VDI в VDH
VirtualBox также может конвертировать VHD в VDI и наоборот с использованием
VBoxManage clonehd
:
VHD в VDI:
$ VBoxManage clonehd
source.vhd
destination.vdi
--format VDI
VDI в VHD:
$ VBoxManage clonehd
source.vdi
destination.vhd
--format VHD
QCOW2 в VDI и VDI в QCOW2
VBoxManage clonehd
не может конвертировать QEMU форматы и необходимо воспользоваться иными инструментами. Команда
qemu-img
из пакета
qemu-desktop
может осуществлять преобразования QCOW2<=>VDI.
Примечание
qemu-img
также обрабатывает кучу других форматов. В соответствии выводу
qemu-img --help
,
qemu-img
поддерживает данные форматы : "vvfat vpc vmdk vhdx vdi ssh sheepdog sheepdog sheepdog raw host_cdrom host_floppy host_device file qed qcow2 qcow parallels nbd nbd nbd iscsi dmg tftp ftps ftp https http cow cloop bochs blkverify blkdebug".
QCOW2 в VDI:
$ qemu-img convert -pO vdi
source.qcow2
destination.vdi
VDI в QCOW2:
$ qemu-img convert -pO qcow2
source.vdi
destination.qcow2
Так как QCOW2 предостовляется в двух версиях (0.10 и 1.1) (см.
форматы, поддерживаемые VirtualBox
. Используйте параметр
-o compat=
для выбора версии.
$ qemu-img convert -pO qcow2
source.vdi
destination.qcow2
-o compat=0.10
или
$ qemu-img convert -pO qcow2
source.vdi
destination.qcow2
-o compat=1.1
Совет
Параметр
-p
отображает прогресс выполнения преобразования.
Монтирование виртуальных дисков
VDI
Монтирование образов VDI работает только с образами фиксированного размера (т.е. статичными образами); динамические образы (динамическое выделение размера) монтируются довольно-таки не просто.
Если необходимо смещение раздела (в VDI), добавьте значение
offData
в
32256
(например, 69632 + 32256 = 101888):
$ VBoxManage internalcommands dumphdinfo
storage
.vdi | grep "offData"
Теперь cмонтируем:
# mount -t ext4 -o rw,noatime,noexec,loop,offset=101888
storage
.vdi /mntpoint/
Вы также можете использовать скрипт
mount.vdi
(поместите его в каталог
/usr/bin/
):
# mount -t vdi -o fstype=ext4,rw,noatime,noexec
vdi_file_location
/mnt/
Также можно использовать модуль ядра nbd и команду
qemu-nbd
из пакета
qemu-img
[2]
:
# modprobe nbd max_part=16
# qemu-nbd -c /dev/nbd0
storage
.vdi
# mount /dev/nbd0p1 /mnt/dir/
Размонтирование:
# umount /mnt/dir/
# qemu-nbd -d /dev/nbd0
Если файлы разделов не появляются, попробуйте использовать
partprobe /dev/nbd0
; в противном случае, VDI раздел может быть отображён непосредственно в файл с помощью
qemu-nbd -P 1 -c /dev/nbd0
storage
.vdi
.
Ещё один способ — использовать
vdfuse
AUR
[
ссылка недействительна
: package not found]
:
# vdfuse -a -f
storage
.vdi
mountpoint1
Эта команда примонтирует диск в каталог
mountpoint1
, внутри которого будут файлы разделов с именами вида
PartitionN
. Разделы можно примонтировать с помощью loop-устройств:
# mount -o loop
mountpoint1
/PartitionN
mountpoint2
Сжатие виртуальных дисков
Сжатие работает только с файлами
.vdi
и в основном состоит из следующих действий.
Загрузите виртуальную машину и удалите всё ненужное вручную или с помощью специальных средств, например
bleachbit
(
доступна для ОС Windows
[
устаревшая ссылка
2024-07-30 ⓘ]
).
Затрите свободное место нулями. Это можно сделать следующими инструментами:
Если вы пользовались Bleachbit, просто установите галочку
System > Free disk space
в графическом интерфейсе или выполните команду
bleachbit -c system.free_disk_space
в терминале;
В UNIX-based системах выполните команду
dd
или, предпочтительно,
dcfldd
AUR
(см.
здесь
информацию об отличиях):
# dcfldd if=/dev/zero of=
/fillfile
bs=4M
Когда
fillfile
займёт всё свободное место, появится сообщение вида
1280 blocks (5120Mb) written.dcfldd:: No space left on device
. Это означает, что всё доступное пользователю пространство и незарезервированные блоки раздела были затёрты. Используя эту команду от имени суперпользователя, важно убедиться в том, что затёрты все свободные блоки. По умолчанию некий процент блоков ФС зарезервирован для суперпользователя (смотрите аргумент
-m
команды
mkfs.ext4
или используйте
tune2fs -l
, чтобы увидеть, сколько места зарезервировано под приложения, запущенные от имени root).
Когда вышеописанный процесс будет завершён, вы можете удалить созданный вами файл
fillfile
.
В Windows есть два инструмента:
sdelete
из
Sysinternals Suite
, выполните
sdelete -s -z
c:
для каждого виртуального диска;
для любителей скриптов есть
скрипт на PowerShell
. Его также необходимо запускать отдельно для каждого виртуального диска.
PS> ./Write-ZeroesToFreeSpace.ps1 -Root
c:\
-PercentFree 0
Примечание
Этот скрипт должен быть запущен в среде PowerShell от имени администратора. По умолчанию скрипты не запускаются из-за ограничений политик безопасности. Необходимо изменить значение параметра
Get-ExecutionPolicy
в политиках безопасности:
Set-ExecutionPolicy RemoteSigned
.
После завершения выключите виртуальную машину.
При следующем включении виртуальной машины рекомендуется провести проверку диска.
в UNIX-based системах можно вручную запустить
fsck
;
в GNU/Linux, в том числе Arch Linux, вы можете запустить принудительную проверку диска во время загрузки вручную
через параметры ядра
;
в Windows:
chkdsk
c:
/F
, где
c:
заменяется на имя проверяемого диска;
или
FsckDskAll
отсюда
, который основан на
chkdsk
, но не требует повторения команды для каждого отдельного диска;
Теперь удалите нули из файлов
.vdi
с помощью
VBoxManage modifyhd
:
$ VBoxManage modifyhd
ваш_диск.vdi
--compact
Примечание
Если в вашей виртуальной машине есть снимки, вам необходимо выполнить команду для всех ваших
.vdi
файлов.
Увеличение размера виртуальных дисков
Если вы выходите за рамки пространства жесткого диска, которое выбрали при создании виртуальной машины, проблему можно решить по совету из руководства VirtualBox
VBoxManage modifyhd
. Эта команда работает только для динамически расширяемых дисков VDI и VHD . Если вы хотите изменить размер фиксированного виртуального диска, можете использовать нижеописанный трюк, который работает и на виртуальной машине Windows, и в UNIX-подобных системах.
Во-первых, создайте новый виртуальный диск рядом с тем, который вы хотите увеличить:
$ VBoxManage createhd -filename
new.vdi
--size
10000
где размер указан в MiB, в этом примере 10000MiB ~ = 10GiB,
new.vdi
- имя создаваемого нового виртуального диска.
Далее старый виртуальный диск должен быть клонирован в новый(это может занять длительной время):
$ VBoxManage clonehd
old.vdi
ew.vdi
--existing
Примечание
По умолчанию, эта команда использует
Standard
(что соответствует динамическому выделению) формату файла диска, и, следовательно, не будет использовать тот же формат в качестве формата исходного виртуального диска. Если ваш
old.vdi
имеет фиксированный размер, и вы хотите, чтобы новый диск был тоже фиксированным, добавьте параметр
--variant Fixed
.
Отключите старый диск и установите новый, обязательно заменив все выделенные курсивом аргументы на свои:
$ VBoxManage storageattach
VM_name
--storagectl
SATA
--port
0
--medium none
$ VBoxManage storageattach
VM_name
--storagectl
SATA
--port
0
--medium
new.vdi
--type hdd
Чтобы получить имя контроллера диска и номер порта, вы можете использовать команду
VBoxManage showvminfo
VM_name
. Среди вывода вы получите такой результат (то, что вы ищете выделено курсивом):
[...]
Storage Controller Name (0):            IDE
Storage Controller Type (0):            PIIX4
Storage Controller Instance Number (0): 0
Storage Controller Max Port Count (0):  2
Storage Controller Port Count (0):      2
Storage Controller Bootable (0):        on
Storage Controller Name (1):            SATA
Storage Controller Type (1):            IntelAhci
Storage Controller Instance Number (1): 0
Storage Controller Max Port Count (1):  30
Storage Controller Port Count (1):      1
Storage Controller Bootable (1):        on
IDE (1, 0): Empty
SATA
(
0
, 0): /home/wget/IT/Virtual_machines/GNU_Linux_distributions/ArchLinux_x64_EFI/Snapshots/{6bb17af7-e8a2-4bbf-baac-fbba05ebd704}.vdi (UUID: 6bb17af7-e8a2-4bbf-baac-fbba05ebd704)
[...]
Скачайте
GParted LiveCD
и установите его в качестве виртуального привода , загрузите вашу виртуальную машину, используйте увеличение / перемещение ваших разделов. По окончании работы отмонтируйте GParted LiveCD и перезагрузите машину.
Примечание
На GPT дисках, увеличение размера диска приведет к созданию резервной копии заголовка GPT в месте, отличном от конца устройства. GParted попросит, чтобы исправить проблему, нажать на
исправить
два раза. На дисках MBR такой проблемы не возникнет.
Наконец, отключите старый виртуальный диск в VirtualBox и удалите его:
$ VBoxManage closemedium disk
old.vdi
$ rm
old.vdi
Замена виртуального диска из файла .vbox вручную
Если вы думаете, что редактирование простого
XML
файла более удобно, чем возня с GUI или
VBoxManage
и вы хотите заменить (или добавить) виртуальный диск в вашей виртуальной машине, просто замените GUID, местоположение файла и формат для ваших нужд в конфигурационном файле
.vbox
, соответствующем вашей виртуальной машине:
ArchLinux_vm.vbox
<HardDisk uuid="
{670157e5-8bd4-4f7b-8b96-9ee412a712b5}
" location="
ArchLinux_vm.vdi
" format="
VDI
" type="Normal"/>
в
<AttachedDevice>
(суб-тег
<StorageController>
) замените старый GUID на новый.
ArchLinux_vm.vbox
<AttachedDevice type="HardDisk" port="0" device="0">
  <Image uuid="
{670157e5-8bd4-4f7b-8b96-9ee412a712b5}
"/>
</AttachedDevice>
Примечание
Если вы не знаете GUID диска который вы хотите добавить, вы можете использовать
VBoxManage showhdinfo
file
. Если раньше вы использовали
VBoxManage clonehd
, для копирования или конвертирования виртуальных дисков, он выводит GUID после завершения копирования / преобразования. Применение случайного GUID не работает, так как каждый
UUID хранится внутри любого образа диска
.
Клонирование виртуального диска и назначение ему нового UUID
UUID широко используются VirtualBox. Каждая виртуальная машина и каждый виртуальный диск виртуальной машины должны иметь разные UUID. Когда вы запускаете виртуальную машину в VirtualBox, он будет отслеживать все UUID. См
VBoxManage list
, чтобы просмотреть список элементов, зарегистрированных в VirtualBox.
Если вы клонировали виртуальный диск вручную путем копирования файла виртуального диска, необходимо будет назначить новый UUID клонированному виртуальному диску. Вы можете использовать этот диск в той же виртуальной машине или даже в другой (если он уже открыт и таким образом зарегистрирован в VirtualBox).
Вы можете использовать эту команду, чтобы назначить новый UUID для вашего виртуального диска:
$ VBoxManage internalcommands sethduuid
/path/to/disk.vdi
Совет
В будущем, чтобы избежать копирования виртуального диска и назначения нового UUID вручную, используйте
VBoxManage clonehd
.
Примечание
Все указанные команды поддерживают
все форматы виртуальных дисков, поддерживаемые VirtualBox
.
Советы и рекомендации
Импорт/экспорт виртуальных машин VirtualBox в/из других гипервизоров
Если вы планируете использовать виртуальную машину на другом гипервизоре или хотите импортировать в VirtualBox виртуальную машину, созданную в другом гипервизоре, вы можете быть заинтересованы в чтении следующих шагов.
Удаление дополнений гостевой ОС
Гостевые дополнения доступны в большинстве гипервизоров: VirtualBox поставляется с гостевыми дополнениями, VMware с VMware Tools, Parallels с инструментами Parallels, и т.д. Это дополнительные компоненты, предназначенные для установки внутри виртуальной машины после гостевой операционной системы, состоящие из драйверов устройств и системных приложений, которые оптимизируют гостевую операционной системы для повышения производительности и удобства использования.
Читать подробнее
.
Если у вас установлены дополнения в вашей виртуальной машине - удалите их в первую очередь. Ваша гостевая ОС, особенно если это ОС из семейства Windows, может вести себя странно, аварийно или не загрузиться вообще, если вы используете специальные драйверы одного гипервизора на другом.
Использование правильного формата виртуального диска
От этого шага будет зависеть способность преобразовывать образ диска виртуальной в другие форматы - непосредственно или конвейерным методом.
Автоматические инструменты
Некоторые компании предоставляют инструменты, которые предлагают возможность создания виртуальных машин с операционной системой Windows или GNU / Linux, расположенной в виртуальной машине или даже в оригинальной установке. С таким продуктом вам не нужно применять этот и следующие шаги, и можно далее не читать.
Parallels Transporter
- не бесплатный, продукт от Parallels Inc. Это решение в основном заключается в части программного обеспечения под названием
агент
, который будет установлен в гостевой ОС, которую вы хотите импортировать / преобразовать. Затем, Parallels Transporter,
который работает только на OS X
, создаст виртуальную машину с этим
агентом
, который контактирует либо по USB или по сети Ethernet.
VMware vCenter Converter
[
устаревшая ссылка
2024-07-30 ⓘ]
- бесплатен при регистрации на Website VMware, работает почти так же, как Parallels Transporter, но часть программного обеспечения, которая собирает данные для создания виртуальной машины работает только на платформе Windows.
Ручное преобразование
Во-первых, ознакомьтесь с
форматами, поддерживаемыми Virtualbox
и
форматами других гипервизоров
.
Импорт и экспорт виртуальной машины из/в формат VMware не является проблемой, если вы используете формат диска VMDK или OVF, в противном случае преобразования
VMDK в VDI и VDI в VMDK
можно осуществить вышеописанным VMware vCenter Converter.
Импорт и экспорт из/в QEMU почти не проблема: некоторые форматы QEMU поддерживает непосредственно VirtualBox и преобразование между
QCOW2 в VDI и VDI в QCOW2
по-прежнему доступны в случае необходимости.
Импорт и экспорт из/в Parallels гипервизора является трудный задачей: Parallels поддерживает только свой собственный формат жесткого диска (даже стандартные форматы и портативный формат OVF не поддерживается!).
Чтобы экспортировать виртуальную машину для Parallels, вам нужно будет использовать инструмент описанной выше Parallels - Transporter.
Чтобы импортировать виртуальную машину в VirtualBox, вы должны будете использовать VMware vCenter Converter , чтобы преобразовать виртуальную машину в формат VMware в первую очередь - а затем используйте инструмент для миграции с VMware.
Создание конфигурации VM для гипервизора
Каждый гипервизор имеет свой собственный файл конфигурации виртуальной машины:
.vbox
для VirtualBox,
.vmx
для VMware,
config.pvs
файл, расположенный в виртуальной машине (
.pvm
файл), и т.д. Вы можете, таким образом, создать новую виртуальную машину в новом гипервизоре и указать его конфигурацию как можно ближе относительно начальной виртуальной машины.
Обратите пристальное внимание на интерфейс прошивки (BIOS или UEFI), используемый для установки гостевой операционной системы. В то время как опция доступна выбирать между этими 2 интерфейсов на VirtualBox и на Parallels решений, на VMware, вам придется вручную добавить следующую строку в ваш
.vmx
файл.
ArchLinux_vm.vmx
firmware = "efi"
Наконец, настройте ваш гипервизор, для использования существующего виртуального диска, который вы преобразовали и запустите виртуальную машину.
Совет
В VirtualBox, если вы не хотите просмотривать весь графический интерфейс, чтобы найти нужное место где можно добавить новый виртуальный диск устройства, вы можете
Заменить виртуальный диск вручную из файла .vbox
, или использовать
VBoxManage storageattach
, описанный в
увеличении вируального диска
или в
руководстве VirtualBox
Кроме того, в продуктах VMware, вы можете заменить местоположение текущего местоположения виртуального диска путем адаптации
.vmdk
местоположения файла в
.vmx
конфигурационном файле.
Управление запуском виртуальной машины
Запуск виртуальных машин с помощью службы (автозапуск)
/etc/systemd/system/vboxvmservice@.service
[Unit]
Description=VBox Virtual Machine %i Service
Requires=systemd-modules-load.service
After=systemd-modules-load.service

[Service]
User=
username
Group=vboxusers
ExecStart=/usr/bin/VBoxManage startvm %i --type
startmode
ExecStop=/usr/bin/VBoxManage controlvm %i
stopmode
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
Примечание
Замените
username
на пользователя из группы
vboxusers
. Убедитесь, что это именно тот пользователь, который управляет виртуальной машиной, иначе ничего не получится.
Замените
startmode
на тип фронтенда виртуальной машины, обычно
gui
,
headless
или
separate
.
Замените
stopmode
на желаемый переключатель состояния, обычно
savestate
или
acpipowerbutton
.
Примечание
Если у вас есть несколько машин, управляемых через systemd, и они завершаются некорректно, попробуйте добавить
KillMode=none
и
TimeoutStopSec=40
в конец секции
[Service]
.
Включите
юнит
vboxvmservice@
название_виртуальной_машины
, чтобы она запускалась автоматически при загрузке системы. Для запуска вручную просто
запустите
этот юнит.
VirtualBox 4.2
предоставляет
для UNIX-like систем также другие способы автозапуска, без использования сервисов systemd.
Запуск виртуальной машины по горячей клавише
Может быть полезно запускать виртуальные машины непосредственно с клавиатуры вместо использования интерфейса VirtualBox (GUI или CLI). Для этого, вы можете просто определить ключевые привязки в
.xbindkeysrc
. Обратитесь к
Xbindkeys
для более подробной информации.
Например, запуск по
Fn+F3
:
"VBoxManage startvm 'Windows 7'"
m:0x0 + c:244
XF86Battery
Примечание
Если у вас есть пробел в имени виртуальной машины, то заключите его в одинарные апострофы как сделано в вышеуказанном примере.
Использование конкретных устройств в виртуальной машине
Использование USB веб-камеры/микрофона
Примечание
Вам понадобятся установленные гостевые дополнения, прежде чем следовать приведенному ниже примеру. См.
Дополнения гостевой ОС
для более подробной информации.
Убедитесь, что виртуальная машина не запущена, а веб-камера / микрофон не используется.
Откройте главное окно VirtualBox и перейдите к настройкам машины Arch. Перейдите в раздел USB.
Убедитесь, что стоит галочка «Включить контроллер USB». Также убедитесь, что выбран пункт «Контроллер USB 2.0 (OHCI + EHCI)».
Нажмите кнопку добавления фильтра для устройства (кабель со значком «+»).
Выберите USB веб-камеру/микрофон из списка.
Нажмите кнопку OK и запустите виртуальную машину.
Обнаружение веб-камер и других USB-устройств
Убедитесь, что вы фильтруете любые устройства, (кроме клавиатур или мышей), чтобы они не запускались при загрузке -это гарантирует, что ОС Windows обнаружит устройство при запуске.
Доступ к гостевому серверу
Для доступа к
HTTP-серверу Apache
, запущенному в виртуальной машине,
только
с хост-машины, выполните:
$ VBoxManage setextradata GuestName "VBoxInternal/Devices/
pcnet
/0/LUN#0/Config/Apache/HostPort"
8888
$ VBoxManage setextradata GuestName "VBoxInternal/Devices/
pcnet
/0/LUN#0/Config/Apache/GuestPort"
80
$ VBoxManage setextradata GuestName "VBoxInternal/Devices/
pcnet
/0/LUN#0/Config/Apache/Protocol" TCP
Где
8888
— порт, который будет слушать хост, а
80
— порт внутри виртуальной машины, который будет принимать входящие соединения.
Чтобы использовать на хосте порт ниже 1024, нужно внести изменения в межсетевом экране. Он также может быть настроен на работу с SSH или другими службами путём изменения портов на нужные.
Примечание
pcnet
относится к сетевой карте виртуальной машины. Если вы используете виртуальную сетевую карту Intel, измените
pcnet
на
e1000
.
D3D ускорение в гостевой Windows
Последние версии Virtualbox имеют поддержку ускорения OpenGL внутри гостевой ОС. Эта функция может быть включена галочкой в настройках машины (при установленных дополнениях гостевой ОС VirtualBox). Тем не менее, большинство игр под Windows используют Direct3D (часть DirectX), а не OpenGL, и, таким образом, этот метод не поможет. Тем не менее возможно получить ускоренное Direct3D в гостевой Windows, за счет заимствования D3D библиотеки из Wine, который переводит инструкции d3d под OpenGL, который и занимается ускорением. Эти библиотеки теперь являются частью дополнений гостевой ОС.
После включения OpenGL ускорения, как описано выше, перезагрузите гостевую ОС в безопасном режиме (нажмите F8 до появления экрана для Windows, но после исчезновения экрана Virtualbox), и установите дополнения гостевой ОС, во время установки установите галочку
Включить поддержку Direct3D
. Перезагрузитесь обратно в нормальный режим, и вы получите ускоренный Direct3D.
Примечание
Этот хак может не работать для некоторых игр в зависимости от того, какие проверки оборудования они делают и какие части D3D они используют.
Хак был проверен на Windows XP, 7 и 8.1. Если метод не работает на вашей версии Windows, пожалуйста, добавьте эту информацию здесь.
VirtualBox c USB-ключом
При использовании VirtualBox с USB-ключом, например, для запуска установленной машины с ISO-образа, вы вручную должны создать VMDK-файлы существующих приводов. Тем не менее, как только новые файлы VMDK сохраняться и вы перейдёте на другую машину, у вас могут снова возникнуть проблемы. Чтобы избавиться от этой проблемы, можно использовать следующий скрипт для запуска VirtualBox. Этот сценарий будет убирать старые файлов VMDK и создавать новые:
#!/bin/sh
# Erase old VMDK entries
rm ~/.VirtualBox/*.vmdk

# Clean up VBox-Registry
sed -i '/sd/d' ~/.VirtualBox/VirtualBox.xml

# Remove old harddisks from existing machines
find ~/.VirtualBox/Machines -name \*.xml | while read -r file; do
  line=$(grep -e "type\=\"HardDisk\"" -n "$file" | cut -d ':' -f 1)
  if [ -n "$line" ]; then
    sed -i "${line}"d "$file"
    sed -i "${line}"d "$file"
    sed -i "${line}"d "$file"
  fi
  sed -i "/rg/d" "$file"
done

# Delete prev-files created by VirtualBox
find  ~/.VirtualBox/Machines -name \*-prev -exec rm '{}' \;

# Recreate VMDKs
ls -l /dev/disk/by-uuid | cut -d ' ' -f 9,11 | while read -r ln; do
  if [ -n "$ln" ]; then
    uuid=$(echo "$ln" | cut -d ' ' -f 1)
    device=$(echo "$ln" | cut -d ' ' -f 2 | cut -d '/' -f 3 | cut -b 1-3)

    # determine whether drive is mounted already
    checkstr1=$(mount | grep "$uuid")
    checkstr2=$(mount | grep "$device")
    checkstr3=$(ls ~/.VirtualBox/*.vmdk | grep "$device")
    if [ -z "$checkstr1" ] && [ -z "$checkstr2" ] && [ -z "$checkstr3" ]; then
      VBoxManage internalcommands createrawvmdk -filename ~/.VirtualBox/"$device".vmdk -rawdisk /dev/"$device" -register
    fi
  fi
done

# Start VirtualBox
VirtualBox
Обратите внимание, что ваш пользователь должен быть добавлен в группу
disk
, чтобы создать VMDK-файлы из существующих дисков.
Запуск установленного Arch Linux внутри VirtualBox
Если у вас есть дуалбут системы между Arch Linux и другими операционных системами, он может быстро стать утомительным для переключения туда-сюда, если вам нужно работать в обоих. Кроме того, с помощью виртуальных машин, у вас есть только крошечный фрагмент власти компьютера, который может привести к проблемам при работе на проектах, требующих производительности.
Это руководство позволит вам использовать в виртуальной машине, вашу родную установку Arch Linux, когда вы используете свою вторую операционную систему. Таким образом, вы сохраняете возможность запуска каждой операционной систему изначально, но есть возможность запустить установленный физически Arch Linux внутри виртуальной машины.
Убедитесь, что система наименования разделов не изменяется
В зависимости от настроек вашего жесткого диска, файлы устройств, представляющих свои жесткие диски могут выглядеть по-разному когда вы будете запускать установку Arch Linux - изначально или в виртуальной машине. Эта проблема возникает, например, при использовании
FakeRAID
. Поддельные RAID устройстве, будут перемещены в
/dev/mapper/
при запуске дистрибутива GNU/Linux , в то время как будут устройства по-прежнему доступны по отдельности. Тем не менее, в вашей виртуальной машине может оказаться без отображения в
/dev/sdaX
например, потому что драйвера, управляющие поддельными RAID в вашей локальной операционной системе (например, Windows) абстрагируются под поддельные RAID устройства.
Чтобы обойти эту проблему, мы должны будем использовать схему адресации, работающую в обеих системах. Это может быть достигнуто использованием
UUID
в файле
/etc/fstab
. Убедитесь, что ваш
fstab
использует UUID - в противном случае исправьте это. Читайте статьи
fstab (Русский)
и
Постоянные имена для блочных устройств
.
/etc/fstab
не является единственным местом, где используются UUID. Менеджеры загрузчиков тоже их используют. Убедитесь, что они действительно используют UUID-ы.
GRUB Legacy
Если вы все еще используете
GRUB Legacy
, может быть настало время его
обновить
[
ссылка недействительна
: раздел не найден]
, так как этот пакет в настоящее время удален из официальных репозиториев Arch Linux. Если вы хотите сохранить его, отредактируйте
/boot/grub/menu.lst
и замените
root=/dev/sdXX
в загрузочной записи Arch Linux на Linux UUID
/dev/disk/by-uuid/
, соответствующий корневому разделу.
title  Arch Linux
root
kernel /vmlinuz-linux root=
/dev/disk/by-uuid/0a3407de-014b-458b-b5c1-848e92a327a3
ro vga=773
initrd /initramfs-linux-vbox.img
Предварительно создайте резервную копию файла на случай ошибок.
GRUB
Если вы работаете с самой последней версией
GRUB
; у вас нет проблем. Это ещё одна причина для перехода на GRUB 2.
Важно
Убедитесь, что ваш хост-раздел доступна только для чтения с вашей виртуальной машины Arch Linux. Это позволит избежать риска повреждения.
Вы никогда не должны позволять VirtualBox загружаться с момента загрузки вашей второй операционной системы, которая используется в качестве хоста для этой виртуальной машины! Возьмите, таким образом, за правило - особенно если ваша загрузка производится по умолчанию в другую операционную систему. Установите более большой тайм-аут или переместите систему ниже в порядке предпочтений.
Убедитесь в корректности образа mkinitcpio
Убедитесь, что в конфигурации вашего
mkinitcpio
есть
хук
block
:
/etc/mkinitcpio.conf
[...]
HOOKS="base udev autodetect modconf
block
filesystems keyboard fsck"
[...]
Если это не так, добавьте хук и
заново сгенерируйте initramfs
.
Создание конфигурации виртуальной машины для загрузки с физического диска
Создайте потоковый(raw) образ .vmdk
Теперь нам нужно создать новую виртуальную машину, которая будет использовать
RAW диск
в качестве виртуального диска, для этого мы будем использовать файл ~ 1Kib VMDK, которые будет сбрасываться на физический диск. VirtualBox не имеет этой опции в графическом интерфейсе, так что мы должны использовать консоль и внутреннюю команду из
VBoxManage
.
Загрузите хост, который будет использовать виртуальную машину Arch Linux.Команда должны быть адаптированы в соответствии с вашей хост-машиной.
На хосте GNU/Linux
Существует 3 способа этого достичь: вход от суперпользователя, изменение прав доступа к устройству командой
chmod
, добавление пользователя в группу
disk
. Последний путь является более элегантным. Реализуем таким образом:
# gpasswd -a
your_user
disk
Применить новые параметры сейчас же:
$ newgrp
Теперь вы можете использовать следующую команду:
$ VBoxManage internalcommands createrawvmdk -filename
/path/to/file.vmdk
-rawdisk
/dev/sdb
-register
Адаптируйте команду для ваших потребностей.
На хосте Windows
Откройте окно командной строки (необходимо запускать от имени администратора).
Совет
В Windows откройте меню Пуск / стартовый экран, введите
cmd
, и нажмите
Ctrl+Shift+Enter
, это ярлык для запуска выбранной программы с правами администратора.
В Windows наименование дисков отлично от UNIX. Используйте эту команду, чтобы определить значения в вашей системе Windows, и их расположение:
# wmic diskdrive get name,size,model
Model                               Name                Size
WDC WD40EZRX-00SPEB0 ATA Device     \\.\PHYSICALDRIVE1  4000783933440
KINGSTON SVP100S296G ATA Device     \\.\PHYSICALDRIVE0  96024821760
Hitachi HDT721010SLA360 ATA Device  \\.\PHYSICALDRIVE2  1000202273280
Innostor Ext. HDD USB Device        \\.\PHYSICALDRIVE3  1000202273280
В этом примере Windows называет диски
\\.\PhysicalDriveX
, Где X представляет собой число от 0,
\\.\PHYSICALDRIVE1
может быть сопоставим с
/dev/sdb
из терминологии Linux.
Для использования в командной строке
VBoxManage
в Windows, вы должны изменить текущую папку в папку установки VirtualBox, обычно это
cd C:\Program Files\Oracle\VirtualBox\
# .\VBoxManage.exe internalcommands createrawvmdk -filename C:\file.vmdk -rawdisk \\.\PHYSICALDRIVE1
или использовать абсолютный путь:
# "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" internalcommands createrawvmdk -filename C:\file.vmdk -rawdisk \\.\PHYSICALDRIVE1
На другой хостовой ОС
Есть и другие ограничения, касающиеся вышеприведенной команды, когда она используется в других операционных системах - таких как OS X. Прочитайте
внимательно руководство
, если это вас беспокоит.
Создание файла конфигурации виртуальной машины
Примечание
Для использования команды VBoxManage в Windows, вам нужно сначало изменить текущую директорию в папку установки VirtualBox:
cd C:\Program Files\Oracle\VirtualBox\
Windows делает использование обратного слеша вместо слеша, пожалуйста, замените все вхождения / на \ в командах, которые вы будете использовать.
После этого мы должны создать новую машину (замените
VM_name
ная ваш вариант) и зарегистрировать её в VirtualBox.
$ VBoxManage createvm -name
VM_name
-register
Затем виртуальный диск должен быть подключен к машине. Это будет зависеть от того, находится ли корень в вашей оригинальной установке Arch Linux на IDE или контроллере SATA.
Если вам нужен контроллер IDE:
$ VBoxManage storagectl
VM_name
--name "IDE Controller" --add ide
$ VBoxManage storageattach machineA --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /path/to/file.vmdk
В противном случае:
$ VBoxManage storagectl
VM_name
--name "SATA Controller" --add sata
$ VBoxManage storageattach machineA --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium /path/to/file.vmdk
В то время как вы продолжаете использовать интерфейс командной строки, рекомендуется использовать VirtualBox GUI, чтобы персонализировать настройки виртуальной машины. Необходимо указать аппаратную конфигурацию как можно ближе к родной машине: включение ускорения 3D, увеличение видеопамяти, установка сетевого интерфейса и т.д.
Установка дополнений гостевой ОС
Наконец, вы можете легко интегрировать Arch Linux с хост-системой и синхронизировать буфер обмена между двумя ОС. Обратитесь к
установке гостевых дополнений
для этого.
Важно
Для
Xorg (Русский)
, чтобы работать в родной и в виртуальной машине, так как очевидно, он должен использовать другой драйвер, то лучше, если не будет
/etc/X11/xorg.conf
- так как Xorg будет собирать все, что необходимо на лету. Однако, если вам действительно нужно свою собственную конфигурацию Xorg, может быть, стоит установить используемые по умолчанию цели Systemd к
multi-user.target
с
# systemctl isolate graphical.target
(более
подробно
). Таким образом, графический интерфейс будет отключен (т.е. Xorg не запустится) и после входа в систему вы сможете выполнить
startx
вручную с пользовательским
xorg.conf
.
Физическая установка системы Arch Linux из VirtualBox
В некоторых случаях это может быть полезно для установки родной системы Arch Linux из другой операционной системы: один из способов достижения этой цели является выполнение установки через VirtualBox на
жёсткий диск
. Если существующая операционная система на основе Linux, вы можете рассмотреть
установку из существующего Linux
вместо этого.
Этот сценарий очень похож на
Запуск установленного Arch Linux в VirtualBox
, но будет реализовывать эти шаги в другом порядке: начать с создания
.vmdk образа жёсткого диска
, а затем
создавать файл конфигурации виртуальной машины
.
Теперь вы должны иметь рабочую конфигурацию виртуальной машины, чей виртуальный VMDK-диск связан с реальным диском. Процесс установки точно такой же, как и описанный в
пошаговой установке Arch Linux в VirtualBox
, но сначала
убедитесь в постоянной схеме наименования разделов
и
корректности образа mkinitcpio
.
Важно
Для BIOS и MBR дисков: не устанавливайте загрузчик внутри виртуальной машины - он не будет работать, так как MBR не связан с MBR вашей реальной машины, и виртуальный диск отображается только в реальном разделе без MBR
Для UEFI систем без
CSM
и GPT дискa установка не будет работать вообще, так как:
ESP
не отображается на виртуальный диск и Arch Linux требует, чтобы ядро Linux было на нём, чтобы загрузиться в качестве приложения EFI (смотрите статью
EFISTUB (Русский)
)
и efivars, если вы устанавливаете Arch Linux через VirtualBox, используя режим EFI, не загрузит ни одну из ваших реальных систем: записи Bootmanager не смогут быть зарегистрированы
Вот почему рекомендуется создавать разделы в родной установке. В противном случае разделы не будут приниматься во внимание в MBR / GPT таблице разделов
После завершения установки загрузите компьютер сперва с установочного носителя GNU/Linux (будь то Arch Linux или нет), выполните
chroot
в установленной Arch Linux и установите и настройте
загрузчик
.
Перемещение физически установленного Windows в виртуальную машину
Если вы хотите перенести существующую Windows на виртуальную машину, которая будет использоваться с VirtualBox на GNU/Linux, этот вариант использования для вас. В этом разделе описан перенос только Windows с использованием схемы MSDOS/Intel разделов. Ваш Windows должен находиться на первом после MBR разделе. Работа в других разделах доступна, но были не тестировалась (см
Известные ограничения
для более подробной информации)
Важно
Если вы используете OEM версию Windows, этот процесс является неправомочным по конечной пользовательской лицензии. Действительно, лицензия OEM, как правило, указывает, что Windows Install связана с аппаратными средствами. Сделайте так, что бы у вас был полный Windows Install или полная лицензия, прежде чем продолжить. Если у вас есть полная лицензию для Windows, но последний не приходит в объеме, ни в качестве специальной лицензии на нескольких компьютерах, это означает, что вы должны будете удалить родную установку после операции клонирования в VM.
Несколько задач необходимо выполнить внутри вашей Windows, а затем в хост-машине GNU/Linux.
Задачи в Windows
Первые три следующих моменты происходит от
этой устаревшей вики-страницы VirtualBox
, но обновляются здесь.
Удалите проверку IDE/ATA контроллеров (только Windows XP): Windows запоминает IDE/ATA после установки, и не будет загружаться, если он обнаружит что они изменились.Решение, предложенное Microsoft является повторным использованием того же контроллера или использовать один из той-же серии, что невозможно сделать, поскольку мы используем виртуальную машину.
MergeIDE
, немецкий инструмент, разработан как другое решением, предложенное Microsoft. Решение в основном состоит в принятии всех IDE/ATA драйверов контроллера IDE, поддерживаемые Windows XP от первоначального архива драйвера, их установке и регистрации в реестре через Regedit.
Используйте правильный тип слоя абстрагирования оборудования (старые 32-битный Windows): Microsoft использует с 3 версии по умолчанию:
Hal.dll
(Standard PC),
Halacpi.dll
(ACPI HAL) и
halaacpi.dll
(ACPI HAL с IO APIC). Ваша Windows-установка могла устанавитmся с первого или второго варианта. В этом случае, пожалуйста,
отключите
Enable IO/APIC
в расширенных возможностях VirtualBox
.
Отключите драйвер AGP устройства (только устаревшие версии ОС Windows): Если у вас есть файлы
agp440.sys
или
intelppm.sys
внутри
C:\Windows\System32\drivers\
, то удалите его. Так как VirtualBox использует PCI виртуальную графическую карту, это может вызвать проблемы, когда используется драйвер AGP.
Создайте диск восстановления ОС Windows: В следующих шагах, если что-то испортится, вам нужно будет восстановить установку Windows. Убедитесь, что у вас есть установочного носителя под рукой, или создайте через
Создать диск восстановления
в Vista SP1,
Создать диск восстановления системы
в Windows 7 или
Создать диск восстановления
в Windows 8.x).
Задачи в GNU/Linux
Уменьшите родной размер раздела Windows, для чего нужен
ntfsresize
из пакета
ntfs-3g
. Вы определяете размер, который будет равен размере VDI, который будет создан на следующем шаге. Если этот размер будет слишком мал, вы можете сломать ваш Windows и он может не загружаться вообще.
Используйте параметр
--no-action
для тестового запуска:
# ntfsresize --no-action --size
52Gi
/dev/sda1
Если тестовый запуск прошёл успешно, только тогда запустите эту команду снова, но уже без параметра
--no-action
.
Установите VirtualBox на ваш GNU/Linux хост (смотрите раздел
#Установка
).
Создайте образ диска для Windows от начала диска до конца первого раздела, на котором находится Windows. Копирование с начала диска необходимо потому, что пространство MBR в начале диска должно быть перенесено на виртуальный диск вместе с самим Windows. В этом примере следующие два раздела
sda2
и
sda3
будут позже удалены из таблицы разделов и загрузчик MBR будет обновляться.
# sectnum=$(( $(cat /sys/block/
sda/sda1
/start) + $(cat /sys/block/
sda/sda1
/size) ))
Команда
cat /sys/block/
sda/sda1
/size
выведет количество секторов первого раздела диска
sda
. Адаптируйте команду под ваши нужды.
# dd if=
/dev/sda
bs=512 count=$sectnum | VBoxManage convertfromraw stdin
windows.vdi
$(( $sectnum * 512 ))
Мы должны показать размер в байтах,
$(( $sectnum * 512 ))
преобразует номера секторов в байты.
Так как вы создали свой образ диска с правами администратора, установите правильного владельца файлу образа диска:
# chown
ваш_пользователь
:
ваша_группа
windows.vdi
Создайте файл настроек виртуальной машины — используйте виртуальный диск, созданный ранее в качестве основного виртуального диска.
Попробуйте загрузиться с виртуальной машины Windows (может заработать). Во-первых, хотя бы отключите восстановление дисков из процесса загрузки, так как это может помешать (и, вероятно, будет мешать) загрузиться в безопасном режиме.
Попытайтесь загрузить виртуальную машину в безопасном режиме (нажмите клавишу F8 до логотипа Windows)... при возникновении проблем с загрузкой смотрите раздел
#Исправление MBR и загрузчика Microsoft
. В безопасном режиме, вероятно, будут установлены драйверы. Кроме того, установите Дополнения гостевой ОС через меню
Устройства
>
Подключить образ диска Дополнений гостевой ОС...
. Если окно действий над подключенным диском не появилось, откройте диск и запустите установку вручную.
Наконец-то у вас есть необходимый Windows в виртуальной машине. Ознакомьтесь с
известными ограничениями
.
Исправление MBR и загрузчика Microsoft
Если ваша виртуальная машина с Windows отказывается загружаться, вам, возможно, потребуется применить следующие изменения в вашей виртуальной машине.
Начальная загрузка GNU/Live внутри виртуальной машины, прежде чем загрузится ОС Windows .
Удалить другие записи разделы с MBR виртуального диска. В самом деле, так как мы скопировали MBR и только раздел Windows, записи, относящихся к другим разделам по-прежнему присутствуют в MBR, но разделы ведь больше не доступны. Используйте
fdisk
, чтобы добиться этого, например.
fdisk ''/dev/sda''
Command (m for help): a
Partition number (''1-3'', default ''3''): ''1''
Запишите обновленную таблицу разделов на диск (это будет пересозданием MBR) с помощью
m
команды в окружении
fdisk
.
Используйте
testdisk
(см.
здесь
для более подробной информации), чтобы добавить общий MBR:
# testdisk >
Disk /dev/sda...'
> [Proceed] > [Intel] Intel/PC partition > [MBR Code] Write TestDisk MBR to first sector > Write a new copy of MBR code to first sector? (Y/n) > Y > Write a new copy of MBR code, confirm? (Y/N) > A new copy of MBR code has been written. You have to reboot for the change to take effect. > [OK]
С новым MBR и обновленной таблицей разделов, ваша виртуальная машина с Windows должна загрузиться. Если вы все еще сталкиваетесь с вопросами, загрузите диск восстановления Windows с предыдущей стадии, и внутри вашей среды Windows RE, выполняйте команды
описанные здесь
.
Известные ограничения
Ваша виртуальная машина может иногда зависать и забивать оперативную память, это может быть вызвано конфликтующими драйверами , установленными внутри виртуальной машины Windows. Удачи вам найти их!
Дополнительное ПО ожидало драйвер,который не может установиться из-за невозможности отключения / деинсталляции старого драйвера.
Ваша Windows должна находиться в первом разделе для описанного выше процесса, чтобы заработать. Если это требование не выполнено, система может работать, но это не было испытаны. Это потребует либо копирования MBR и редактирования в шестнадцатеричном коде, см.
VirtualBox: загрузка клонированного диска
или потребуется исправить таблицу разделов
вручную
или восстанавливать Windows с диска восстановления, созданного в предыдущем шаге. Рассмотрим нашу установку окна на втором раздела; мы скопируем MBR, второму разделу, где лужит образ диска
VBoxManage convertfromraw
необходимо общее количество байтов, которые будут записаны: Вычислим как сумму размера MBR (начало первого раздела) плюс размер второго (Windows) раздела.
{ dd if=/dev/sda bs=512 count=$(cat /sys/block/sda/sda1/start) ; dd if=/dev/sda2 bs=512 count=$(cat /sys/block/sda/sda2/size) ; } | VBoxManage convertfromraw stdin windows.vdi $(( ($(cat /sys/block/sda/sda1/start) + $(cat /sys/block/sda/sda2/size)) * 512 ))
.
Решение проблем
VERR_ACCESS_DENIED
Чтобы получить доступ к образу VMDK, расположенного на хосте под Windows, запустите VirtualBox GUI от имени администратора.
Клавиатура и мышь заблокированы виртуальной машиной
Это означает, что ваша виртуальная машина захватила ввод клавиатуры и мыши. Просто нажмите правый
Ctrl
, и ваши устройства ввода станут доступны в основной системе.
Для того, чтобы управление мышь возвращалось основной ОС при выходе курсора за границы окна виртуальной машины без нажатия каких-либо клавиш и для возможности бесшовной интеграции установите гостевое дополнение на виртуальную машину. Читайте шаг
#Установка гостевых дополнений
, если вы новичок в Arch Linux, или читайте официальную справку VirtualBox.
Не работают 64-битные гостевые ОС
При запуске клиента VM, если никакие 64-битные варианты не доступны, убедитесь что ваши возможности виртуализации процессора (обычно с именем
VT-X
) включены в BIOS.
Не могу отправить комбинацию CTRL+ALT+Fn в виртуальную машину
Если в вашей виртуальной машине установлен дистрибутив GNU/Linux и вы хотите открыть новую оболочку TTY нажатием
Ctrl+Alt+F2
или выйти из X сессии с помощью
Ctrl+Alt+Backspace
, просто нажав это сочетание клавиш без какой-либо адаптации, гостевая машина его не получит и основная ОС (если это тоже дистрибутив GNU/Linux) распознает это сочетание клавиш. Для отправки
Ctrl+Alt+F2
на виртуальную машину нужно просто нажать ваш
Host Key
(обычно это правый
Ctrl
) и одновременно нажать
F2
.
Исправление проблем в ISO-образах
В то время как VirtualBox монтирует оригинальный образы ISO без проблем, есть такие форматы образов, которые не могут надежно быть преобразованы в ISO. Например, ccd2iso игнорирует .ccd и .sub файлы, что может привести к созданию образа диска с разбитыми файлами.
В этом случае вам придется использовать
CDemu
для Linux внутри VirtualBox или любую другую утилиту, предназначенную для монтирования образов дисков.
VirtualBox GUI не видит мою тему GTK 2x/3x
Смотрите
Единый интерфейс GTK/QT приложений
для получения информации о настройке GUI Qt в GTK-окружениях.
OpenBSD не работает при недоступных инструкциях виртуализации
В то время как OpenBSD отлично работает на других гипервизорах без включенной виртуализации (VT-х AMD-V), виртуальная машина с OpenBSD работает в VirtualBox без этих инструкций некорректно, выдавая кучу ошибок сегментации. Запуская VirtualBox с аргументом
-norawr0
можно избавиться от этой проблемы
. Вы можете сделать это следующим образом:
$ VBoxSDL -norawr0 -vm
имя_OpenBSD_VM
VBOX_E_INVALID_OBJECT_STATE (0x80BB0007)
Это может произойти при некорректном завершении виртуальной машины. Разблокировка машины тривиальна:
$ VBoxManage controlvm
virtual_machine_name
poweroff
Подсистема USB не работает
Ваш пользователь должен быть в группе
vboxusers
, и вы должны установить
пакет дополнений
, если хотите иметь поддержку USB 2. Тогда вы сможете включить USB 2 в настройках виртуальной машины и добавить один или несколько фильтров для устройств, которые будут иметь доступ из гостевой ОС.
Иногда, на старых Linux-хостах, подсистема USB не распознается автоматически и выдает ошибку
Could not load the Host USB Proxy service: VERR_NOT_FOUND
или при невидимом USB-диске в хост-машине,
даже когда пользователь находится в группе
vboxusers
. Эта проблема происходит из-за того, что VirtualBox переключается с
usbfs
на
sysfs
с версии 3.0.8. Если хост-машина не распознаёт этого изменения, вы можете вернуться к старому поведению, определив следующую переменную окружения в любом файле, которые конфигурирует вашу оболочку (например, в
~/.bashrc
, если вы используете
bash
):
~/.bashrc
VBOX_USB=usbfs
Затем убедитесь, что, окружающая среда приняла это изменение (перелогиньтесь, запустите новый экземпляр оболочки или перезагрузитесь).
Также убедитесь, что ваш пользователь состоит в группе
storage
.
Ошибка создания сетевого интерфейса "host-only"
Убедитесь в том, что все модули ядра VirtualBox загружены (см.
Загрузка модулей ядра VirtualBox
).
WinXP: глубина цвета не может превышать 16 цветов
Если Вы работаете в 16-битной глубине цвета, то значки будут отображаться некорректно. Тем не менее, при попытке изменить глубину цвета на более высокий уровень, система может ограничить вас с более низким разрешением или просто не позволит вам изменить глубину вообще. Чтобы это исправить, запустите
regedit
в Windows и добавьте следующий ключ реестра для виртуальной машины Windows XP:
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
"ColorDepth"=dword:00000004
Затем обновите глубину цвета в "Свойствах рабочего стола". Если ничего не происходит, заставьте экран перерисоваться (например, нажмите
Host+f
).
Использование последовательных портов в гостевой ОС
Проверьте наличие прав для доступа к последовательным портам:
$ /bin/ls -l /dev/ttyS*
crw-rw---- 1 root uucp 4, 64 Feb  3 09:12 /dev/ttyS0
crw-rw---- 1 root uucp 4, 65 Feb  3 09:12 /dev/ttyS1
crw-rw---- 1 root uucp 4, 66 Feb  3 09:12 /dev/ttyS2
crw-rw---- 1 root uucp 4, 67 Feb  3 09:12 /dev/ttyS3
Добавьте пользователя в группу
uucp
# gpasswd -a $USER uucp
и перелогиньтесь.
Windows 8.x ошибка 0x000000C4
Если вы получаете этот код ошибки при загрузке, даже при выбранном типе OS Win 8, попробуйте включить инструкцию процессора
CMPXCHG16B
:
$ vboxmanage setextradata
virtual_machine_name
VBoxInternal/CPUM/CMPXCHG16B 1
Windows 8 VM вылетает при загрузке с ошибкой "ERR_DISK_FULL"
Если ваша Windows 8 не запускается, VirtualBox выдаёт ошибку что виртуальный диск заполнен, но тем не менее вы уверены что диск не является заполненным,
откройте настройки виртуальной машины
Настройки>Память>Контроллер: SATA
и выберите
Use Host I/O Cache
.
Гостевая ОС Linux выдаёт искажённый или запаздывающий звук
Аудио драйвер AC97 в ядре linux иногда неправильно считывает время из Virtual Box, что приводит к различным искажениям звука. Для исправления проблемы, создайте файл
/etc/modprobe.d
со следующим содержанием:
options snd-intel8x0 ac97_clock=48000
Гостевая ОС зависает после запуска Xorg
Неисправные или отсутствующие драйверы могут привести к остановке после запуска Xorg, см., например,
[3]
и
[4]
[
устаревшая ссылка
2020-08-06 ⓘ]
. Попробуйте отключить 3D-ускорение в
Настройки> Дисплей
, и проверьте, все ли драйверы
Xorg
установлены.
Исчезновение пунктов меню и ошибка "NS_ERROR_FAILURE"
Если после первого запуска машины вы столкнулись с такой ошибкой:
Failed to open a session for the virtual machine debian.
Could not open the medium '/home/.../VirtualBox VMs/debian/debian.qcow'.
QCow: Reading the L1 table for image '/home/.../VirtualBox VMs/debian/debian.qcow' failed (VERR_EOF).
VD: error VERR_EOF opening image file '/home/.../VirtualBox VMs/debian/debian.qcow' (VERR_EOF).

Result Code:
NS_ERROR_FAILURE (0x80004005)
Component:
Medium
Выйдите из VirtualBox, удалите все файлы новой машины и из файла конфигурации VirtualBox удалите последнюю строку в
MachineRegistry
меню:
~/.config/VirtualBox/VirtualBox.xml
...
<MachineRegistry>
  <MachineEntry uuid="{00000000-0000-0000-0000-000000000000}" src="/home/void/VirtualBox VMs/debian/debian.vbox"/>
  <MachineEntry uuid="{00000000-0000-0000-0000-000000000000}" src="/home/void/VirtualBox VMs/ubuntu/ubuntu.vbox"/>
<MachineEntry uuid="{00000000-0000-0000-0000-000000000000}" src="/home/void/VirtualBox VMs/lastvmcausingproblems/lastvmcausingproblems.qcow"/>
</MachineRegistry>
...
Это иногда происходит при выборе
QCOW
/
QCOW2
/
QED
формата виртуального диска.
"Указанный путь не существует. Проверьте путь и попробуйте еще раз." Ошибка в гостевой ОС Windows
Это сообщение об ошибке часто появляется при работе с расширением .exe который требует привелегий администратора из общей папки в гостевой Windows. См.
отчет об ошибке
.
Есть несколько способов обойти ошибку:
Отключить UAC с помощью Панель управления -> Центр поддержки -> "Settings Change User Account Control" из левой боковой панели -> Установить ползунок "Никогда не уведомлять» -> OK и перезагрузить ОС
Скопируйте файл из папки общего доступа в гостевую ОС и запустите оттуда
Смотрите также
Руководство пользователя VirtualBox
Википедия:VirtualBox