- Настройка KVM на Ubuntu Server
- Проверка поддержки гипервизора
- Подготовка сервера
- Установка и запуск
- Настройка сети
- Создание виртуальной машины
- Подключение к виртуальной машине
- Управление виртуальной машиной из командной строки
- Увеличение размера виртуального диска
- Дополнительные средства управления
- Virt-Manager
- ubuntu-vm-builder
- Как установить и запустить Ubuntu WSL под Windows 10
- Что такое Ubuntu WSL
- Зачем нужна Ubuntu WSL на Windows
- Установка Ubuntu WSL под Win 10
- Настройка Ubuntu WSL
- Настройка ssh
- Обновление
- Установка MC
- Войти под root
- Автозапуск служб
- Обновление WSL до WSL2
- Reboot Ubuntu WSL
- Как удалить Ubuntu WSL
Настройка KVM на Ubuntu Server
Инструкция написана на примере Linux Ubuntu Server 18.04.3 LTS. Она подойдет для большинства дистрибутивов на основе Debian.
Проверка поддержки гипервизора
Проверяем, что сервер поддерживает технологии виртуализации:
cat /proc/cpuinfo | egrep «(vmx|svm)»
В ответ должны получить что-то наподобие:
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 popcnt aes lahf_lm epb tpr_shadow vnmi flexpriority ept vpid dtherm ida arat
В противном случае, заходим в БИОС, находим опцию для включения технологии виртуализации (имеет разные названия, например, Intel Virtualization Technology или Virtualization) и включаем ее — задаем значение Enable.
Также проверить совместимость можно командой:
* если команда вернет ошибку «kvm-ok command not found», установите соответствующий пакет: apt-get install cpu-checker.
INFO: /dev/kvm exists
KVM acceleration can be used
значит поддержка со стороны аппаратной части есть.
Подготовка сервера
Для нашего удобства, создадим каталог, в котором будем хранить данные для KVM:
* будет создано два каталога: /kvm/vhdd (для виртуальных жестких дисков) и /kvm/iso (для iso-образов).
timedatectl set-timezone Europe/Moscow
* данная команда задает зону в соответствии с московским временем.
apt-get install chrony
systemctl enable chrony
* устанавливаем и запускаем утилиту для синхронизации времени.
Установка и запуск
Устанавливаем KVM и необходимые утилиты управления.
а) Ubuntu после версии 18.10
apt-get install qemu qemu-kvm libvirt-daemon-system virtinst libosinfo-bin
б) Ubuntu до 18.10:
apt-get install qemu-kvm libvirt-bin virtinst libosinfo-bin
* где qemu-kvm — гипервизор; libvirt-bin — библиотека управления гипервизором; virtinst — утилита управления виртуальными машинами; libosinfo-bin — утилита для просмотра списка вариантов операционных систем, которые могут быть в качестве гостевых.
Настроим автоматический запуск сервиса:
systemctl enable libvirtd
Настройка сети
Виртуальные машины могут работать за NAT (в качестве которого выступает сервер KVM) или получать IP-адреса из локальной сети — для этого необходимо настроить сетевой мост. Мы настроим последний.
Используя удаленное подключение, внимательно проверяйте настройки. В случае ошибки соединение будет прервано.
apt-get install bridge-utils
а) настройка сети в старых версиях Ubuntu (/etc/network/interfaces).
Открываем конфигурационный файл для настройки сетевых интерфейсов:
И приведем его к виду:
#iface eth0 inet static
# address 192.168.1.24
# netmask 255.255.255.0
# gateway 192.168.1.1
# dns-nameservers 192.168.1.1 192.168.1.2
auto br0
iface br0 inet static
address 192.168.1.24
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1 192.168.1.2
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
* где все, что закомментировано — старые настройки моей сети; br0 — название интерфейса создаваемого моста; eth0 — существующий сетевой интерфейс, через который будет работать мост.
Перезапускаем службу сети:
systemctl restart networking
б) настройка сети в новых версиях Ubuntu (netplan).
* в зависимости от версии системы, конфигурационной файл yaml может иметь другое название.
Приводим его к виду:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: false
dhcp6: false
wakeonlan: true
bridges:
br0:
macaddress: 2c:6d:45:c3:55:a7
interfaces:
— eth0
addresses:
— 192.168.1.24/24
gateway4: 192.168.1.1
mtu: 1500
nameservers:
addresses:
— 192.168.1.2
— 192.168.1.3
parameters:
stp: true
forward-delay: 4
dhcp4: false
dhcp6: false
* в данном примере мы создаем виртуальный бридж-интерфейс br0; в качестве физического интерфейса используем eth0. 2c:6d:45:c3:55:a7 — физический адрес интерфейса, через который мы будем настраивать бридж; 192.168.1.24 — IP-адрес нашего сервера KVM; 192.168.1.1 — адрес шлюза; 192.168.1.2 и 192.168.1.3 — адреса серверов DNS.
Применяем сетевые настройки:
Настаиваем перенаправления сетевого трафика (чтобы виртуальные машины с сетевым интерфейсом NAT могли выходить в интернет):
sysctl -p /etc/sysctl.d/99-sysctl.conf
Создание виртуальной машины
Для создания первой виртуальной машины вводим следующую команду:
virt-install -n VM1 \
—autostart \
—noautoconsole \
—network=bridge:br0 \
—ram 2048 —arch=x86_64 \
—vcpus=2 —cpu host —check-cpu \
—disk path=/kvm/vhdd/VM1-disk1.img,size=16 \
—cdrom /kvm/iso/ubuntu-18.04.3-server-amd64.iso \
—graphics vnc,listen=0.0.0.0,password=vnc_password \
—os-type linux —os-variant=ubuntu18.04 —boot cdrom,hd,menu=on
- VM1 — имя создаваемой машины;
- autostart — разрешить виртуальной машине автоматически запускаться вместе с сервером KVM;
- noautoconsole — не подключается к консоли виртуальной машины;
- network — тип сети. В данном примере мы создаем виртуальную машину с интерфейсом типа «сетевой мост». Для создания внутреннего интерфейса с типом NAT вводим —network=network:default,model=virtio;
- ram — объем оперативной памяти;
- vcpus — количество виртуальных процессоров;
- disk — виртуальный диск: path — путь до диска; size — его объем;
- cdrom — виртуальный привод с образом системы;
- graphics — параметры подключения к виртуальной машины с помощью графической консоли (в данном примере используем vnc); listen — на какой адресе принимает запросы vnc (в нашем примере на всех); password — пароль для подключения при помощи vnc;
- os-variant — гостевая операционная система (весь список мы получали командой osinfo-query os, в данном примере устанавливаем Ubuntu 18.04).
Подключение к виртуальной машине
На компьютер, с которого планируем работать с виртуальными машинами, скачиваем VNC-клиент, например, TightVNC и устанавливаем его.
На сервере вводим:
virsh vncdisplay VM1
команда покажет, на каком порту работает VNC для машины VM1. У меня было:
* :1 значит, что нужно к 5900 прибавить 1 — 5900 + 1 = 5901.
Запускаем TightVNC Viewer, который мы установили и вводим данные для подключения:
Кликаем по Connect. На запрос пароля вводим тот, что указали при создании ВМ, (vnc_password). Мы подключимся к виртуальной машине удаленной консолью.
Если мы не помним пароль, открываем настройку виртуальной машины командой:
И находим строку:
* в данном примере для доступа к виртуальной машине используется пароль 12345678.
Управление виртуальной машиной из командной строки
Примеры команд, которые могут пригодиться при работе с виртуальными машинами.
1. Получить список созданных машин:
2. Включить виртуальную машину:
virsh start VMname
* где VMname — имя созданной машины.
3. Выключить виртуальную машину:
virsh shutdown VMname
4. Включить автозапуск виртуальной машины:
virsh autostart VMname
5. Редактирование конфигурации виртуальной машины:
virsh edit VMname
6. Работа с сетевыми интерфейсами.
Добавить обычный сетевой интерфейс (default или NAT) виртуальной машине:
virsh attach-interface —domain VMname —type network —source default —model virtio —config —live
Добавить интерфейс типа bridge:
virsh attach-interface —domain VMname —type bridge —source br0 —model rtl8139 —config —live
Удалить сетевой интерфейс:
virsh detach-interface VMname —type bridge —mac 52:54:00:2e:a9:4d
* где bridge — тип сетевого интерфейса (также может быть network); 52:54:00:2e:a9:4d — MAC-адрес сетевого адаптера (узнать данный адрес можно в конфигурации виртуальной машины или в самой гостевой операционной системы).
7. Посмотреть IP-адреса, выданные виртуальным машинам автоматически:
virsh net-dhcp-leases default
* где default — виртуальная сеть, создаваемая по умолчанию при установке KVM.
Увеличение размера виртуального диска
Получаем список дисков для виртуальной машины:
virsh domblklist VMname
* в данном примере путь до диска — /data/kvm/vhdd/VMname-disk1.img.
Останавливаем виртуальную машину:
virsh shutdown VMname
* или завершаем работу в самой операционной системе.
Увеличиваем размер диска:
qemu-img resize /data/kvm/vhdd/VMname-disk1.img +100G
* данной командой мы расширим дисковое пространство виртуального диска /data/kvm/vhdd/VMname-disk1.img на 100 Гигабайт.
Мы должны увидеть:
Получаем информацию о виртуальном диске:
qemu-img info /data/kvm/vhdd/VMname-disk1.img
Запускаем виртуальную машину:
virsh start VMname
Меняем размер блочного устройства:
virsh blockresize UBU /data/kvm/vhdd/VMname-disk1.img 200G
* где 200G — общий размер виртуального диска после расширения.
После необходимо поменять размер диска в самой операционной системе. Пример того, как это можно сделать можно прочитать в инструкции Добавление дискового пространства виртуальной машине в VMware (раздел «Настройка операционной системы»).
Дополнительные средства управления
Virt-Manager
Virt-manager — графическая консоль для управления виртуальными машинами. С ее помощью можно создавать последние, модифицировать их, запускать, останавливать, подключаться консолью.
Установить на Linux Ubuntu:
apt-get install virt-manager
ubuntu-vm-builder
ubuntu-vm-builder — пакет, разработанный компанией Canonical для упрощения создания новых виртуальных машин.
Как установить и запустить Ubuntu WSL под Windows 10
У пользователей Windows 10 есть необычная возможность установить операционную систему Ubuntu на свой компьютер. Механизм, обеспечивающий такую возможность, называется WSL — Windows Subsystem for Linux. Далее я расскажу, как с помощью WSL установить полноценную Ubuntu на Win 10 штатными средствами системы.
Что такое Ubuntu WSL
Для начала кратко поясню, что такое WSL на практике. Это некий слой абстракции, который позволяет запускать linux приложения в среде windows. И это не виртуальная машина. И Linux, и Windows приложения работают в рамках одной операционной системы с совместным доступом к данным на дисках. Вы прозрачно можете запустить приложение на ubuntu и открыть им файл в директории windows.
Для примера, расскажу, где ubuntu под wsl версии 1 хранит свои файлы — C:\Users\user1\AppData\Local\lxss.
Тут и корень системы, и директории пользователей. Посмотреть содержимое можно из-под windows. Только не рекомендуется их редактировать. Работа linux системы может быть нарушена. На примере доступа к файлам видно, что это не виртуальная машина. Важно понимать это отличие.
А вот то же самое можно сделать из-под ubuntu, открыв файлы из директории windows.
С помощью данной технологии, вы условно сможете запустить полноценный Ubuntu Server на своем компьютере. Читайте мой обзор на Ubuntu, чтобы иметь представление о том, чем он отличается от остальных linux дистрибутивов.
Зачем нужна Ubuntu WSL на Windows
Поговорим немного о том, зачем может понадобиться установка Ubuntu WSL в Windows 10. Можно в небольшой список это вынести и перечислить по пунктам:
- Первое и самое очевидное — для использования линуксовых утилит — git, ansible, cron, rsync и т.д. Речь в первую очередь идет о том софте, которого нет в windows, либо которое затруднительно или неудобно запускать.
- Настройка привычного web окружения в виде lamp (linux, apache, mysql, php) или lemp (то же самое, только с nginx). Особенно это актуально для разработчиков.
- Для обычного знакомства и изучения linux. Нет нужды разбираться с виртуализацией или рядом с windows устанавливать отдельно linux. Тут все в комплекте, можно без проблем переключаться между системами в режиме реального времени. В общем, это удобно.
Это то, что первое приходит в голову. Думаю, есть и другие причины, для чего может быть полезно установить ubuntu wsl. Делитесь своим мнением в комментариях. Может я что-то важное упускаю.
Установка Ubuntu WSL под Win 10
Установка подсистемы Windows для Linux в Windows 10 неплохо описана в официальном руководстве от Microsoft. Чтобы установить Ubuntu WSL на Windows, надо для начала включить компонент системы Windows под названием Windows-Subsystem-Linux. Для этого запускаем cmd с правами администратора (это важно!) и переходим в powershell. Там выполняем:
После этого активируем компонент Платформа виртуальных машин.
Далее обязательно перезагрузить систему, иначе дальше будут ошибки. После перезагрузки продолжаем ставить ubuntu под wsl.
Cкачиваем и устанавливаем Пакет обновления ядра Linux в WSL 2 для 64-разрядных компьютеров — https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
Дальше устанавливаем версию WSL 2 по умолчанию. Она более продвинутая и быстрая, по сравнению с первой.
Теперь идем в Windows Store и ищем там необходимую вам версию Ubuntu WSL. Я просто в строку поиска ввел название дистрибутива и получил все доступные версии.
После установки в меню Пуск можно запустить Ubuntu WSL. При первом запуске вам предложат задать имя пользователя для Linux системы.
Вот и все. Заходим в свежеустановленную Ubuntu 20 LTS на Win 10.
У вас под рукой практически полноценная linux система, работающая нативно под windows.
Настройка Ubuntu WSL
Выполним первоначальную настройку Ubuntu WSL, чтобы с ней удобнее было далее работать. Начнем с подключения по SSH.
Настройка ssh
Терминал Windows не очень удобен и привычен. Так что если вы привыкли подключаться по ssh через какой-нибудь другой менеджер подключений, вам нужно будет на wsl системе настроить ssh. Это не совсем очевидная процедура. Чтобы заставить нормально работать openssh server, его надо переустановить. Делаем это:
Теперь сразу разрешим подключаться с использованием паролей. Для этого открываем конфиг /etc/ssh/sshd_config и разкомментируем настройку:
После этого перезапустите службу sshd
Мы закончили настройку ssh в ubuntu. Теперь к ней можно подключиться, например, через putty. Используем адрес 127.0.0.1 и порт 22.
Вот и все. Можете использовать любой другой ssh клиент.
Обновление
Для того, чтобы обновить Ubuntu WSL на Windows 10 достаточно внутри linux системы запустить стандатрное средство обновления пакетов — apt.
В общем случае этого достаточно для обновления системы. Если же вы хотите выполнить обновление до следующего релиза, то лучше это сделать через Windows Store, установив нужную версию ubuntu.
Установка MC
Для того, чтобы установить популярный в linux среде файловый менеджер Midhight Commander или коротко MC, необходимо опять же воспользоваться пакетным менеджером apt.
При этом вы сможете без проблем перемещаться не только внутри ubuntu, но и открывать файлы windows. Традиционные диски C:, D: и т.д. смонтированы в /mnt.
Войти под root
Для того, чтобы в Ubuntu WSL зайти под ученой записью root, необходимо под пользователем выполнить в консоли:
Теперь вы полноценный root пользователь и можете запускать команды с повышенными привилегиями без sudo.
Автозапуск служб
В Ubuntu WSL не работает systemd и возникает закономерный вопрос, а как же тогда настроить автозапуск нужных служб. Тут есть два принципиально разных подхода по автозапуску служб:
- Служба в wsl запускается автоматически после запуска компьютера.
- Служба wsl запускается автоматически после первого входа в bash установленного linux.
Для первого случая проще всего воспользоваться готовым скриптом wsl-autostart — https://github.com/troytse/wsl-autostart. С его помощью вы можете выбрать любые программы из ubuntu, которые захотите запустить при старте компьютера.
Если вы хотите выполнить какую-то команду при первом входе в wsl, то просто добавьте ее в файл .bashrc домашнего каталога пользователя. Например, добавим туда вывод фразы Hello World! Для этого добавляем в самый конец:
Теперь при запуске терминала wsl, вы увидите свое сообщение.
Вместо команды echo можете написать любую другую. Например, запуск MC:
Теперь при запуске терминала ubuntu wsl у вас автоматически будет запускаться файловый менеджер MC.
Обновление WSL до WSL2
Во время установки любой WSL системы у вас есть возможность выбора ее версии. Вторая версия более современная и быстрая, так что в общем случае рекомендуется использовать ее. Но возможно вам по какой-то причине понадобится первая. Например, в WSL 1 файловая система linux в открытом виде в виде файлов в директории C:\Users\user1\AppData\Local\lxss, а во второй версии в виде единого виртуального диска. Разница принципиальна.
Для того, чтобы обновить WSL1 до WSL2 необходимо через powershell активировать компонент VirtualMachinePlatform:
Указать версию WLS2 как дефолтную:
В завершении проапгрейдить установленный дистрибутив до WSL2 или поставить новый.
Версии WSL можно переключать в любое время. Узнать distribution name можно с помощью команды:
Reboot Ubuntu WSL
Работа в Windows 10 с Ubuntu несколько необычна, поэтому сходу не понятные даже такие простые вещи, как перезагрузка linux системы. Как сделать reboot в Ubuntu WSL? Для того, чтобы перезагрузить систему, достаточно выполнить в консоли powershell команду:
Все экземпляры wsl будут завершены. После запуска терминала ubuntu wsl она запустится заново, что будет равнозначно обычной перезагрузки системы.
Если вы используете первую версию WSL, то перезапуск linux систем выполняется перезапуском службы, которая их обслуживает. Выполняется так же в консоли windows^
Как удалить Ubuntu WSL
Если вам нужно удалить Ubuntu WSL из Windows 10, то сделать это можно точно так же, как любое другое приложение, установленное из Магазина. Выбираете Ubuntu WSL через пуск и нажимаете Удалить.
То же самое можно сделать и через консоль powershell
Список установленных систем смотрим командой:
Ничего сложного, система удаляется фактически в одну команду. Для повторной установки достаточно еще раз установить ubuntu через Магазин.