Требования к системе виртуализации
Для установки и функционирования vESBC установленная версия QEMU должна быть не ниже 2.6.2.
Использование командной строки QEMU
Полный список комад QEMU предоставляется в официальной документации.
Создание виртуальной машины
В примере описан процесс создания файла образа диска в формате QCow2 и подключения его в хостовой операционной системе.
Для того чтобы создать файл образа диска, необходимо выполнить команду:
qemu-img create -f qcow2 -o size=<размер_диска>M <наименование_диска>.qcow2
Пример:
admin@host:~$ qemu-img create -f qcow2 -o size=2000M vesbc.qcow2 admin@host:~$ Formatting 'vesbc.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=393216000 lazy_refcounts=off refcount_bits=16
Установка vESBC
Для запуска установки vESBC необходимо выполнить команду:
sudo qemu-system-x86_64 --enable-kvm -cpu <CPU> -smp <количество_CPU> -m <размер_RAM>G -nic <тип и параметры сетевой карты> <наименование_диска>.qcow2 -boot d -cdrom <имя_ISO-образа>
где:
--enable-kvm — включение полной поддержки виртуализации KVM;
-cpu — модель процессора, например, параметр -cpu host передает виртуальной машине все возможности, флаги и инструкции (например, AES-NI, AVX, VT-x) вашего реального физического процессора;
-smp — включение имитации SMP-системы с n CPU;
-m — выбор размера виртуальной RAM;
-nic — настройки сетевой карты;
-boot — выбор загрузки. Значение d указывает на CD-ROM;
-cdrom — выбор файла ISO-образа.
Пример запуска установки vESBC :
admin@host:~$ sudo qemu-system-x86_64 --enable-kvm -cpu host -smp 4 -m 4G -nic bridge,br=0,model=virtio-net-pci vesbc.qcow2 -boot d -cdrom vesbc-installer.iso
Дальнейшие действия по установке vESBC описаны в разделе Процесс установки vESBC.
После установки необходимо извлечь ISO из виртуального привода, для этого:
- Перейдите в консоль QEMU сочетанием клавиш CTRL+ALT+2.
- Введите команду выхода quit.
Последующий запуск vESBC необходимо производить без указания ISO (флага -boot).
Пример запуска vESBC :
admin@host:~$ sudo qemu-system-x86_64 --enable-kvm -cpu host -smp 4 -m 4G -nic bridge,br=0,model=virtio-net-pci vesbc.qcow2
Подключение сетевых интерфейсов
В режиме TAP
Для подключения сетевого интерфейса необходимо запустить vESBC на QEMU с указанием настроек сетевой карты -nic tap,ifname=gi1 (если необходимо подключить несколько сетевых интерфейсов, то необходимо их всех указать, например, -nic tap,ifname=gi1 -nic tap,ifname=gi2). На хостовом устройстве необходимо перевести созданный интерфейс в состояние UP и назначить IP-адрес для обеспечения IP-связности vESBC и хостовой операционной системы.
Пример запуска vESBC с одним сетевым интерфейсом:
sadmin@host:~$ sudo qemu-system-x86_64 --enable-kvm -cpu host -smp 4 -m 4G -nic tap,ifname=gi1 vesbc.qcow2
Перевод созданного интерфейса в состояние UP и назначение IP-адреса на хосте:
admin@host:~$ ip link set gi1 up admin@host:~$ ip add add 192.168.1.1/24 dev gi1
Настройте IP-адресацию на vESBC и проверьте IP-связность c хостом:
vesbc# config vesbc(config)# interface gigabitethernet 1/0/1 vesbc(config-if-gi)# ip address 192.168.1.2/24 vesbc(config-if-gi)# exit vesbc(config)# exit Warning: you have uncommitted configuration changes. vesbc# commit Configuration has been successfully applied and saved to flash. Commit timer started, changes will be reverted in 600 seconds. vesbc# confirm Configuration has been confirmed. Commit timer canceled. vesbc# ping 192.168.1.1 PING 192.168.1.1 (192.168.1.1) 56 bytes of data. !!! --- 192.168.1.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 0.150/0.223/0.313/0.069 ms
Теперь есть прямая IP-связность с хостом, возможность подключения к vESBC по Telnet, SSH, WEB, а также обновления прошивки vESBC, загрузки и выгрузки файлов.
В режиме Linux Bridge
Linux Bridge — это программный сетевой модуль ядра Linux, работающий как виртуальный сетевой коммутатор (switch) на 2-м уровне модели OSI. Он объединяет физические (например, eth0) и виртуальные (veth, TAP) сетевые интерфейсы в один общий сегмент сети (L2-домен), позволяя им обмениваться данными напрямую по MAC-адресам.
При использовании Linux Bridge требуется предварительная конфигурация бриджей в хостовой операционной системе.
Пример конфигурации файла config.yaml при конфигурировании через netplan для ОС Ubuntu 20.04.6 TLS:
network:
version: 2
ethernets:
eno1: // eno1 - физический интерфейс хоста, который будет использоваться для подключения виртуальной машины vESBC к сети передачи данных.
dhcp4: no
dhcp6: no
eno2:
dhcp4: no
dhcp6: no
enp24s0f0:
dhcp4: no
enp24s0f1:
dhcp4: no
bridges:
br0: // br0 - создание бриджа br0.
interfaces:
- eno1 // добавление интерфейса eno1 в бридж.
addresses:
- 192.168.113.140/20 // настройка IP-адреса хоста (если необходима IP-связность между хостом и виртуальными машинами).
routes:
- to: default // настройка шлюза по умолчанию.
via: 192.168.112.1
nameservers:
addresses:
- 8.8.8.8 // настройка DNS-сервера.
parameters:
stp: false
dhcp4: no
br1:
interfaces: []
parameters:
stp: false
dhcp4: no
Пример запуска виртуальной машины vESBC с сетевым интерфейсом на базе бриджа br0 и драйвером сетевого адаптера virtio:
admin@host:~$ sudo qemu-system-x86_64 --enable-kvm -cpu host -smp 4 -m 4G -nic bridge,br=br0,model=virtio-net-pci vesbc.qcow2
В режиме PCI Passthrough
PCI Passthrough (сквозной проброс PCI) — это технология виртуализации, которая позволяет «отдать» физическое устройство (видеокарту, сетевой адаптер, USB-контроллер) напрямую виртуальной машине.
В этом режиме гостевая ОС работает с устройством так, будто оно вставлено непосредственно в её материнскую плату, минуя уровень эмуляции гипервизора.
Прежде чем запускать QEMU, нужно «отвязать» карту от хоста и передать её драйверу vfio-pci:
- Включите IOMMU в BIOS/UEFI (параметры VT-d для Intel или AMD-Vi для AMD).
- Добавьте параметры ядра в загрузчик (например, в /etc/default/grub в строку GRUB_CMDLINE_LINUX_DEFAULT):
- Для Intel: intel_iommu=on
- Для AMD: amd_iommu=on
- Узнайте PCI-адрес карты:Если планируется, например, использование первого интерфейса сетевой кары, то адрес карты: 18:00.0 (ID устройства — [8086:1572])
admin@host:~$ lspci -nn | grep -i ethernet 18:00.0 Ethernet controller [0200]: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ [8086:1572] (rev 01) 18:00.1 Ethernet controller [0200]: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ [8086:1572] (rev 01)
- Привяжите карту к vfio-pci:
admin@host:~$ modprobe vfio-pci admin@host:~$ echo "0000:18:00.0" | sudo tee /sys/bus/pci/devices/0000:18:00.0/driver/unbind admin@host:~$ echo "8086 1572" | sudo tee /sys/bus/pci/drivers/vfio-pci/new_id
- Запустите виртуальную машину vESBC с проброшенным сетевым интерфейсом Intel X710 for 10GbE SFP+:
qemu-system-x86_64 --enable-kvm -cpu host -smp 4 -m 4G -device vfio-pci,host=18:00.0 vesbc.qcow2
Использование командной строки VIRSH
Virsh — это интерфейс командной строки для управления виртуальными машинами, сетями и хранилищами. Он работает через библиотеку libvirt и используется для управления гипервизором KVM.
Полный список команд Libvirt предоставляется в официальной документации.
Для отображения графической консоли vESBC рекомендуется установить virt-viewer:
sudo apt update sudo apt install virt-viewer
Создание виртуальной машины
- Создайте файл образа диска в формате QCow2 аналогично как описано выше.
- Укажите требуемые параметры виртуальной машины и выполните установку:
sudo virt-install --name <название ВМ> --ram <азмер_RAM> --vcpus <количество CPU> --disk <параметры диска> --os-variant <тип ОС> --network <сетевой адаптер> --graphics <графический вывод> --video <драйвер> --console <параметры консоли> --cdrom <образ ISO vESBC>
где:
--name — название виртуальной машины;
--ram — объем оперативной памяти;
--vcpus — количество ядер CPU;
-- disk — путь до файла диска, созданного в п. 1 Обязательно использовать bus=ide.
--osvariant — тип ОС, использовать generic;
--network — указание сетевого адаптера;
--graphics — настройки графического вывода виртуальной машины;
--video — драйвер видеоадаптера;
--console — настройка последовательного порта;
--cdrom — путь к ISO-образу vESBC.
Дальнейшие действия по установке vESBC описаны в разделе Процесс установки vESBC.
Пример установки:
udo virt-install --name vesbc --ram 4096 --vcpus 2 --disk path=/var/lib/libvirt/images/vesbc.qcow2,size=2,format=qcow2,bus=ide --os-variant generic --network bridge:br0,model=virtio --graphics spice,listen=127.0.0.1 --video virtio --console pty,target_type=serial --cdrom /var/lib/libvirt/images/vesbc-1.41.x-build89.iso --check disk_size=off
Дальнейший запуск, остановка и выполнение настроек виртуальной машины осуществляется через командный интерфейс virsh.
Подключение сетевых интерфейсов
В режиме Linux Bridge
Подключение сетевых интерфейсов осуществляется флагом –network при создании виртуальной машины, как описано в разделе выше.
При использовании Linux Bridge требуется предварительная конфигурация бриджей в хостовой операционной системе. Пример настройки приведен выше.
Для подключения созданного интерфейса к виртуальной машине используется флаг при ее создании:
--network bridge:br0,model=virtio
где:
br0 — название бриджа в хостовой ОС;
model=virtio — драйвер эмуляции virtio.
Помимо virtio можно использовать драйвер e1000 rtl8138. Драйвер virtio является более предпочтительным.
В режиме PCI Passthrough
PCI Passthrough (сквозной проброс PCI) — это технология виртуализации, которая позволяет «отдать» физическое устройство (видеокарту, сетевой адаптер, USB-контроллер) напрямую виртуальной машине.
В этом режиме гостевая ОС работает с устройством так, будто оно вставлено непосредственно в её материнскую плату, минуя уровень эмуляции гипервизора.
Для передачи сетевого интерфейса в виртуальную машину:
- Узнайте PCI-адрес карты:Если планируется, например, использование первого интерфейса сетевой кары, то адрес карты: 18:00.0.
admin@host:~$ lspci -nn | grep -i ethernet 18:00.0 Ethernet controller [0200]: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ [8086:1572] (rev 01) 18:00.1 Ethernet controller [0200]: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ [8086:1572] (rev 01)
- Для проброса интерфейса в виртуальную машину используйте флаг --hostdev при ее создании:где 18:00.0 — адрес сетевой карты.
--hostdev 18:00.0
Использование приложения Менеджер виртуальных машин (Virtual Machine Manager)
Virtual Machine Manager — это приложение для управления виртуальными машинами в операционных системах Linux при помощи графического интерфейса (GUI).
Создание виртуальной машины и установка vESBC
Шаг 1. Запустите "Менеджер виртуальных машин". Для создания виртуальной машины нажмите кнопку "Создать виртуальную машину" в главном меню:
Шаг 2. В окне "Новая виртуальная машина" оставьте метод установки — "Локальный ISO или CDROM" и нажмите кнопку "Forward":
Шаг 3. Нажмите кнопку "Обзор":
В открывшемся окне выберите образ ISO vESBC, затем нажмите кнопку "Выбор тома":
Перед выбором образа ISO поместите его в каталог /var/lib/libvirt/images/
Шаг 4. Деактивируйте чек-бокс "Automatically detect from the installation media / source". В поле "Choose the operating system you are installing" укажите "Generic default" и нажмите кнопку "Forward":
Шаг 5. Укажите количество ядер CPU и количество RAM в соответствующих полях, нажмите кнопку "Forward":
Шаг 6. Укажите объем HDD и нажмите кнопку "Forward":
Шаг 7. Укажите название виртуальной машины и нажмите кнопку "Готово". Также можно сразу указать сетевой адаптер, или настроить сеть позже.
Шаг 8. После создания виртуальной машины откроется окно установки vESBC. Дальнейшие действия по установке vESBC описаны в разделе Процесс установки vESBC.
Шаг 9. Если требуется донастройка (добавить/изменить сетевой адаптер, количество CPU, RAM и т. д.) виртуальной машины vESBC, выключите ее и откройте окно настроек кнопкой "Показать виртуальное оборудование".
Подключение сетевых интерфейсов
Перед изменением конфигурации виртуальной машины она должна быть выключена.
Шаг 1. Запустите "Менеджер виртуальных машин", выберите нужную виртуальную машину и нажмите кнопку "Открыть".
Шаг 2. Если сетевой адаптер уже был добавлен при создании виртуальной машины и требуется изменить его параметры, следует выбрать его в списке оборудования.
Изменение адаптера выполняется в настройке "Создать на базе". Доступны следующие режимы работы адаптера:
- Мост <название бриджа хостовой ОС>. Данный режим доступен в случае, когда бридж был предварительно сконфигурирован в хостовой ОС. В этом режиме интерфейс vESBC будет подключен к бриджу хостовой ОС.
- В поле "Модель устройства" указывается драйвер сетевого адаптера. Доступные драйвера:
- virtio — высокопроизводительный драйвер виртуализации. Данный драйвер используется по умолчанию.
- e1000 — эмуляция гигабитной сетевой карты Intel (82540EM).
- rtl8139 — эмуляция 100-мегабитной сетевой карты Realtek.
- В поле "Модель устройства" указывается драйвер сетевого адаптера. Доступные драйвера:
- Устройство хоста <название физического сетевого адаптера хоста> macvtap. Это способ подключения виртуальной машины к сети, при котором она получает свой собственный MAC-адрес и IP-адрес прямо из вашей физической локальной сети, к которой подключен физический интерфейс хоста.
- В поле "Режим" указывается один из режимов работы macvtap:
- Bridge (Мост) — все виртуальные машины, подключенные к хостовому сетевому адаптеру в этом режиме, могут свободно «общаться» друг с другом и с внешним миром, но связи между хостом и машинами нет.
- VEPA — трафик виртуальных машин будет передаваться на физический коммутатор, подключенный к интерфейсу хоста. Для работы в данном режиме физический коммутатор должен поддерживать стандарт 802.1Qb.
- Private (Приватный/Частная) — виртуальные машины могут выходить во внешнюю сеть через интерфейс хоста, но они полностью изолированы друг от друга.
- Passthrough (Сквозной/Проброс) — «эксклюзивный» доступ к сетевой карте конкретной виртуальной машины. Аналог передачи устройства PCI напрямую виртуальной машине.
- В поле "Модель устройства" указывается драйвер сетевого адаптера. Доступные драйвера:
- virtio — высокопроизводительный драйвер виртуализации. Данный драйвер используется по умолчанию.
- e1000 — эмуляция гигабитной сетевой карты Intel (82540EM).
- rtl8139 — эмуляция 100-мегабитной сетевой карты Realtek.
- В поле "Режим" указывается один из режимов работы macvtap:
В режиме macvtap связи межу хостовой ОС и виртуальной машиной нет. Также данный режим не подходит для организации кластера vESBC (за исключением режима Passthrough), т. к. при использовании протокола VRRP MAC-адрес vESBC будет отличаться отMAC-адреса сетевого интерфейса, и трафик не будет передаваться в виртуальную машину из-за особенностей реализации драйвера macvtap.
Шаг 3. Для добавления дополнительных сетевых адаптеров нажмите кнопку "Добавить оборудование" в нижнем левом углу (cм. скрин выше). В открывшемся окне выберете раздел "Сеть", укажите параметры адаптера и нажмите кнопку "Готово". Добавленный адаптер появится в списке оборудования виртуальной машины.
Шаг 4. Для проброса сетевой карты в виртуальную машину следует в окне выбора оборудования (см. предыдущий пункт) выбрать раздел "PCI-устройство узла", в списке устройств выбрать нужный сетевой адаптер и нажать кнопку "Готово". Добавленный адаптер появится в списке оборудования виртуальной машины:
Подключение последовательного порта
С использованием командной строки QEMU
Для подключения последовательного порта vESBC к pty хоста следует добавить опцию к используемой команде запуска эмулятора QEMU:
-serial pty
После запуска команды появится строка с номером pty, на который перенаправлен вывод:
char device redirected to /dev/pts/3 (label serial0)
Команда для подключения к pty с помощью minicom:
sudo minicom -D /dev/pts/3
Либо можно использовать подключение последовательного порта vESBC к pipe в файловой системе хоста. Для этого нужно добавить опцию:
-serial unix:/tmp/vesbc-qemu,server,nowait
Команда для подключения к pipe с помощью minicom:
sudo minicom -D unix#/tmp/vesbc-qemu
С использованием командной строки VIRSH
Для подключения последовательного порта vESBC к pty хоста следует добавить флаг --console при установке виртуальной машины.
Пример флага для настройки pty:
--console pty,target_type=serial
Для подключения к консоли используйте команду:
virsh console <имя_ВМ>
Для выхода из консоли нажмите комбинацию клавиш Ctrl + ].
С использованием приложения Менеджер виртуальных машин (Virtual Machine Manager)
При создании виртуальной машины виртуальная консоль pty создается автоматически:
Для подключения к консоли запустите виртуальную машину, посмотрите номер pty:
Команда для подключения к pty с помощью minicom:
sudo minicom -D /dev/pts/4
















