Kvm руководство пользователя

Время на прочтение
7 мин

Количество просмотров 91K

Вступление

tux and beastieКак и было обещано в предыдущей статье, сегодня мы поговорим о базовой настройке хост-машины для работы KVM.

Для начала необходимо узнать, есть ли у нашего процессора необходимые инструкции для поддержки виртуализации.

$ egrep '(vmx|svm)' /proc/cpuinfo

Если есть — это замечательно.

Подготовка операционной системы

Установку Debian Squeeze я, пожалуй, описывать не буду: если уж вы добрались до KVM, то установка системы — плёвое дело.

Устанавливать нужно будет 64-битную OS, поскольку необходимые пакеты есть только для этой архитектуры.

В Debian Squeeze «свежесть» пакетов с KVM и сопутствующих программами нас совсем не устраивает, поскольку очень много всяких фиксов и фич попросту пройдут мимо нас. Поэтому мы добавим репозитории Debian Sid и experimental:

deb http://ftp.ru.debian.org/debian sid main contrib non-free
deb-src http://ftp.ru.debian.org/debian sid main contrib non-free

deb http://ftp.ru.debian.org/debian experimental main contrib non-free
deb-src http://ftp.ru.debian.org/debian experimental main contrib non-free

Указываем, что у нас базовый дистрибутив stable, а не то, что подумала система:

# echo 'APT::Default-Release "stable";' > /etc/apt/apt.conf.d/default

Оттуда нам понадобятся пакеты:

# aptitude -t experimental install linux-image-2.6.39-1-amd64 qemu-kvm virtinst libvirt-bin

Из стабильного репозитория нам будут нужны:

# aptitude install uml-utilities bridge-utils

На вашем рабочем десктопе вы можете поставить virt-manager (GUI-утилита), который позволит удобно создавать нужные конфигурации виртуальных машин.

Ядро

Ядро чем «свежее» — тем лучше (в известных пределах конечно: из git, например, я бы ставить не рекомендовал). Хорошим вариантом будет 2.6.39, вышедшее недавно.

Следует отметить, что в стандартном ядре отсутствует модуль для поддержки записи в UFS2, и если планируется запускать гостевую FreeBSD, потребуется собрать ядро с этим модулем. Ну и, конечно, в Debian-овском ядре отсутствуют свежие версии cgroups.

Что должно быть включено в ядре для использования максимального объема требуемого функционала:

CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_NET=y
CONFIG_VIRTIO_CONSOLE=y
CONFIG_HW_RANDOM_VIRTIO=y
CONFIG_VIRTIO=y
CONFIG_VIRTIO_RING=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BALLOON=y
CONFIG_CGROUPS=y
CONFIG_CGROUP_NS=y
CONFIG_CGROUP_FREEZER=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_CGROUP_MEM_RES_CTLR=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=y
CONFIG_CGROUP_SCHED=y
CONFIG_BLK_CGROUP=y
CONFIG_NET_CLS_CGROUP=y

Затем идём по ссылке и устанавливаем все deb-пакеты оттуда, копируем insmod.static в /sbin/insmod.static (это нужно, поскольку в работе libguestfs использует статически скомпилированную версию insmod, а в Debian и Ubuntu такого файла просто нет, однако в последней версиии febootstrap эту проблему устранили, insmod.static более не нужно загружать на сервер). libguestfs позволяет нам получать доступ к диску VDS через API libguestfs(C, Perl, Python, PHP) или через утилиту guestfish.

Первый блин

Сейчас мы установили все, необходимое для запуска VDS, их доступа в сеть и установки самой виртуальной машины.

Давайте попробуем что-нибудь поставить, например, тот же самый Debian. Пока без настройки сети, просто, по умолчанию.

Скачиваем установщик netinstall:

$ wget cdimage.debian.org/debian-cd/6.0.1a/i386/iso-cd/debian-6.0.1a-i386-netinst.iso

Редактируем /etc/libvirt/qemu.conf, чтобы виртуальные машины работали у нас от непривилегированного пользователя:

user = "username"
group = "libvirt"

Поскольку у нас будут использоваться tun-устройства, нужно выставить capability CAP_NET_ADMIN, сделать это можно как для отдельного исполняемого файла, так и для пользователя в целом, или настроить чтобы libvirt не сбрасывал нужные права для qemu/kvm.

Выставляем для отдельного файла:

sudo setcap cap_net_admin=ei /usr/bin/kvm

Или выставляем для пользователя в целом в файле /etc/security/capability.conf:

cap_net_admin username

Или выставляем соответствующую настройку в /etc/libvirt/qemu.conf:

clear_emulator_capabilities = 0

Добавим пользователя в группу libvirt и kvm:

# adduser username libvirt
# adduser username kvm

Запустим установку виртуальной машины:

$ virt-install --connect qemu:///system -n debian_guest -r 512 --arch=i686 --vcpus=1 --os-type=linux --os-variant=debiansqueeze --disk debian-6.0.1a-i386-netinst.iso,device=cdrom --disk debian_guest.img,bus=virtio,size=2,sparse=false,format=raw --network=default,model=virtio --hvm --accelerate --vnc

Подробно разберём параметры, которые мы указали:

  • —connect qemu:///system URL, по которому мы подключаемся к KVM. Подключаться можно через ssh.
  • -n debian_guest Имя гостевой системы.
  • -r 512 Выделяемый объём оперативной памяти в мегабайтах.
  • —arch=i686 Архитектура гостевой операционной системы.
  • —vcpus=1 Количество виртуальных процессоров, доступных гостю.
  • —os-type=linux —os-variant=debianlenny Специфичные для данной операционной системы параметры.
  • —disk debian-6.0.1a-i386-netinst.iso,device=cdrom Загружаемся с диска, образ которого указали.
  • —disk debian_guest.img,bus=virtio,size=2,sparse=false,format=raw Создаём образ системы размером 2Гб, который сразу помещаем на диск (можно создать образ нулевого размера, но тогда возможна фрагментация, что получается несколько медленнее). Формат простой, можно сделать с dd файл. Драйвер диска virtio, использовать лучше virtio, чем ide: производительность их отличается если не на порядок, то в разы.
  • —network=default,model=virtio Сетевые настройки по умолчанию. В этом случае libvirt создаст мост, сделает dhcp сервер и выдаст через него адрес для доступа виртуальной машины.
  • —hvm Полная виртуализация — то есть, можно использовать собственные ядра.
  • —accelerate Работа через /dev/kvm.
  • —vnc Запускаем VNC, чтобы подключаться к текстовой консоли.
Утилиты настройки и управления

Для управления установкой и для клонирования виртуальных машин у нас есть две замечательные утилиты — графическая и консольная: virt-manager и virsh, соответственно. Конечно, консольная версия намного богаче по возможностям, но ничто не сравнится с видом графиков, от которых сердце сисадмина млеет.

Думаю с virt-manager вы и сами разберётесь, давайте попробуем покопаться в консольных внутренностях virsh. Вот несколько команд которые стоит выполнить и посмотреть что из этого получится:

$ virsh --connect qemu:///system list --all
$ virsh --connect qemu:///system dominfo debian_guest
$ virsh --connect qemu:///system stop debian_guest

Чтобы тысячу раз не писать —connect qemu:///system, добавьте:

export VIRSH_DEFAULT_CONNECT_URI= qemu:///system

В .bashrc или просто выполните эту команду в терминале.

Подготовка сети

В официальной документации предлагается использовать несколько вариантов организации сети: NAT, bridged и прямое использование сетевых карт. И, к сожалению, в различных примерах, которые я нашел в сети и на официальном сайте, рассматриваются только NAT и bridged сети.

В моей конфигурации используются TUN/TAP устройства, на которые с eth0 маршрутизируется трафик. Коротко опишу, почему выбран именно такой способ маршрутизации:

NAT нам не подходит, поскольку каждая VDS должна быть доступна из сети напрямую.
Схема с мостами не очень надёжная, поскольку теоретически есть возможность «захвата» IP адреса чужой виртуальной машины.
Итак:

<interface type='ethernet'>
    <mac address='52:54:00:ef:40:1d'/>
    <ip address='10.10.10.100'/>
    <target dev='debian_guest'/>
    <model type='virtio'/>
</interface>

Данный участок конфигурации нужно указывать непосредственно в конфигурационном файле гостя, расположенного по адресу /etc/libvirt/qemu/debian_guest.xml. Редактировать лучше всего через:

$ virsh edit debian_guest

Тогда конфигурация обновится на лету, при условии, что машина не запущена. В противном случае нужно будет подождать, пока она остановится, и запустить ее снова.

Создадим необходимое нам виртуальное устройство.

Для начала нам нужно дать нашему пользователю возможность беспарольного обращения к системным командам. Для этого добавим в sudoers:

$ sudo visudo

Cmnd_Alias QEMU = /sbin/ifconfig, /sbin/modprobe, /usr/sbin/brctl, /usr/sbin/tunctl, /sbin/sysctl, /bin/ip, /usr/bin/cgcreate, /usr/bin/cgdelete, /sbin/tc
username ALL=(ALL:ALL) NOPASSWD: QEMU

Включим возможность форвардинга и проксирования arp-запросов:

sudo sysctl net.ipv4.conf.all.forwarding=1
sudo sysctl net.ipv4.conf.all.proxy_arp=1

Также можно добавить эти параметры в /etc/sysctl.conf и применить их:

sudo sysctl -p

Создадим виртуальную сетевую карту и поднимем устройство:

sudo tunctl -b -u username -t debian_guest
sudo ifconfig debian_guest 0.0.0.0 up

Создадим маршрут на нужное нам устройство с нужного IP-адреса:

sudo ip route add 10.10.10.100 dev debian_guest

Теперь можно запустить VDS:

$ virsh start debian_guest

Подключившись к консоли, мы увидим, что сети нет, но у нас появилось устройство eth1, вместо eth0. Это произошло потому, что система при загрузке в /etc/udev/rules.d/70-persistent-net.rules прописывает mac-адрес сетевой карты, и если mac сменился, она создаёт ещё одну запись о сетевой карте, вроде этой:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

Нужно удалить этот файл и перезагрузить VDS — после этого сетевая карта определится корректно.

Пропишем новые сетевые настройки в гостевой системе:

# ifconfig eth0 10.10.10.100 netmask 255.255.255.0
# route add default gw 10.10.10.10

10.10.10.10 — это IP-адрес хост-системы. Теперь мы сможем попинговать другие машины.

Добавим DNS-серверы в /etc/resolv.conf, и будет совсем замечательно:

nameserver 8.8.8.8

К слову, замечу, что оказалось очень удобно называть сетевые устройства, принадлежащие VDS, также, как и сами VDS — отпадает необходимость искать, кому принадлежит устройство tap0 или vnet0, или как там ещё можно их обозвать.

Если понадобится выдать виртуальной машине ещё один IP-адрес, достаточно будет просто на хост-машине прописать ещё один маршрут:

# ip route add 10.10.10.101 dev debian_guest

А в гостевой системе создать алиас для сетевого устройства:

# ifconfig eth0:1 10.10.10.101

В следующей части

В следующей статье я расскажу о том, как создать образ VDS, что вообще меняется от системы к системе, и как эти параметры можно удобно менять.

From KVM

Jump to:navigation, search

Contents

  • 1 Documents
    • 1.1 User/Admin documentation
    • 1.2 Presentations
    • 1.3 Books
    • 1.4 Magazine Articles
    • 1.5 Benchmarks
    • 1.6 Documentation
    • 1.7 KVM Doxygen Documentation
    • 1.8 Tools
    • 1.9 Supported cpus

User/Admin documentation

  • HOWTO
  • QEMU user manual
  • Tuning_KVM
  • Tuning_Kernel

Presentations

  • Presentations on many aspects of KVM were made at KVM Forum 2007 (Aug 2007).
  • Presentations from the KVM Forum 2008 (June 2008)
  • Avi Kivity’s presentation from the Ottawa Linux Symposium 2007 (Jun 2007).
  • TPR patching [attachment:kvm-tpr-patching.odp overview] (Avi Kivity, Oct 2008)
  • Virtio code walkthrough, notes, GSO background (Mark McLoughlin, Oct 2008), and ACM pdf about virtio by Rusty Russell

Books

  • Book «KVM Best Practices», ISBN 978-3-89864-737-3
  • Book «QEMU & KVM», ISBN 978-3-8370-0876-0
  • Book «KVM tettei nyuumon», ISBN 4798121401
  • Book «Mastering KVM Virtualization», ISBN 978-1-7843-9905-4
  • Book «KVM Virtualization Cookbook», ISBN 978-1-7882-9467-6

Magazine Articles

  • Linux Magazine
  • KVM for Embedded at Linux Planet
  • Linux as a hypervisor at Linux Planet

Benchmarks

  • Phoronix — Ubuntu 8.04 KVM Benchmarks
  • Phoronix — Intel Core i7 Virtualization Performance

Documentation

  • small look inside(kvm-54)
  • qemu kvm buildup
  • qemu-system-x86_64 startup (kvm-57)
  • initialization (kvm-57)
  • file layout in kernel (~kvm-58)
  • Wikibook «QEMU & KVM»
  • How KVM deals with memory — a look inside how KVM interacts with the Linux VM.
  • Counting and tracing KVM events
  • KVM x86 vMMU setup — describes how KVM sets up a virtual memory management unit for x86.
  • KVM x86 hardware support paging — a look inside how KVM deals with x86 2D hardware paging.
  • KVM Intel VPID implementation — how KVM supports Intel’s tagged TLBs

KVM Doxygen Documentation

  • kvm doxygen documentation tool

Tools

  • Tools

Supported cpus

  • cpus

In this tutorial, we are going to see how we can create a virtual machine in Linux using a Kernel-based Virtual Machine. Virtual machines are based on computer architectures and provide the functionality of a physical computer but first, we need to understand what is a kernel-based virtual machine. The Information Technology field is complex it needs proper scalability and reliability to operate, virtualization is one way to increase efficiency and reduce downtime.

So basically virtualization is obtaining a virtual version of features such as hardware, software and that virtual version will be independent of the normal working of the device. Virtual machines are examples of Virtualization.

Kernel-Based Virtual Machine 

The purpose of Kernel-Based Virtual Machine (KVM) is to provide the ability of virtualization to Linux. It is an open-source technology which provides which allows Linux machines (host) to run different environments called virtual machines. Each virtual machine represents a different Linux process. Each Virtual Machine has its own copy of hardware such as memory, processor, and also software this allows to use of resources to a greater extent causing more reliability.

Steps for creating Virtual Machine in Linux using KVM

Note: We are going to use ubuntu os throughout this tutorial,

  • Checking if virtualization is enabled or not
  • Installing KVM on Ubuntu
  • Adding a user to KVM
  • Creating Virtual Machine
  1. Using command line
  2. Using interface

Virtualization Inability

To create a virtual machine first we need to ensure that virtualization is enabled on our system. It is mandatory to create virtual machines. There are multiple ways to check if virtualization is enabled,

$ egrep -c ‘(vmx|svm)’ /proc/cpuinfo

The above command /proc/cpuinfo gives information about the processor. The output of the command will be a number. The output number 1 or more than that represents that virtualization is enabled, output 0 says you need to enable virtualization on your system.

Virtualization-inability

 Virtualization Inability

$ lscpu | grep Virtualization

This command is used to check which type of virtualization your processor supports. If the system contains a CPU with Intel VT support, the above command will provide the following output

Visualization-type

Virtualization Type

Installing KVM on Ubuntu

Now we know our system is capable of creating and running virtual machines, it’s time to install tools which will create our virtual machines. To install KVM and other KVM dependencies such as virt-manager, bridge-utils enter command:

$ sudo apt -y install bridge-utils cpu-checker libvirt-clients libvirt-daemon qemu qemu-kvm

  1. bridge-utils: The bridge-utils package contains a utility needed to create and manage bridge devices. This is useful in setting up networks for a hosted virtual machine (VM).
  2. cpu-checker: Outputs the specifications of CPU
  3. libvirt-clients: a toolkit to manage virtualization platforms/clients and hypervisors
  4. qemu: A program that can run the operating system of the machine on different machines
  5. qemu-kvm: Runs process using KVM module

All dependencies are installed now run command its time to check if KVM ins installed successfully:

$ sudo kvm-ok

Checking-KVM-installation

Check if KVM is Installed properly

Also, we need to confirm if the virtualization daemon – libvritd-daemon – is running, to do so enter the command.

$ sudo systemctl status libvirtd

If the output is not active: running you need to start daemon thread

Start-daemon-thread

If the daemon thread is not running enter the following command to start the thread,

$ sudo systemctl enable –now libvirtd

Adding a user to KVM

In this part, we are going to create a user for KVM. To prevent root user from using KVM and root user is only available when root user is a part of libvirt/libvirtd group.

To add a new user to KVM, use the following command,

sudo adduser [username] libvirtd

[username] enter the username of your choice if the output is 

Adding-user-to-KVM

Adding User to  KVM

Then your KVM is already a member of the non-root user and serves the same purpose as libvirtd group then you don’t need to add yourself to the group.

Creating Virtual Machine

There are two ways to create a virtual machine

  1. Using the command line
  2. Using the graphical interface
  • Create a Virtual Machine via Command Line

virt-install is a command which is used to create virtual machines in Linux, following is the command which creates a VM.

sudo virt-install –name=ubuntu-guest –os-variant=ubuntu20.04 –vcpu=2 –ram=2048 –graphics none –location=[local path to iso file] –network bridge:vibr0

The above command creates a Ubuntu virtual machine with version 20.04 and the name ubuntu-guest.

  1. Name: specify the name of the virtual machine being created
  2. vcpu: Number of virtual CPUs to configure for the guest.
  3. Ram: Memory to allocate for guest instance in megabytes. According to your machine, you can specify the given memory of the VM.
  4. Graphics spice: If no graphics option is specified, “virt-install” will default to ‘–graphics vnc’ if the display environment variable is set, otherwise ‘–graphics none’ is used.
  5. Location: location of iso file on which virtual machine will be built. It can be the path to an ISO image, or to a CDROM device. It can also be a URL from which to fetch/access a minimal boot ISO image.
  6. Network-bridge: Connect the guest to the host network, Connect to a bridge device in the host called “BRIDGE”.

Create a Virtual machine using a graphical interface 

If you are not much familiar with the command line don’t worry there’s another way to create a virtual machine using a tool called virt-manager you can easily create virtual machines. Steps to create VM using virt-manager,

Step 1: Launch virt-manager

Creating-new-VM

Step 2: Choose installation media it can be an iso file of OS, you can install from the network or can be a disk copy

Local-install-media

Step 3: Enter the path/URL of your file click next

Entering-path

Step 4: Enter memory and CPU requirements

Memory-and-CPU-requirements

Step 5: Enter required disk space

Required-disk-space

Step 6: Enter the name of VM and check specifications and hit the finish

Checking-specifications

Now the installations should be completed and the virtual machine should start running.

Last Updated :
26 Mar, 2022

Like Article

Save Article

Эту заметку я пишу для того, чтобы продемонстрировать пошаговую установку и настройку виртуальной машины в Linux на базе KVM. Ранее я уже писал про виртуализацию, где использовал замечательный инструмент Vagrant.

Сейчас передо мной встал вопрос аренды хорошего сервера с большим объёмом оперативной памяти и объёмным жестким диском. Но запускать проекты прямо на хост-машине не хочется, поэтому буду разграничивать их по отдельным небольшим виртуальным серверам с ОС Linux или docker-контейнерам (о них расскажу в другой статье).

Все современные облачные хостинги работают по такому же принципу, т.е. хостер на хорошем железе поднимает кучу виртуальных серверов, которые мы привыкли называть VPS/VDS, и раздаёт их пользователям, либо автоматизирует этот процесс (привет, DigitalOcean).

KVM (kernel-based virtual machine) это программное обеспечения для Linux, использующее аппаратные средства x86-совместимых процессоров для работы с технологией виртуализации Intel VT/AMD SVM.

Установка KVM

Все махинации по созданию виртуальной машины я буду проводить на ОС Ubuntu 16.04.1 LTS. Чтобы проверить поддерживает ли ваш процессов аппаратную виртуализацию на базе Intel VT/AMD SVM, выполняем:

grep -E '(vmx|svm)' /proc/cpuinfo

Если терминал непустой, то значит всё в порядке и KVM можно устанавливать. Ubuntu официально поддерживает только гипервизор KVM (входит в состав ядра Linux) и советует использовать библиотеку libvirt в качестве инструмента по управлению им, что мы и будем делать дальше.

Проверить поддержку аппаратной виртуализации в Ubuntu также можно через команду:

kvm-ok

В случае успеха, вы увидите что-то вроде этого:

INFO: /dev/kvm exists
KVM acceleration can be used

Устанавливаем пакеты для работы с KVM:

sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

Если у вас есть доступ к графической оболочке системы, то можно установить GUI менеджер libvirt:

sudo apt-get install virt-manager

Пользоваться virt-manager достаточно просто (не сложнее VirtualBox), поэтому в этой заметке речь пойдёт про консольный вариант установки и настройки виртуального сервера.

Установка и настройка виртуального сервера

В консольном варианте установки, настройки и управлением системой, незаменимым инструментом является утилита virsh (надстройка над библиотекой libvirt). У неё большое количество опций и параметров, подробное описание можно получить так:

man virsh

или вызвать стандартный «help»:

virsh help

Я всегда придерживаюсь следующих правил при работе с виртуальными серверами:

  1. Храню iso образы ОС в каталоге /var/lib/libvirt/boot
  2. Храню образы виртуальных машин в каталоге /var/lib/libvirt/images
  3. Явно задаю каждой новой виртуальной машине свой статичный IP адрес через DHCP сервер гипервизора.

Приступим к установке первой виртуалки (64-битной серверной убунте 16.04 LTS):

cd /var/lib/libvirt/boot
sudo wget http://releases.ubuntu.com/16.04/ubuntu-16.04.1-desktop-amd64.iso

Скачав образ запускаем установку:

sudo virt-install \
  --virt-type=kvm \
  --name ubuntu1604\
  --ram 1024 \
  --vcpus=1 \
  --os-variant=ubuntu16.04 \
  --hvm \
  --cdrom=/var/lib/libvirt/boot/ubuntu-16.04.1-server-amd64.iso \
  --network network=default,model=virtio \
  --graphics vnc \
  --disk path=/var/lib/libvirt/images/ubuntu1604.img,size=20,bus=virtio

Переводя все эти параметры на «человеческий язык», то получается, что мы создаём виртуальную машину с ОС Ubuntu 16.04, 1024 МБ ОЗУ, 1 процессором, стандартной сетевой картой (виртуальная машина будет ходить в интернет как-будто из-за NAT), 20 ГБ HDD.

Стоит обратить внимание на параметр —os-variant, он указывает гипервизору под какую именно ОС следует адаптировать настройки.
Список доступных вариантов ОС можно получить, выполнив команду:

osinfo-query os

Если такой утилиты нет в вашей системе, то устанавливаем:

sudo apt-get install libosinfo-bin

После запуска установки, в консоли появится вот такая надпись:

Domain installation still in progress. You can reconnect to the console to complete the installation process.

Это нормальная ситуация, продолжать установку мы будем через VNC.
Смотрим на каком порту он был поднят у нашей виртуалки (в соседнем терминале, например):

virsh dumpxml ubuntu1604
...
<graphics type='vnc' port='5900' autoport='yes' listen='127.0.0.1'>
<listen type='address' address='127.0.0.1'/>
</graphics>
...

Порт 5900, на локальном адресе 127.0.0.1. Чтобы подключиться к VNC, необходимо использовать Port Forwarding через ssh. Перед тем как это сделать, убедитесь, что tcp forwarding разрешён у демона ssh. Для этого идём в настройки sshd:

cat /etc/ssh/sshd_config | grep AllowTcpForwarding

Если ничего не нашлось или вы видите:

AllowTcpForwarding no

То правим конфиг на

AllowTcpForwarding yes

и перезагружаем sshd.

Настройка Port forwarding

Выполняем команду на локальной машине:

ssh -fN -l login  -L 127.0.0.1:5900:localhost:5900 server_ip

Здесь мы настроили ssh port forwarding с локального порта 5900 на серверный порт 5900. Теперь уже можно подключиться к VNC, используя любой VNC-клиент. Я предпочитаю UltraVNC из-за простоты и удобства.

После успешного подключения, на экране отобразится стандартное окно приветствия начала установки Ubuntu.

После завершения установки и привычной перезагрузки, появится окно входа в систему. Авторизовавшись, определяем IP адрес новоиспечённой виртуалки, чтобы позже сделать его статичным:

ifconfig

Запоминаем и идём на хост машину. Вытаскиваем mac-адрес «сетевой» карты виртуалки:

virsh  dumpxml  ubuntu1604 | grep 'mac address'

Запоминаем наш mac адрес:

<mac address='52:54:00:84:e0:7b'/>

Редактируем сетевые настройки гипервизора:

sudo virsh net-edit default

Ищем DHCP, и добавляем вот это:

<host mac='52:54:00:84:e0:7b' name='ubuntu1604' ip='192.168.122.131'/>

Должно получиться что-то вроде этого:

<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
<host mac='52:54:00:84:e0:7b' name='ubuntu1604' ip='192.168.122.131'/>
</dhcp>

Для того, чтобы настройки вступили в силу, необходимо перезагрузить DHCP сервер гипервизора:

sudo virsh net-destroy default
sudo virsh net-start default
sudo service libvirt-bin restart

После этого перегружаем виртуальную машину, теперь она всегда будет иметь заданный ей IP адрес — 192.168.122.131.

Есть и другие способы задать виртуалке статичный IP, например, напрямую редактируя сетевые настройки внутри гостевой системы, но тут уже как душе вашей будет угодно. Я лишь показал вариант, который сам предпочитаю использовать.

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

ssh 192.168.122.131

Машина готова к бою.

Virsh: список команд

Чтобы посмотреть запущенные виртуальные хосты (все доступные можно получить добавив —all):

sudo virsh list

Перезагрузить хост можно:

sudo virsh reboot $VM_NAME

Остановить виртуальную машину:

sudo virsh stop $VM_NAME

Выполнить halt:

sudo virsh destroy $VM_NAME

Запуск:

sudo virsh start $VM_NAME

Отключение:

sudo virsh shutdown $VM_NAME

Добавить в автозапуск:

sudo virsh autostart $VM_NAME

Очень часто требуется склонировать систему, чтобы в будущем использовать её как каркас для других виртуальных ОС, для этого используют утилиту virt-clone.

virt-clone --help

Она клонирует существующую виртуалку и изменяет host-sensitive данные, например, mac address. Пароли, файлы и прочая user-specific информация в клоне остаётся прежней. Если на клонируемой виртуалке IP адрес был прописан вручную, то могут возникнуть проблемы с доступом по SSH на клон из-за конфликта (2 хоста с одинаковым IP).

Помимо установки виртуалки через VNC, также возможен вариант с X11Forwarding через утилиту virt-manager. В Windows, например, для этого можно использовать Xming и PuTTY.

Ссылки

  • Подсистема Linux в Windows
  • Обзор инструмента Vagrant

💌 Присоединяйтесь к рассылке

Понравился контент? Пожалуйста, подпишись на рассылку.

Понравилась статья? Поделить с друзьями:
  • Электроплита бош инструкция по эксплуатации на русском
  • Дорожка из бетона своими руками пошаговая инструкция
  • Росгвардия хабаровский край руководство
  • Fexadyne инструкция на русском по применению языке
  • Мокик зид 50 пилот руководство по ремонту