Установка kvm kali linux

Обновлено: 07.07.2024

Коллекция материалов по работе с системой Linux С наступающим Новым годом!

среда, 25 марта 2015 г.

Как и зачем использовать виртуализацию KVM в Debian/Ubuntu на домашнем компьютере

Виртуализация полезна не только на серверах и в дата-центрах, но и на обычных домашних компьютерах. В статье приведены преимущества использования виртуальной машины домашним пользователем и Debian/Ubuntu.

Преимущества виртуализации на десктопе

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

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

В-пятых, вы можете расположить образ операционной системы на RAM-диске и получить поистине феерическое ускорение всего и сразу. Я проводил эксперимент: 4 Гб оставил хосту, а 12 Гб отдал под образ с Debian. Внутри GNOME, GIMP, LibreOffice, Firefox. Все стартует в 1000 раз быстрее, чем даже с SSD.

Есть и еще миллион плюсов, но стоит сказать и о минусах.

Минусы виртуализации на домашнем компьютере

Во-первых, виртуальная машина будет работать медленнее, чем физический компьютер. Раньше падение производительности составляло 50-90%, теперь (при наличии аппаратной поддержки) потеря производительности составляет 1-5%.

Во-вторых, существует проблема обмена данными хоста с гостевыми системами. Решений много: общие директории, FTP, Samba и т.д.

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

Настройка KVM в Debian/Ubuntu

В качестве средства виртуализации я долгое время пользовался свободной программой VirtualBox. Но недавно из любопытства ппротестировал KVM и был весьма впечатлен. KVM работает быстро, очень легко настраивается и запускается, а еще на KVM делает ставку RedHat, как на самое перспективное решение в этой области.

Установка очень проста. Поддержка KVM уже есть в ядре, остается установить кое-чего по мелочам:

Всё, можно сразу работать. Для примера запустим замечательный дистрибутив Kali прямо из ISO в Debian:

Обратите внимание, что если явно не указать количество оперативной памяти опцией -m, то гостевая система получит только 128 Мб и сдохнет в страшных мучениях.

Если вы хотите установить ОС на диск, то для начала следует подготовить отдельный файл, который будет содержать этот образ. Делается это всеми любимой командой dd:

Теперь этот файл os.image можно использовать как жесткий диск в виртуальной среде:

С жестким диском можно делать что угодно, например, установить на него ОС или отдать под отдельную точку монтирования, например, под /home. Разумеется, когда вы установите ОС, опция -cdrom больше не нужна. Любителям ГУЙев доступен широкий ассортимент соответствующих программ.

Комментариев нет:

Поиск по этому блогу

Понравилось?Поделись с друзьями!

Архив блога



Viber является кросс-платформенным приложением (iPhone, Android, Windows Phone, Blackberry, Windows, Mac, Symbian, Nokia и устройства .



Консольные команды бывают иногда очень полезными (даже для обычных пользователей, которые не любят терминал), в том числе и для новичк.



Ранее я уже писал об установке Qemu-KVM в Debian. Но, на мой взгляд, информация получилась неполной. Плюс я не учёл некоторые нюансы. Потому предлагаю вашему вниманию обновлённую статью по установке виртуальной машины Qemu-KVM. Старую статью, естественно, удалю.

Думаю, объяснять что такое виртуальная машина, не стоит. Вы наверняка это знаете (раз читаете эту статью). Если нет - прочитайте это. Мы же остановимся непосредсвенно на сабже. Qemu-KVM - это проект по объединению двух замечтальнейшийх (на мой взгляд) технологий полной виртуализации. Qemu - это своего рода "эмулятор компьютера", который поддерживает великое множество аппаратных архитектур. В нём можно запустить практически любую ОС для любого устройства (к примеру я запускал старые версии Mac OS X, который для PowerPC). Недостатком Qemu является его медлительность вследствии отсутствия аппратного ускорения. И тут на помощь приходит другой проект - KVM. Или Kernel Virtual Machine. KVM - это технология ядра Linux, которая позволяет обеспечить аппаратное ускорение при полной виртуализации. Недостатком KVM является поддержка только архитектуры x86

Почему Qemu-KVM? Для Linux это самый рекомендуемый проект виртуализации. Он работает быстрее, чем VirtualBox и VMware Player (по моим тестам), KVM - это родная для Линукса технология. Плюс, если вы обладатель хорошего игрового компьютера с двумя видеокартами, вы можете установить в Qemu-KVM Windows, пробросить в неё одну из видеокарт, и забыть о перезагрузке в другую ОС. Захотели поиграть - запустили виртуалку с виндой и играете. Производительность будет 95% от производительности установленной на "железо" винды. Но это просто шикарно, на мой взгляд. Об этом я напишу отдельную статью. Будет интересно :)

А теперь опишу план наших действий. Во первых, установку я буду проводить на примере Debian 8.2 GNOME 64 bit, хотя, особых различий в других графических окружениях не будет. Во-вторых - я буду описывать работу с KVM только в графическом режиме (мы ведь не на сервер будет его ставить). Поэтому никаких терминалов, скриптов и так далее, как обычно поступают в случае серверной виртуализации. В третьих - советую вам дополнительно прочитать документацию к Qemu и KVM (ссылки дам в конце статьи). Вам это очень пригодится, если вы хотите по-максимуму использовать весь потенциал этой связки. Ну чтож, план наших действий ясен. Теперь этапы действий:

  • установка qemu-kvm;
  • установка графического менеджера и дополнительных утилит;
  • настройка сетевого моста;
  • создание хранилища для виртуальных машин;
  • установка гостевой системы.

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

В выводе команды должны присутствовать либо vmx, либо svm. Если их нет - проверьте включена ли виртуализация в BIOS (ищите пункты Intel VT-i или аналогичный для AMD). Если ничего нет - значит не повезло.

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

sudo apt install qemu-kvm bridge-utils libvirt-bin virt-manager

Добавляем себя в группу libvirt:

sudo adduser $USER libvirt

Теперь настроим сеть. Для того чтобы все виртауальные машины могли выходить в сеть и связываться друг с другом, нужно создать сетевой мост и виртаульные сетевые карты для каждой виртуалки (tap-устройства). Так как виртуальные машины мы будем устанавливать из графического интерфейса, то создавать вручную tap'ы не нужно. Virt Manager сделает это за нас при каждом запуске. Нам нужно только настроить мост. Для начала включим маршрутизацию в ядре:

sudo nano /etc/sysctl.conf

Ищем строку net.ipv4_forward=0 и меняем её значение на 1. Сохраняем и:

Далее я буду предполагать следующее: 1) на вашем компьютере есть одна сетевая карта, получающая ip-адрес от роутера. 2) вы выходите в интернет через 3G-модем, и сетевая карта у вас свободна. Этот вариант предполагает побольше ручной работы, но он проверен неоднократно (у самого так на одной из машин). Итак, открываем файл interfaces:

sudo nano /etc/network/interfaces

Его содержимое по умолчанию такое:

Меняем его содержимое. Для первого варианта:

Для второго варианта:

Примечание: если вам не нужно автоматическое подключение Интернета через модем после старта системы, уберите из конфига строки auto ppp0 и
iface ppp0 inet wvdial . В противном случае, убедитесь что при запуске системы, модем вставлен в USB-порт.

Сохраняем. Теперь для варианта с модемом, нужно установить программу дозвона wvdial:

sudo apt install wvdial

Правим конфиг (обратите внимание: в качестве примера используется 3G-модем Beeline. Примеры конфигов для других модемов вы без труда найдёте в интернете):

sudo nano /etc/wvdial.conf

Сохраняем. Теперь модем будет включаться сразу после загрузки системы. Строка up route del default br0 удаляет маршрут по умолчанию через мост. Если этого не сделать, вы не сможете соединиться с Интернетом, так как трафик будет идти по мосту, а не через 3G-модем.

Последним этапом нам нужно сказать фаерволлу, чтобы он пропускал в сеть трафик от наших виртуалок и обратно. Для этого можно пойти двумя путями: написать скрипт с несколькими правилами для iptables, который будет запускаться вместе с системой, или ввести эти правила вручную и сохранить их. Я воспользуюсь первым вариантом. Для второго вам нужно будет установить пакет iptables-persistent и просто поочерёдно вводить правила (с использованием sudo). Итак. создаём скрипт (в любом текстовом редакторе). Вставляем туда следующее содержимое:

Сохраняем его как gateway.sh и даём права на выполнение (либо в свойствах файла, либо в терминале командой chmod +x gateway.sh). Теперь вы можете либо запускать его вручную, после того как загрузилась система, либо добавить в автозагрузку. Для этого переместите скрипт в

/.config/autostart (в файловом менеджере включите показ скрытых файлов, и вы увидите каталог .config в домашней директории).

Теперь всё готово для установки виртуальной машины. Из меню приложений запускаем Virt Manager (менеджер виртуальных машин):


Кликаем правой кнопкой на строке localhost и выбираем Детали. Переходим на вкладку Хранилище. Нам нужно указать каталог (или раздел диска/диск) для хранения виртуальных машин.


В левом нижнем углу жмём на плюсик (Добавить пул), указывам тип хранилища и путь к нему.


На вкладке Сетевые интерфейсы, можете проверить, всё ли работает.


Теперь нажимаем Файл - New virtual machine. Указываем путь к образу диска, тип виртуальной машины. Далее указываем количество оперативной памяти для неё и количество ядер процессора. Далее указываем наше хранилище и нажимаем Новый том. Указываем название, тип оставляем qcow2, и размер. Это будет виртуальный жёсткий диск. Если планируете устанавливать систему с графической оболочкой и кучей программ, дайте места побольше (гигов 50). На последней вкладке ставим галочку на Изменить настройки перед запуском, проверяем что в качестве сетевого устройства выбран наш мост, пишем любое название для виртуалки и жмём Завершить. Перед вами откроется окно параметров этой виртуальной машины.






Переходим на вкладку Процессор, и ставим галочку на Скопировать настройки процессора хост-системы.


Далее на вкладку Диск, и указываем тип шины VirtIO (самая производительная).


Далее на вкладку Сеть (следующая), и также указываем vitio. На вкладке Дисплей укажите Spice, а на вкладке Видео - QXL. Обычно эта связка обеспечивает максимальную производительность отрисовки графики, но, если хотите, можете поэксперементировать. Учтите, что для гостевых систем Windows, требуется отдельная установка QXL-драйвера (в самой Windows).



Теперь когда всё готово, в левом верхнем углу жмём Начать установку. И ставим систему как обычно, за одним исключением: как только установщик начнёт автоматически настраивать сеть, нажмите Отмена, и выберите Настроить сеть вручную. Укажите для виртуалки желаемый IP-адрес (в нашем случае 192.168.0.3), маску подсети (255.255.255.0), шлюз (шлюзом будет адрес хоста, тоесть 192.168.0.2) и DNS-сервер (здесь просто укажите Гугловский 8.8.8.8). И всё. Дальше ничего делать не нужно. Ставьте систему и настраивайте. В общем-то, всё. Описанные действия - это способ заменить, скажем, VirtualBox на более лучшую альтернативу. Прочитав документацию, вы поймёте, насколько широки возможности Qemu-KVM. Я намеренно не стал описывать здесь дополнительные консольные параметры и методы запуска виртуальных машин через терминал, так как это далеко не всегда нужно на домашней машине. Об этом я напишу отдельную статью, по настройке домашнего многофункционального сервера (который также сможет выступать в качестве сервера виртуальных машин). Для тех, кто по каким-то причинам не понял написанное, или остались непонятные моменты - предлагаю посмотреть ролик, в котором я уже не опишу, а покажу, как всё это добро устанавливать и настраивать. Если у вас есть предложения или дополнения к статье - пишите в комментариях.

Дополнение: для работы графических окружений, которым необходимо 3D ускорение, установите пакеты spice-vdagent и xserver-xorg-video-qxl


Предварительная установка

Для запуска KVM, необходимо процессор поддерживающий аппаратную виртуализацию. Intel и AMD и разработали расширения для своих процессоров, считаются соответственно Intel VT-х (кодовое название Vanderpool) и AMD-V (кодовое название Pacifica). Чтобы узнать поддерживает ваш процессор данную опцию, выполните:

По умолчанию, если вы загрузились в XEN ядро не будет отображаться SVM или флаг VMX с помощью команды GREP. Чтобы увидеть включены ли данные флаги от Xen, введите:

Вы должны увидеть HVM флаги.

Кроме того, вы можете выполнить:

Если получите следующий вывод, то у вас все хорошо и у вас имеется поддержка:

Если получите следующий вывод, то у вас нет поддержки и будет работать гораздо медленнее без этих расширений KVM:

Используйте 64 битное ядро (если это возможно)

Запуск на 64 битном ядре рекомендуется, но не требуется.

Чтобы обеспечить поддержку более 2 Гб оперативной памяти для виртуальных машин, необходимо использовать 64-битное ядро. На 32-битном ядре будут ограничено использование РАМ до 2 Гб.

Кроме того, 64-разрядная система может содержать как 32-разрядные, так и 64-разрядные ОС, а 32-битная система может вместить только 32-разрядные ОС ваших виртуальных машин. Чтобы проверить, какой розрядности ваш процессор, вы можете запустить эту команду:

  • Если вы имеете 0, то это означает что ваш процессор не 64-битный.
  • Если вы имеете 1 и выше, то это говорит что имеет поддержку.

Чтобы посмотреть архитектуру вашего сервера, используйте:

x86_64 указывает работу c 64-разрядным ядром. Если вы используете i386, i486, i586 или i686, вы работаете в 32-битным ядром.

Установка гипервизора KVM на Debian/Ubuntu

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

Следующие пакеты необходимы если вам необходимо включить KVM на уже установленной ОС, я установлю и их:

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

Моя первая виртуальная машина будет установлена именно через графический интерфейс т.к он очень простой.

Добавляем своего пользователя в группы:

После установки, вы должны войти снова, чтобы ваш пользователь становится действительным членом KVM и libvirtd групп пользователей. Члены этой группы могут запускать виртуальные машины.

Настройка сетевого моста для подключения виртуальных машин к реальной сети

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

Если у вас имееться сетевой интерфейс eth0, то его нужно заменить на br0 с добавляем следующих строк:

Я буду использовать следующий пример с DHCP

Это создаст виртуальный интерфейс br0.

Теперь перезагрузите сеть:

Замените f4:6d:04:08:f1:5f с аппаратным адресом физического Ethernet адаптер, который всегда будет частью моста.

Проверка установки KVM

Если получите вывод:

Файл sock должен иметь права, аналогичные как:

Так же, /dev/kvm должен иметь правильные группы. Если ты видишь:

Вы можете столкнуться с проблемами при создании виртуальной машины. Изменить группу устройства для kvm/libvirtd:

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

KVM или Kernel Virtual Module - это модуль виртуализации для ядра Linux, который позволяет превратить ваш компьютер в гипервизор для управления виртуальными машинами. Этот модуль работает на уровне ядра и поддерживает такие технологии аппаратного ускорения, как Intel VT и AMD SVM.

Само по себе программное обеспечение KVM в пространстве пользователя ничего не виртуализирует. Вместо этого, оно использует файл /dev/kvm для настройки виртуальных адресных пространств для гостевой машины в ядре. Каждая гостевая машина будет иметь свою видеокарту, сетевую и звуковую карту, жесткий диск и другое оборудование.

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

Установка KVM в Ubuntu 20.04

Перед тем как переходить к самой установке KVM нужно проверить поддерживает ли ваш процессор аппаратное ускорение виртуализации от Intel-VT или AMD-V. Для этого выполните такую команду:

egrep -c '(vmx|svm)' /proc/cpuinfo


Если в результате будет возвращено 0 - значит ваш процессор не поддерживает аппаратной виртуализации, если 1 или больше - то вы можете использовать KVM на своей машине.

Теперь мы можем перейти к установке KVM, набор программ можно получить прямо из официальных репозиториев:

sudo apt install qemu qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager

Мы установили не только утилиту kvm, но и библиотеку libvirt, а также менеджер виртуальных машин. После того, как установка будет завершена вам необходимо добавить своего пользователя в группу libvirt, потому что только root и пользователи этой группы могут использовать виртуальные машины KVM:

sudo gpasswd -a $USER libvirt

Затем убедитесь, что сервис libvirt запущен и работает:

sudo systemctl status libvirtd


После выполнения этой команды выйдите из системы и войдите снова. Далее, давайте проверим все ли правильно было установлено. Для этого используйте команду kvm-ok:


Использование KVM в Ubuntu

Вы справились с задачей установить KVM в Ubuntu, но вы еще не можете использовать эту среду виртуализации но ее нужно еще настроить. Далее, мы рассмотрим как выполняется настройка KVM в Ubuntu. Что удобно, в новых версиях сеть уже настроена и вам не нужно создавать новый сетевой мост. Вы можете убедится в этом выполнив команду:


Интерфейсы virbr0 и virbr-nic созданы KVM по умолчанию и они полностью реализуют все необходимые возможности сети. Ещё вы можете посмотреть доступные мосты с помощью команды:

sudo brctl show


Создание виртуальных машин KVM

Настройка KVM Ubuntu завершена и теперь мы можем перейти к ее использованию. Сначала давайте просмотрим список уже существующих виртуальных машин:

virsh -c qemu:///system list

Он пуст. Создать виртуальную машину можно через терминал или в графическом интерфейсе. Для создания через терминал используйте команду virt-install. Сначала перейдем в папку libvirt:

Для установки CentOS команда будет выглядеть вот так:

sudo virt-install \
--virt-type=kvm \
--name centos8 \
--ram 2048 \
--vcpus=2 \
--os-variant=rhl8.0 \
--hvm \
--cdrom=/var/lib/libvirt/boot/CentOS-8.iso \
--network=bridge:virbr0,model=virtio \
--graphics vnc \
--disk path=/var/lib/libvirt/images/centos7.qcow2,size=40,bus=virtio,format=qcow2

Разберем подробнее что означают параметры этой команды:

  • virt-type - тип виртуализации, в нашем случае kvm;
  • name - имя новой машины;
  • ram - количество памяти в мегабайтах;
  • vcpus - количество ядер процессора;
  • os-variant - тип операционной системы;
  • cdrom - установочный образ системы;
  • network-bridge - сетевой мост, который мы настроили ранее;
  • graphics - способ получения доступа к графическому интерфейсу;
  • diskpath - адрес нового жесткого диска для этой виртуальной машины;

После завершения установки виртуальной машины вы можете узнать параметры подключения по VNC с помощью команды:

sudo virsh vncdisplay centos8

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

Переходим в папку для образов:

Можно скачать установочный образ из интернета если это необходимо:

Затем создадим виртуальную машину:

sudo virt-install \
--virt-type=kvm \
--name=debina8 \
--ram=2048 \
--vcpus=2 \
--os-variant=debian8 \
--hvm \
--cdrom=/var/lib/libvirt/boot/debian-8.5.0-amd64-DVD-1.iso \
--network=bridge=bridge0,model=virtio \
--graphics vnc \
--disk path=/var/lib/libvirt/images/debian8.qcow2,size=40,bus=virtio,format=qcow2

Теперь снова посмотрим список доступных машин:

virsh -c qemu:///system list

Для запуска виртуальной машины можно использовать команду:

sudo virsh start имя_машины

sudo virsh shutdown имя_машины

Для перевода в режим сна:

sudo virsh suspend имя_машины

sudo virsh reboot имя_машины

sudo virsh reset имя_машины

Для полного удаления виртуальной машины:

sudo virsh destroy имя_машины

Создание виртуальных машин в GUI

Если у вас есть доступ к графическому интерфейсу то нет никакой необходимости использовать терминал, вы можете применить полноценный графический интерфейс менеджера виртуальных машин Virtual Manager. Программу можно запустить из главного меню:


Для создания новой машины кликните по иконке со значком монитора. Дальше вам будет необходимо выбрать образ ISO вашей системы. Также можно использовать реальный CD/DVD привод:

Если вы выбрали ISO образ, то надо его открыть из файловой системы:

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

На этом экране вам нужно выбрать размер жесткого диска, который будет доступен в вашей машине:

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

Затем автоматически запустится установка:

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

Выводы

В этой статье мы рассмотрели как выполняется установка KVM Ubuntu 20.04, разобрали как полностью подготовить эту среду к работе, а также как создать виртуальные машины и использовать их. Если у вас остались вопросы, спрашивайте в комментариях!

На завершение лекция от яндекса о том что такое виртуализация в Linux:

Нет похожих записей

Оцените статью:

(12 оценок, среднее: 4,67 из 5)

Об авторе

18 комментариев

Спасибо за прекрасную статью! Меня интересует вот какой вопрос. Можно ли организовать средствами KVM проброс PCI-E в виртуальную машину, и если да, то как?

После запуска машины ошибка(((

Ошибка подключения к графической консоли:
внутренняя ошибка: не удалось выполнить команду QEMU «getfd»: No file descriptor supplied via SCM_RIGHTS

Кто знает какие существуют штатные (для которых есть deb пакеты хотя бы в ppa) бесплатные веб-интерфейсы для libvirt'а?

Добрый вечер. В этой строчке ошибка $ sudo addif bridge0 eth0 - нужно добавить $ sudo brctl addif bridge0 eth0

loopback
auto lo bridge0
iface lo inet loopback
iface bridge0 inet dhcp
bridge_ports eth0

Здесь может быть ошибка, т.к. у меня система не принимает эту редакцию /etc/network/interfaces, из-за чего пропадает ethernet-соединение:

ifquery: couldn't read interfaces file "/etc/network/interfaces"
/etc/network/interfaces:4: option with empty value

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

Благодарю! По данной статье настроил виртуалку. Только вот как сделать общую папку не понятно. Уже часов 12 бьюсь над этой задачей. Пока только получилось пробросить флэшку. Если объясните как настроить общую папку в kvm буду благодарен в двойне.

МИГРАЦИЯ. в этих ваших интернетах валом типовых статей как поставить KVM и поднять там виртуалку.
Однако нет ни одной путней статьи о том как устроена миграция, какие виды бывают. Как это работает. А главное какого это не работает.

Читайте также: