Linux
October 17

Qemu - лучшая замена VBox и VMWare. Установка и использование

Когда речь идёт о виртуальных машинах, то чаще всего люди представляют себе Virtual Box или VMWare. Это очень популярные программы виртуализации, которые работают на Windows и Linux. В чем же их проблема? А проблема в том, что это проприетарные продукты с закрытыми участками кода. Да, сам по себе код VBox открыт, но те же драйверы Oracle USB поставляются уже с закрытым исходным кодом. Более того, VBox имеет ограничения в ряде конфигураций и поддерживает только архитектуры x86 и x64.
Qemu в свою очередь, полностью открытый и гибко настраиваемый. Основной его недостаток в том, что он не так удобен, как тот же VBox, ведь все настройки приходится делать в консоли, а не графическом интерфейсе.

Что же лучше - Qemu или VirtualBox?
Тут все зависит исключительно от ваших потребностей. Если вам нужна простая виртуализация без дополнительного функционала, то подойдет VirtualBox. Главное, не устанавливать Extention Pack, т.к. он содержит закрытые участки кода. Особенно это важно, если вам необходимо соблюдать анонимность. Еще советую поменять дефолтное расположение логов, т.к. они могут содержать персональную информацию, но об этом я расскажу чуть позже.
Если же вам нужен полный спектр функций, включая работу с USB-устройствами, поддержку множества различных архитектур и т.п., то VBox уже не подойдет и на его замену встанет Qemu. И VBox, и Qemu по своему хороши, но имеют свои недостатки и для конечного пользователя представляют разные предназначения. Именно поэтому в этой статье я расскажу не только про Qemu, но и еще затрону VBox. Расскажу о том, какие логи он хранит, как их удалить и как сменить их дефолтное расположение на более безопасное.

Зачем так заморачиваться?
Кому-то может показаться, что Qemu - это что-то излишнее и нет ничего страшного в том, чтобы использовать Extention Pack с закрытым кодом.
Во-первых, мой канал по большей части посвящен информационной безопасности, где свободное ПО и отсутствие потенциальных уязвимостей является одним из главнейших факторов. Конечно, избавиться полностью от проприетарного ПО очень сложно и далеко не каждый готов пойти на такое (можно взять в пример те же прошивки Intel ME и AMD PSP), но минимизировать их использование не будет лишним.
Во-вторых, Qemu - это не только про открытый код, но еще про функционал и скорость. Как я уже отметил ранее, в этом он лидер по сравнению с VBox, и для кого-то это не просто приятный бонус, но еще и необходимость.


Логи VBox

Я не буду рассказывать про установку и настройку VBox, т.к. об этом полно информации в интернете, но сделаю важное отступление:
мне не нравится, то что при запуске моей системы (arch linux) автоматически происходит загрузка модулей ядра virtualbox. Чтобы избавиться от автоматической загрузки, можно создать пустой конфигурационный файл (или символическую ссылку на /dev/null) с таким же именем, как у оригинального конфига, который лежит по пути /usr/lib/modules-load.d/:

Ручной запуск модуля:
modprobe vboxdrv

Об этом я узнал из Arch Wiki.

Теперь перейду к теме статьи и расскажу про то, как VBox хранит логи на вашем компьютере и что они содержат.
Когда вы настраиваете, запускаете и используете виртуальные машины, VBox автоматически логирует ваши некоторые действия и хранит информацию в специальных лог-файлах. Даже после удаления виртуальной машины эти логи остаются до тех пор, пока вы сами их не удалите.
Логи общего назначения хранятся в директории ~/.config/VirtualBox:

Они хранят базовую информацию, например дату и время действий, сведения об ОС, сетевых интерфейсах и прочее. Их желательно удалять после каждого использования VBox, если вы храните какие-то секреты.

Логи виртуальных машин хранятся в отдельной директории. По умолчанию - это ~/VirtualBox VMs. Их также следует удалять, если это необходимо. Путь к директории можно изменить в настройках:

Например, предлагаю создать защищенный криптоконтейнер и поместить секретные виртуальные машины туда.


Qemu

Установка в Arch Linux выполняется довольно просто:
sudo pacman -S qemu-full

Вся настройка виртуалки происходит через консоль. Например, вот как создать виртуальную машину и запустить ее:

  1. Создаем виртуальный жесткий диск:
    qemu-img create -f qcow2 kali.qcow 80G
    -f qcow2 - это формат файла (по умолчанию qemu использует формат qcow2); kali.qcow - это название файла; 80G - размер файла.
  2. Запускаем виртуалку:
    qemu-system-x86_64 -hda kali.qcow -boot d -cdrom ~/Downloads/kali-linux-2025.2-installer-amd64.iso -m 2048 -enable-kvm -vga qxl
    В этой команде мы подключаем жесткий диск как hda, указываем что нужно загружаться с cdrom, подключаем образ.iso к нему, выделяем 2048мб оперативной памяти, включаем kvm и используем виртуальную видеокарту.

Далее, после того как мы завершим процесс установки KALI Linux, вводим ту же самую команду для запуска виртуальной машины, но уже не указываем ISO-образ:
qemu-system-x86_64 -hda kali.qcow -boot d -m 2048 -enable-kvm -vga qxl

Извлекаем файлы из виртуалки qemu

А сейчас мы посмотрим, как из виртуальной машины можно достать файлы. Конечно, я мог бы рассказать про проброс USB-портов, чтобы в дальнейшем передавать файлы на какой-нибудь съемный USB-носитель, и это было бы даже в какой-то степени проще, чем заниматься извлечением данных из образа, но все-таки я хочу пойти немного по нестандартному пути. Да и к тому же, про проброс USB и так есть немало информации на просторах интернета.

Итак, вот файл, который я создал на рабочем столе в виртуальной машине:

А вот его содержимое:

Теперь представим, что мы хотим достать этот файл из виртуальной машины. Вырубаем виртуалку и смотрим, где она расположена:

Смотрим информацию:
qemu-img info kali.qcow

Конвертируем в raw:
qemu-img convert -f qcow2 -O raw kali.qcow kali.raw

Снова смотрим информацию, но уже о файле.raw:
qemu-img info kali.qcow

Теперь выведем информацию о разделах через fdisk:
sudo fdisk -l kali.raw

Как видно на скрине, файл содержит таблицу разделов. Создаем директорию, в которую будем монтировать нужный раздел:
sudo mkdir -pv /mnt/kali

Теперь создаем loop-устройство:
losetup -fP kali.raw

Смотрим созданные разделы:
lsblk

И монтируем:
sudo mount /dev/loop0p1 /mnt/kali

Теперь переходим в директорию рабочего стола Kali:
cd /mnt/kali/home/kali/Desktop

И смотрим список файлов:
ls

Содержимое файла secret:
cat secret

Чтобы освободить loop-устройство по окончанию работы:
sudo losetup -d /dev/loop0


Заключение

Сегодня мы с вами научились создавать виртуальные машины и даже извлекать из них данные, а еще немного затронули тему конфиденциальности в VirtualBox.

Qemu - это идеальный вариант с открытым исходным кодом для тех, кому нужна гибкая настройка виртуальной машины. Настраивать бывает не всегда удобно в связи с отсутствием графического интерфейса, но зато мы получаем возможности, которых нет в VirtualBox и VMWare, например высокую производительность и поддержку множества архитектур. Кроме того, qemu обеспечивает более глубокую интеграцию с другими инструментами, такими как KVM, что позволяет эффективно использовать ресурсы хоста. Qemu представляет расширенные возможности для тех, кто ищет надежное и масштабируемое решения для виртуализации.


Мой Telegram

Мой GitHub

Поддержать автора донатом