Linux virtual windows server

Is there a way to create a Windows virtual machine on Ubuntu Server?

When I look for documentation about how to create a Windows VM on an Ubuntu host, the only articles I can find are articles about Ubuntu Desktop, not Ubuntu Server. Is there a way to create a Windows VM on Ubuntu Server? Can anyone point me to any articles? Bonus points if I don’t need to compile anything or do anything super complex.

If you already know how to use KVM on the command line, just sudo tasksel install virt-host , and you will have everything ready for full-blown server for virtualization.

This page is quite enough to tell you how to get started with KVM on the command line. To access the VMs, just use VNC. If you need any more explanation, comment and tag me @Oxwivi , I will make a full answer.

3 Answers 3

You should use KVM, because . because Ubuntu love Kvm

what is KVM

KVM (for Kernel-based Virtual Machine) is a full virtualization solution for Linux on x86 hardware containing virtualization extensions (Intel VT or AMD-V).

Using KVM, one can run multiple virtual machines running unmodified Linux or Windows images. Each virtual machine has private virtualized hardware: a network card, disk, graphics adapter, etc.

The kernel component of KVM is included in mainline Linux, as of 2.6.20.

Ubuntu uses KVM as the back-end virtualization for non-graphic servers and libvirt as its toolkit/API. Libvirt front ends for managing VMs include virt-manager (GUI).

Let’s go to hack

This setup guide is to configure a KVM on Ubuntu Server and management of the VMs is done remotely from another machine running Ubuntu Desktop.

STEP #1: Install lib-virt package.

sudo apt-get install kvm libvirt-bin 

STEP #2:allow incoming tcp and udp packet on port 22 (ssh) on server

STEP #2: Install Virtual Machine Manager (on Ubuntu Desktop machine).

sudo apt-get install virt-manager 

STEP #3: Connect to the server: execute virt-manager

  • FILE.
  • ADD Connection.
    • Connect to remote computer
    • Method : SSH
    • User : your user server
    • machine name : ip address of the server

    NOW YOU ARE READY TO CREATE VIRTUAL MACHINE ON THE SERVER

    STEP #4: Create the Guest VM image. Virtual Machine Manager provides a GUI to easily create an image. Just right-click on the server and select “New”. You will then be prompted step-by-step on the variables (e.g. # of processors, memory, etc.) needed to be configured for your VM.

    STEP #5: Install the Guest VM OS. Use your regular CD/DVD installer or iso image to install the operating system on the VM.

    More information in ubuntu official server Documentation -> here

    Good Luck and Happy Rocking

    P.S : you souldn’t be afraid of command line.

    Not afraid of the command line (I actually kinda love it), I just hate the complex stuff that usually causes errors that I have to google for hours to troubleshoot.

    VirtualBox (what you’ll have been reading about in the desktop threads) has a few command line tools that allow you to run any virtual machine in a headless state.

    VBoxHeadless -startvm vm_name 

    You would still need to set up the VM which can be done, I believe, with VBoxManage ( VBoxManage —help for options there). It might be easiest to do initial configuration on a desktop and then transfer the config and disk image to the server.

    If you want it to run on boot, you’d want to write an init or Upstart script for it to load, or just shove the command in /etc/rc.local as a lazy, unmanaged method (you’ll probably want & on the end of the command so it doesn’t block the system loading).

    But similarly, you might have to use Upstart so it doesn’t load up until networking has come up. Play around with it and let us know what works.

    But you shouldn’t need to compile anything.

    Edit 2: There are some old installation instructions here but what is really useful there are the example VBoxManage statements:

    VBoxManage createvm -name "Ubuntu 8.04 Server" -register VBoxManage modifyvm "Ubuntu 8.04 Server" -memory "256MB" -acpi on -boot1 dvd -nic1 nat VBoxManage createvdi -filename "Ubuntu_8_04_Server.vdi" -size 10000 -register VBoxManage modifyvm "Ubuntu 8.04 Server" -hda "Ubuntu_8_04_Server.vdi" VBoxManage registerimage dvd /home/ubuntu-8.04.1-server-i386.iso VBoxManage modifyvm "Ubuntu 8.04 Server" -dvd /home/ubuntu-8.04.1-server-i386.iso 

    You’ll need to customise them for your situation but they should give you a good reference point.

    Источник

    Запуск Windows под Linux KVM

    Задача: запустить некоторое количество виртуальных машин с Windows на типовом Линукс-сервере.

    Решение: любой современный Linux-дистрибутив, «родная» технология виртуализации KVM, Windows 2003 и настройки, описанные ниже.

    Выбор гостевой ОС

    Windows XP работает под Linux KVM неустойчиво. Основные ошибки — потребление 100% процессора процессом csrss.exe (вплоть до обрыва RDP-сессий) и BSOD с кодом IRQL_NOT_LESS_OR_EQUAL в HAL.DLL. Если удалось достичь стабильной работы, обязательно отключите автоматическую установку обновлений! По нашему опыту, для работы WinXP под KVM они стали главным источником проблем.

    Windows 7 работает нормально, но согласно счётчикам Proxmox, требует для работы более 3 гигабайт ОЗУ.

    • работает надёжно, в т.ч. с virtio,
    • проблем совместимости с XP не имеет (даже внешний вид может быть сделан таким же),
    • занимает в ОЗУ менее 800 мегабайт.

    Для ознакомительных целей годится любой опубликованный на RuTracker дистрибутив.

    Первый запуск и virtio

    #!/bin/sh VM_ID="10" MACBASE="00:16:3e:ff:ff" HDA="vm_$.img" HDB="temp.img" HDC="w2k3_r2_ent_rus_x86/ru_win_srv_2003_r2_enterprise_with_sp2_vl_cd1_X13-46484.iso" HDD="virtio-win-0.1-52.iso" sudo kvm \ -enable-kvm \ -boot "menu=on,order=d" \ -m 1024M \ -balloon virtio \ -name "kvm_$" \ -drive "file=$HDA,index=0,media=disk,cache=writeback" \ -drive "file=$HDB,index=1,media=disk,cache=writeback,if=virtio" \ -drive "file=$HDC,index=2,media=cdrom,cache=writeback,readonly" \ -drive "file=$HDD,index=3,media=cdrom,cache=writeback,readonly" \ -net "nic,model=virtio,macaddr=$:$" \ -net "tap,ifname=tap$,script=no,downscript=no" \ -vnc "0.0.0.0:$" 

    Параметр «-vnc . » имеет смысл только на сервере без GUI. По умолчанию KVM откроет окно через SDL. В обоих случаях Ctrl+Alt+Shift+1 и Ctrl+Alt+Shift+2 служат для переключения внутри окна между гостевой и управляющей консолью.

    Параметр » -net nic,model=virtio. » создаст внутри ВМ сетевую карту неизвестного Windows типа, для которого мастер настройки оборудования предложит выбрать драйвер. Парный ему параметр » -net tap. » создаст в хост-ОС сетевой интерфейс для связи с ВМ. Назначение IP-адресов, настройка DHCP и выхода во внешний мир через ProxyARP, NAT или Bridge не имеют прямого отношения к Windows, поэтому здесь не рассматриваются.

    Теперь про самое важное на данном этапе, т.е. про диски.

    HDC — это ISO-образ с дистрибутивом Windows. Имя файла взято из торрента в предыдущем разделе. С него внутри ВМ произойдет первая загрузка системы (» -boot order=d «).

    HDA — это пустой образ диска, на который будет устанавливаться система. Создан командой » kvm-img create -f qcow2 vm_10.img 50G «.

    HDB — это пустой образ диска, созданный через » kvm-img create -f qcow2 temp.img 1G » с единственной целью — показать Windows устройство незнакомого типа, чтобы она затребовала драйвер для него. Установка в систему драйвера virtio для временного диска позволит переключить затем с IDE на virtio системный диск.

    После того, как установка системы и драйверов будет полностью завершена, в команде запуска следует убрать «-boot» и все строки «-drive», кроме первой, т.к. временный диск и ISO-образы станут не нужны (обратите внимание на добавленный » if=virtio «!):

    kvm . -drive "file=$HDA,index=0,media=disk,cache=writeback,if=virtio" . 

    Про пользу virtio, варианты настройки сети и параметры командной строки kvm читайте в habrahabr.ru/post/167099

    Рекомендуемые настройки Windows

    Во-первых, по умолчанию Windows создаёт при BSOD’ах полный дамп памяти. В лучшем случае, это существенно замедлит перезагрузку. В худшем, приведёт к полному зависанию.

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

    • Автоматическое обновление: Отключить
    • Дополнительно => Отчет об ошибках => Отключить
    • Дополнительно => Загрузка и восстановление => Параметры => Отказ системы => Запись отладочной информации => Малый дамп памяти (64КБ)

    После этого можете приступать к установке драйверов для диска (virt-stor) и сетевой карты (virt-net). После их установки в Диспетчере оборудования появятся «Red Hat VirtIO SCSI Controller», «Red Hat VirtIO SCSI Disk Device» и «Red Hat VirtIO Ethernet Adapter».

    Ballooning

    Традиционный подход — сразу при запуске виртуальной машины (ВМ) выделять ей блок ОЗУ заданного размера, например, 512 мегабайт. Его недостаток — в те моменты, когда в памяти ВМ есть неиспользуемое пространство, в других ВМ и хост-системе её может не хватать.

    Memory ballooning — это механизм динамического (а) выделения хост-ОЗУ для ВМ по мере необходимости и (б) возвращения неиспользуемых блоков по мере освобождения. Благодаря ему становится возможным одновременно запускать множество ВМ, суммарный объём виртуального ОЗУ в которых больше объёма физического ОЗУ в хост-системе, при условии, что они не станут использовать максимально разрешённый объём все сразу. Благодаря этому память хост-системы распределяется между ВМ так же гибко, как между обычными процессами.

    Создание виртуальных ресурсов, превышающих физические по объёму, обозначается любимыми для многих хостеров терминами «overcommit» и «overselling».

    • MOM (memory overcommitment manager) в хост-системе, меняющего объём ОЗУ для ВМ на основании запросов из неё,
    • VMM (менеджера виртуальной памяти) в гостевой ОС, взаимодействующего с MOM через виртуальный PCI-контроллер.

    Гостевое устройство для связи с MOM диспетчер оборудования (devmgmt.msc) Windows увидит как «PCI standard RAM controller» неизвестного типа. В отличие от virt-stor и virt-net, драйвер к нему не будет предложено установить автоматически. Вместо этого, следует зайти в свойства устройства, на вкладке «Драйвер» выбрать обновление и вручную указать путь к balloon.inf на VirtIO CD (пруф). После этого устройство переименуется в «VirtIO Balloon Driver».

    ACPI

    По умолчанию Windows 2003 разрешает выключать себя единственным способом — ввести логин-пароль, выбрать Пуск => «Завершение работы», ввести примечание, нажать «OK». Разумеется, на VDS-ферме такой подход неприемлем. KVM (и QEMU) умеет эмулировать ACPI. Команда «system_powerdown» аналогична нажатию кнопки питания на физическом компьютере, но Windows её проигнорирует. Лечится следующим REG-файлом:

    Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system] "ShutdownWithoutLogon"=dword:00000001 "DisableCAD"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows] "ShutdownWarningDialogTimeout"=dword:00000003 

    Кэширование

    Если образ гостевого диска хранится на VDS-ферме в виде файла, кэширование гостевых файлов может оказаться двойным — сначала их кэширует гостевая ОС при обращениях к виртуальному диску, затем ОС фермы при обращениях к физическому.

    • none — хост-система не кэширует файл-образ ни на чтение, ни на запись
    • writeback — запись выполняется немедленно, чтение кэшируется
    • writethrough — чтение и запись кэшируются

    Все без исключения источники в Сети советуют не использовать writethrough как наиболее медленный. По субъективной оценке, для ВМ с Windows оптимален writeback, для ВМ с Linux и FreeBSD — none.

    Зависания сети

    Единственной серьёзной проблемой, которую однозначно вызывает ошибка в KVM, являются подвисания гостевой сети при интенсивном трафике: bugs.centos.org/view.php?id=5526 (кроме собственно описания ошибки, там же есть важные ссылки на другие багтрекеры).

    Рекомендации, предлагаемые участниками обсуждений (обновление qemu-kvm и ядра, изменение параметров командной строки, использование vhost-net), к сожалению, пока не сумели её решить.

    При каждом подвисании приходится заходить на консоль ВМ по VNC и выполнять сброс сетевого интерфейса, после чего трафик снова начинает ходить нормально.

    Автоматизировать данное действие в Windows можно с помощью AutoIt, если создать файл PingFailed_ResetNic.au3 и вызывать его Диспетчером заданий каждые несколько минут:

    #include «EventLog.au3» Local $PingHost = "192.168.0.1" Local $Interface = "LAN" Ping($PingHost, 250) If @error = 0 Then Exit Local $hEventLog = _EventLog__Open("", "RestartNicOnPingFailure") Local $aEmpty[1] = [0] _EventLog__Report($hEventLog, 2, 0, 1, "", "Restart NIC " & Interface & " on failed ping to " & PingHost, $aEmpty) _EventLog__Close($hEventLog) RunWait("netsh interface set interface " & $Interface & " DISABLED", "", @SW_HIDE) RunWait("netsh interface set interface " & $Interface & " ENABLED", "", @SW_HIDE) 

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

    Источник

    Читайте также:  Linux fingerprint reader driver
Оцените статью
Adblock
detector