Kqemu что это
Перейти к содержимому

Kqemu что это

  • автор:

QEMU

QEMU — система эмуляции (и виртуализации) компьютера (вычислительной системы с процессором, памятью и периферийными устройствами), поддерживающего различные архитектуры.

Поддерживаемые эмулируемые (target) архитектуры:

  • x86,
  • x86_64,
  • ARM,
  • SPARC,
  • PowerPC,
  • MIPS,
  • m68k (Coldfire),
  • SH-4.

В процессе разработки находятся:

В режиме виртуализации QEMU использует специальный модуль KQEMU, позволяющий исполнять код гостевой операционной системы непосредственно на процессоре хост-системы. В таком режиме поддерживается только архитектура x86. Начиная с версии 0.12.0, QEMU не поддерживает KQEMU.

QEMU обладает ещё одной интересной возможностью — он позволяет исполнять бинарный код, подготовленный для одной архитектуры, на процессоре другой архитектуры (работает только с linux в качестве host-ОС). Например, можно на PowerPC (попробовать) запускать Linux-программы, откомпилированные для x86, или Windows-программы (win32) через Wine.

QEMU использует механизм динамической трансляции, т.е. каждая из инструкций эмулируемой платформы заменяется на заранее подготовленный фрагмент инструкций физического процессора (в котором, возможно, изменяются используемые регистры). Оттранслированные фрагменты хранятся в 16-ти мегабайтном Translation cache.

[править] Инсталляция QEMU

Эмулятор qemu можно установить принятым в дистрибутиве способом.

Например, для Debian GNU/Linux:

%# apt-get install qemu

Элементарные операции доступны сразу же после установки.

Например, запустить в эмуляторе LiveCD:

%$ qemu -cdrom knoppix.iso

Ещё можно делать так:

Создаём образ диска

%$ qemu-img create Arch.img 1024M

Инсталлируем систему

%$ qemu -cdrom archlinux-200x.xx-x.iso -boot d Arch.img

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

Чтобы QEMU отпустил захваченную мышь, нужно нажать Ctrl-Alt.

[править] kqemu

kqemu — модуль ядра Linux, который позволяет напрямую передавать инструкции эмулируемой системы процессору хост-системы, что существенно повышает производительность.

Чтобы использование kqemu было возможно, необходимо:

  • доступен и загружен модуль ядра kqemu;
  • qemu исполняется от имени суперпользователя;
  • qemu исполняется не в паравиртуальном домене Xen.

Модуль kqemu не работает в паравиртуальных доменах Xen, включая домен 0.

При условии выполнения всех этих требований, kqemu при запуске qemu включается автоматически.

Инсталляция в Debian:

%# apt-cache search kqemu %# apt-get install kqemu-modules-2.6-686 %# modprobe kqemu

[править] Графика и консоль в QEMU

[править] Консоль

Можно запустить эмулятор/виртуальную машину без эмуляции графического интерфейса. Предполагается, что взаимодействие с ней будет выполняться через последовательный порт (который будет подключен к терминалу, на котором вызывается qemu):

qemu -m 256 -hda test01.img -nographic

При этом Linux ядру виртуальной машины должны передаваться параметры:

console=ttyS0

В файле /etc/inittab должна присутствовать строка:

S0:2345:respawn:/sbin/mingetty ttyS0

Если же нет возможности передать дополнительные параметры ядра пользуясь загрузчиком, то можно вызвать qemu сразу с ядром и initrd:

qemu -nographic -kernel ./bzImage -hda ./test01.img -append "root=/dev/sda console=ttyS0"

[править] Сеть в QEMU

тихо-тихо идёт
пинг изнутри
qemu

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

Например, в хост-системе создан мост и к нему подключен интерфейс:

%# brctl show . br0 8000.001a4d80ce78 no peth0 .

Тогда, если использовать такой скрипт и способ запуска qemu, эмулятор будет подключен к этому мосту, и его единственный сетевой интерфейс будет смотреть в общую сеть (туда, куда смотрит интерфейс peth0).

Файл /etc/qemu-ifup

#!/bin/sh bridge=br0 echo "Executing /etc/qemu-ifup" echo "Bringing up $1 for bridged mode. " sudo /sbin/ifconfig $1 0.0.0.0 promisc up echo "Adding $1 to $bridge. " sudo /usr/sbin/brctl addif $bridge $1 sleep 2

Файл должен быть исполняемым:

%$ chmod +x qemu-ifup
%# qemu -hda haiku.img -boot c -net nic,vlan=0 \ -net tap,vlan=0,ifname=tap0,script=/etc/qemu-ifup -m 256 -localtime

Запускать нужно от root’а, потому что иначе могут возникнуть проблемы с доступом к устройству /dev/net/tun.

Здесь ключевое слово vlan обозначает виртуальный коммутатор внутри процесса QEMU, который не имеет прямого отношения к VLANам в привычном понимании этого слова.

Здесь вместо haiku.img должен быть указано имя файла, содержащего исполняемый образ.

  • Networking QEMU Virtual BSD Systems (англ.) хорошая схема внутреннего подключения внутреннего DHCP-сервера в QEMU
  • http://qemu-buch.de/cgi-bin/moin.cgi/QemuAndSlirp

Обратиться по сети к машине, работающей внутри QEMU можно не обзятально создавая дополнительные интерфейсы в хост-системе:

$ qemu-system-x86_64 Platte.img -net nic -net user,hostfwd=tcp::12345-:22

В данном случае порт 12345 в хост системе отражается на порт 22 гостевой системы. Сетевой интерфейс гостевой системы конфигурируется с помощью встроенного DHCP-сервера.

Пробросить порт в обратную сторону можно с помощью `guestfwd`:

guestfwd=tcp:10.0.2.100:49999-tcp:127.0.0.1:49999

В этом случае при обращении изнутри гостевой системы на 10.0.2.100:49999 обращение будет перенаправлено на 127.0.0.1:49999 внешней системы.

Другой способ — использовать опцию redir:

-redir tcp:12345::22

Дополнительная информация по теме (QEMU + Socket):

  • http://unix.stackexchange.com/questions/124681/ssh-from-host-to-guest-using-qemu
  • http://wiki.qemu.org/Documentation/Networking (искать по слову Socket)
  • http://www.h7.dion.ne.jp/~qemu-win/HowToNetwork-en.html
  • http://secomputing.co.uk/2012/02/21/Forwarding-ports-to-KVM-clients/
  • http://qemu-buch.de/de/index.php?title=QEMU-KVM-Buch/_Netzwerkoptionen/_Virtuelle_Netzwerke_konfigurieren (нем.)

[править] USB в QEMU

Knoppix внутри QEMU. Проброшено USB-устройство

Поддержка USB в QEMU включается при помощи ключа -usb.

Вы можете пробросить устроуйство внутрь машины QEMU при помощи ключа -usbdevice.

Например, вы хотите пробросить GPS-навигатор Garmin, который подключается через USB к хост-системе:

В хост-системе выполняете:

%# lsusb Bus 001 Device 004: ID 091e:0003 Garmin International GPSmap (various models)

При вызове qemu указываете идентификатор устройства:

%# qemu -usb -usbdevice host:091e:0003

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

В версиях QEMU до 0.13.0 буфер для управляющих сообщений имеет размер 2048 (или 1024 в более старых версиях) байт, чего недостаточно для некоторых USB-устройств. Отсутствие проверки вызывает «падение» QEMU при работе с такими устройствами с сообщением "husb: ctrl buffer too small" Решается вопрос маленьким патчем: http://www.mail-archive.com/qemu-devel@nongnu.org/msg24074.html Та же проблема актуальна для qemu-kvm, и qemu-dm используемого в Xen.

[править] С чем можно поиграться в QEMU

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

Многие из этих проектов можно посмотреть и поиграться с ними с помощью QEMU.

  • LiveCD — любой LiveCD скачивается и запускается в QEMU. Не требует никаких дополнительных операций по подготовке. Очень удобно для проверки диска, для изучения его возможностей.
  • OLPC — возможно вы слышали об OLPC и хотели бы на него посмотреть. Проще всего это сделать при помощи QEMU. Образы здесь [1]. Используйте образ ext3, не JFFS!
  • OpenMoko — Образы для эмуляции здесь [2].

[править] Дополнительная информация

  • Свободный QEMU — установка и первые впечатления — заметка в блоге «Записки дебианщика» (рус.)
  • Документация пользователя эмулятора процессора QEMU (рус.)
  • Hardware virtualization with QEMU (англ.)
  • http://qemu-buch.de/ (нем.) и частично (англ.)
  • QEMU and TUN/TAP networking (англ.)
  • QEMU — Debian — Linux — TUN/TAP — network bridge (англ.)
  • qemu bridged to Ethernet (англ.)
  • Setting up your own internal network w/ qemu. (англ.)
  • How to use Network in QEMU (англ.)
  • QEMU Networking (англ.)

Эмуляция различных архитектур:

  • HPPAQEMU — HPPA Host and Target Support for QEMU (PA-RISC)
  • Debian on an emulated ARM machine (англ.)

[править] Материалы по эмуляторам на Xgu.ru

  • WANEM — эмулятор WAN
  • IMUNES (An Integrated Multiprotocol Network Emulator / Simulator)

Платформа для анализа программ на основе эмулятора QEMU

Платформа для анализа программ на основе эмулятора QEMU

Платформа ИСП РАН для анализа программ построена на базе открытого эмулятора QEMU, который используется при необходимости кроссплатформенной разработки. Поддерживает механизмы обратной отладки и интроспекции, а также режим полносистемной эмуляции для отладки низкоуровневого ПО.

Особенности и преимущества

QEMU поддерживает более 10 архитектур процессоров (i386 и x86-64, ARM и Thumb, MIPS, PowerPC и др.). Реализует отладку по сетевому протоколу GDB RSP и совместим с IDA Pro, GDB и средами разработки. В режиме полносистемной эмуляции подходит для отладки низкоуровневого ПО, такого как загрузчик и ОС. Исходный код QEMU систематически проверяется двумя статическими анализаторами (Coverity и Svace), что делает анализ потенциально вредоносного ПО в эмуляторе более безопасным. Эмулятор с поддержкой обратной отладки и интроспекции доступен на GitHub (https://github.com/ispras/swat), как и набор инструментов автоматизации (https://github.com/ispras/qdt, https://github.com/ispras/i3s).

Платформа ИСП РАН на основе QEMU – это:

  • Запись и воспроизведение работы виртуальной машины:
    • При каждом воспроизведении виртуальная машина ведёт себя одинаково и точно так же, как при записи. Все воздействия извне зафиксированы и повторяются самим эмулятором. Это упрощает отладку ошибок, связанных с параллельной работой (состояние гонки, взаимные блокировки).
    • На базе воспроизведения реализована GDB-совместимая обратная отладка, которая заключается в откате к предыдущим снимкам состояния виртуальной машины и поиске предпоследнего срабатывания точки останова или предыдущей инструкции.
    • Записывается минимум информации, что позволяет вести длительную запись, необходимую для отладки редко повторяющихся ошибок.
    • Низкое относительное замедление, вносимое записью, позволяет контролировать ПО, взаимодействующее с удалённой неконтролируемой системой в реальном времени.
    • Возможность получить последовательность совершаемых системных вызовов, обращений к именованным функциям в динамических библиотеках, список работающих процессов, список открытых файлов и загруженных в память модулей.
    • Поддержка любого образа виртуальной машины на основе Linux, в том числе образов встраиваемого ПО различных устройств.
    • Отладка с помощью встроенного в эмулятор сервера WinDbg, что позволяет отображать информацию о гостевом ПО в терминах абстракций ядра Windows. При этом не требуется включение отладочного режима работы гостевой ОС.
    • Сокращение времени на подготовку средств динамического анализа для образцов кода, требующих специализированной аппаратуры.
    • Автоматизированное добавление процессорных архитектур с использованием генератора декодеров машинных команд и Си-подобного языка описания семантики инструкций.
    • Система автоматического первичного тестирования виртуальной машины. Для работы системы требуются только утилиты GNU Binutils и компилятор языка Си.
    • Автоматизированная разработка моделей устройств.
    • Генерация виртуальной машины (в форме исходного кода модуля QEMU) как из существующих, так и из новых устройств по описанию на языке Python с использованием графического интерфейса пользователя со схематичным изображением системы.
    • API для автоматизации процесса отладки на языке Python по протоколу GDB RSP: отладка гостевого кода, кода эмулятора и обоих одновременно.
    • Свободное расширение возможностей QEMU благодаря открытому исходному коду и собственным инструментам ускоренной разработки ИСП РАН.
    • Анализ бинарного кода без внедрения программ в гостевую систему.
    • Модульная структура механизма интроспекции с возможностью расширения за счёт новых плагинов.
    • Удобное API для самостоятельной разработки плагинов интроспекции.
    • Возможность адаптации под конкретные нужды пользователя.
    • Поддержка актуальных версий QEMU с новой периферией и процессорными ядрами.

    Для кого предназначена платформа ИСП РАН на основе QEMU?

    • Разработчики загрузчиков, драйверов, ОС и другого системного ПО.
    • DevOps-команды (воспроизводимость ошибок, кросс-разработка, масштабирование тестирования в облачной среде).
    • Аналитики потенциально вредоносного ПО.
    • Специалисты по сертификации ПО.

    Поддерживаемые гостевые среды

    Эмулируемые платформы: i386, x86-64, ARM, MIPS, PowerPC и другие.

    Гостевые системы, поддерживаемые интроспекцией: Windows XP (x86), Windows 10 (x86-64) и Linux 2.x-5.x на платформах x86, x86-64, ARM, AArch64.

    Опыт внедрения

    Реализованный механизм воспроизведения принят мировым сообществом разработчиков QEMU и включен в версию 3.1.

    Общие принципы работы QEMU-KVM

    image

    KVM (Kernel-based Virtual Machine) – гипервизор (VMM – Virtual Machine Manager), работающий в виде модуля на ОС Linux. Гипервизор нужен для того, чтобы запускать некий софт в несуществующей (виртуальной) среде и при этом, скрывать от этого софта реальное физическое железо, на котором этот софт работает. Гипервизор работает в роли «прокладки» между физическим железом (хостом) и виртуальной ОС (гостем).

    Поскольку KVM является стандартным модулем ядра Linux, он получает от ядра все положенные ништяки (работа с памятью, планировщик и пр.). А соответственно, в конечном итоге, все эти преимущества достаются и гостям (т.к. гости работают на гипервизоре, которые работает на/в ядре ОС Linux).

    KVM очень быстрый, но его самого по себе недостаточно для запуска виртуальной ОС, т.к. для этого нужна эмуляция I/O. Для I/O (процессор, диски, сеть, видео, PCI, USB, серийные порты и т.д.) KVM использует QEMU.

    2) QEMU

    QEMU (Quick Emulator) – эмулятор различных устройств, который позволяет запускать операционные системы, предназначенные под одну архитектуру, на другой (например, ARM –> x86). Кроме процессора, QEMU эмулирует различные периферийные устройства: сетевые карты, HDD, видео карты, PCI, USB и пр.

    Работает это так:

    Инструкции/бинарный код (например, ARM) конвертируются в промежуточный платформонезависимый код при помощи конвертера TCG (Tiny Code Generator) и затем этот платформонезависимый бинарный код конвертируется уже в целевые инструкции/код (например, x86).

    ARM –> промежуточный_код –> x86

    По сути, вы можете запускать виртуальные машины на QEMU на любом хосте, даже со старыми моделями процессоров, не поддерживающими Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine). Однако в таком случае, это будет работать весьма медленно, в связи с тем, что исполняемый бинарный код нужно перекомпилировать на лету два раза, при помощи TCG (TCG – это Just-in-Time compiler).

    Т.е. сам по себе QEMU мега крутой, но работает очень медленно.

    3) Protection rings

    image

    Бинарный программный код на процессорах работает не просто так, а располагается на разных уровнях (кольцах / Protection rings) с разными уровнями доступа к данным, от самого привилегированного (Ring 0), до самого ограниченного, зарегулированного и «с закрученными гайками» (Ring 3).

    Операционная система (ядро ОС) работает на Ring 0 (kernel mode) и может делать с любыми данными и устройствами все, что угодно. Пользовательские приложения работают на уровне Ring 3 (user mode) и не в праве делать все, что захотят, а вместо этого каждый раз должны запрашивать доступ на проведение той или иной операции (таким образом, пользовательские приложения имеют доступ только к собственным данным и не могут «влезть» в «чужую песочницу»). Ring 1 и 2 предназначены для использования драйверами.

    До изобретения Intel VT-x / AMD SVM, гипервизоры работали на Ring 0, а гости работали на Ring 1. Поскольку у Ring 1 недостаточно прав для нормального функционирования ОС, то при каждом привилегированном вызове от гостевой системы, гипервизору приходилось на лету модифицировать этот вызов и выполнять его на Ring 0 (примерно так, как это делает QEMU). Т.е. гостевой бинарный код НЕ выполнялся напрямую на процессоре, а каждый раз на лету проходил несколько промежуточных модификаций.

    Накладные расходы были существенными и это было большой проблемой и тогда производители процессоров, независимо друг от друга, выпустили расширенный набор инструкций (Intel VT-x / AMD SVM), позволяющих выполнять код гостевых ОС НАПРЯМУЮ на процессоре хоста (минуя всякие затратные промежуточные этапы, как это было раньше).

    С появлением Intel VT-x / AMD SVM, был создан специальный новый уровень Ring -1 (минус один). И теперь на нем работает гипервизор, а гости работают на Ring 0 и получают привилегированный доступ к CPU.

    • хост работает на Ring 0
    • гости работают на Ring 0
    • гипервизор работает на Ring -1

    4) QEMU-KVM

    KVM предоставляет доступ гостям к Ring 0 и использует QEMU для эмуляции I/O (процессор, диски, сеть, видео, PCI, USB, серийные порты и т.д., которые «видят» и с которыми работают гости).

    Отсюда QEMU-KVM (или KVM-QEMU) 🙂

    P.S. Текст этой статьи изначально был опубликован в Telegram канале @RU_Voip в качестве ответа на вопрос одного из участников канала.

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

    Что такое kqemu.sys

    Процесс kqemu.sys является файл драйвера система, которая используется с помощью программного обеспечения QEMU для реализации своих размещенных функциональные виртуальных машин в системах Windows, основанных. Kqemu.sys файл помогает приложение QEMU в интеграции аппаратные возможности виртуализации этого эмулятора программы в компьютеры с материнской платой и чипсетов устройств, предназначенных для систем Windows, основанных, в целях удовлетворения гостевых операционных систем, которые не были разработаны для такого аппаратной архитектуры. Kqemu.sys файл помещается в системе на установки программного обеспечения QEMU, что также означает файл kqemu.sys поставляется в распределений установщика приложения QEMU. QEMU стоит для быстрой эмуляции, и это программное обеспечение представляет собой приложение с открытым исходным кодом. Эмуляция функциональные встроенные в программное обеспечение QEMU и процесс kqemu.sys состоят из динамических двоичных переводов для осуществления процедур эмуляции процессора.

    Как я могу остановить kqemu.sys и я должен?

    Большинство процессов несистемные, работающих под управлением может быть остановлен, потому что они не участвуют в управлении операционной системы. kqemu.sys. используется QEMU and Microsoft Windows, Если вы закрыли kqemu.sys, он, вероятно, начать все заново на более позднее время или после перезагрузки компьютера или, при старте приложения. Чтобы остановить kqemu.sys, постоянно нужно удалить приложение, которое работает этот процесс, который в данном случае является QEMU and Microsoft Windows, из вашей системы.

    После деинсталляции приложений, что это хорошая идея, чтобы сканировать вам реестр системы на наличие оставшихся следов применения. Registry Reviver по ReviverSoft является отличным инструментом для этого.

    Является ли это вирус или другой проблемой безопасности?

    Вердикт ReviverSoft безопасности

    Эксперты ReviverSoft еще не отзывы kqemu.sys

    Пожалуйста, ознакомьтесь с kqemu.sys и отправить мне уведомление, как только он имеет
    был рассмотрен.

    Что такое процесс и как они влияют на мой компьютер?

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

    Является kqemu.sys Известно, что плохо сказывается на производительности системы?

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

    Что я могу сделать, если kqemu.sys вызывает ошибки на моем компьютере?

    Первое, что вы должны сделать, если kqemu.sys. вызывает ошибки на Вашем компьютере, чтобы запустить сканирование реестра Windows, с Registry Reviver Если вы по-прежнему наблюдаем ошибки после этого вы должны удалить программу, что kqemu.sys, принадлежит, в этом случае QEMU and Microsoft Windows

    О Mark Beare

    Основатель ReviverSoft и любитель настройки и поддержания компьютеров. Спроси меня вопрос и прокомментировать мои посты. Я люблю обратную связь!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *