Емулация системи с QEMU

Какво е QEMU?

Не е преувеличено да се каже, че за виртуализация - това е много популярен настоящата технология. Днес, по заявка думи за виртуализация в търсачката се издават около 22 милиона резултати. Например, само за един месец, EMC обявиха оттеглянето на пазара на ценни книжа, за VMware, Citrix System обяви плановете си да закупят XenSource, много нови фирми в сегмента на виртуализация. На това, тъй като се оказа, една колосална пазар постоянно се намери нови ниши. Но въпреки всички приказки на първични публични предлагания и придобивания в виртуализация в наши дни е лесно да се забрави за някои други съществуващи технологии за виртуализация.

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

Кратко въведение за виртуализация

Нека започнем с кратко представяне на виртуализация, за да подготви сцената за QEMU.

Под виртуализация в тази статия се предполага, платформа за виртуализация. За физически програма за мониторинг на хардуера може да бъде домакин операционната система или хипервайзора (вж. Фигура 1). В някои случаи, операционната система домакин и хипервайзор. Гости операционни системи "на живо" хипервайзор. В някои случаи виртуалната операционна система са насочени към същия процесор като програмата за мониторинг, но в други случаи може да е различна (например, PowerPC гост работи на x86).

Фигура 1. Основна архитектура на виртуализация платформа

Прилагане виртуализация може да бъде най-различни начини, но най-често има три основни методи. Първият се нарича "роден" (или изцяло) за виртуализация. В този аспект, хипервайзор изпълнява основните елементи на изолация, отделяне на физически хардуер от виртуалната операционна система. Този подход е демонстрирана за първи път през 1966 г. от операционната система виртуална машина / виртуална памет IBM® CP - 40, а сега по същия метод, използван в VMware ESX Server.

Друг популярен метод за виртуализация нарича paravirtualization. В paravirtualization, програмата за управление изпълнява хипервайзорна един интерфейс за приложни програми (API), който се използва от виртуалната операционна система. Xen paravirtualization използва и Linux Kernel-базирана виртуална машина (KVM).

Третият полезна техника се нарича емулация. Емулация, както подсказва името, виртуализира платформа за гости чрез симулиране на пълна хардуерна среда. Съревнование се извършва в различни форми, дори в рамките на едно и също приложение. Примери за виртуализиране чрез емулиране -Е QEMU и Bochs.

Архитектура QEMU

Помислете как QEMU постига емулация. Този раздел описва два режима на работа QEMU, както и някои интересни аспекти на динамичен преводача QEMU.

Основни операции QEMU

QEMU поддържа два режима на работа: емулация потребителски режим [Потребителски режим] и системен режим [System режим]. Режимът на потребителя позволява процес емулация създаден на един процесор, да работят в различен (динамична транслация на изпълняваните инструкции за процесора домакин и конвертиране на Linux система разговор). Система за емулация позволява емулация на цялата система, включително процесор и различни периферни устройства.

Когато кодът за x86 емулация на системата домакин с x86 архитектура, можете да постигнете изпълнение близо до дома, с помощта на т.нар QEMU газта. Тя ви позволява да извършвате емулирани код директно на хост процесора (на Linux чрез модули за ядрото).

Но това, което прави QEMU интересно от техническа гледна точка, е неговото бързо и компактно динамичен преводач [динамичен преводач]. Динамичният преводача позволява трансфер по време на изпълнение на инструкциите за мишена (гост) в инструкциите на процесора на процесор гостоприемници за емулация. Това може да стане чрез груба сила (просто замяна на една инструкция на процесора от други), но това не винаги е лесно да се направи, а в някои случаи една инструкция може да изисква няколко инструкции или промени в техния последователен ред за архитектурата на излъчване.

QEMU постига динамична транслация на целевите инструкции в микро-операции. Тези микро-операции са елементи от P-код, която е събрана в обекти. След това идва в основната преводача. Тя показва целевите инструкциите за микро операции за динамична транслация. Този подход е не само ефективно, но също така предоставя преносимост.

QEMU динамичен преводач също кешира блокове преведена код, за да сведат до минимум режийни на преводача. Когато първият е намерена цел код блок, тя се прехвърля и се съхранява като преведените блок [преведените блок]. Qemu кеш магазина наскоро преведени блокове в 16MB. QEMU дори може да поддържа себе си промяна на код, като отмени преведени блокове в кеш паметта.

Поддържани периферни устройства

Освен стандартното PC и PC ISA (без PCI шина), QEMU да подражават на хардуерна платформа и други не-PC, като baseplates APM Универсален (използвайки 926E) и на борда на базата на Малта милион инструкции в секунда (MIPS). В момента се работи за изпълнение на подкрепата на редица други платформи, включително G3 на Power Macintosh (Blue White) и Sun 4u.

Изграждане и инсталиране на QEMU

Изграждане и инсталиране на QEMU е толкова прости стандартни инструменти GNU. След като изтеглите и разархивирате разпределението QEMU е необходимо да извършите конфигуриране. направи. и след това да инсталирате (вж. Обява 1).

Обява 1. Изграждане на QEMU емулатор

Този процес създава не само изпълним QEMU изображение за текущата целева архитектура, но и изображенията за други архитектури, включително ARM, MIPS, PowerPC, 68k и SPARC. След това можете да изтеглите Linux ядрото е построен в продължение на различни целеви архитектури.

Ако операционната система домакин на гости и са насочени към една единствена архитектура, е възможно да се увеличи скоростта, за да затворите в дома, с помощта на газта Qemu (KQEMU). KQEMU - шофьор (ядрото модул за Linux), което позволява на потребителски код и кода на ядрото да се изпълни директно на хост процесора. Изграждане на QEMU ускорител точно както самата QEMU (вж. Обява 2).

Обява 2. Изграждане на QEMU ускорител

KQEMU може да се компилира и инсталира на различни операционни системи, включително Microsoft® Windows®, FreeBSD® и Linux. След изграждането на QEMU ускорител, го инсталирайте на Linux, като се използва следната команда:

Използването на QEMU

Сега нека да разгледаме с помощта на QEMU да виртуализира друга машина с типичен настолен компютър, работещ с GNU / Linux. Да копираш друга машина е подобен на подготовка за работа с просто си купих нов компютър. Първата стъпка - е да инсталирате операционната система. Нов компютър, разбира се, трябва да има място, където да инсталирате операционната система, така че имате нужда от твърд диск.

За quemu-IMG трябва да определи операцията (създаване да се създаде нов имидж на диска), формата (qcow за формат на QEMU изображение), както и размерът на името на дисково изображение. Следващият пример емулира машина за малка дистрибуция на Linux, предназначена за използване в Flash. Така че, да създадете диск с изображения с до 128 MB:

Необходимо е да се помни, че ако имате намерение да инсталирате общо предназначение операционна система като Windows, Linux или FreeBSD, имате нужда от много по-голям диск. В резултат на операцията, осъществявана - disk.img файла - съдържа пример за подражание диск от 128 MB.

Сега, че твърдият диск е създаден, можете да инсталирате нова операционна система на него. За да се докаже това, аз използвам една малка Linux дистрибуция, наречена cfLinux, предназначени за използване като малки вградени Linux-базирани системи в устройства като шлюзове, безжични точки за достъп, защитни стени и рутери. Това разпределение може да бъде изтеглен в ISO формат, използвайки Wget:

ISO образ са широко използвани формат CD-ROM (известен още като ISO 9660 файлова система).

Сега ние сме пример за подражание диск (disk.img) и CD-ROM, от които можете да инсталирате операционната система. Следващата стъпка е инсталирането на системата на твърдия диск. Това се прави много просто чрез QEMU:

При използване на QEMU дисково изображение, дадено от опцията HDA. и CD-ROM (файла, където се намира снимката) - с опцията за CDROM. опция за зареждане позволява да се стартира от CD-ROM. Аргумент г определя обувка от CD-ROM, а - дискета, в указва да зареди от твърдия диск (по подразбиране), и п - зареждане от мрежата. Ако командата е вярна, тогава нов прозорец ще се появи с QEMU подражава машина (вж. Фигура 2).

Фигура 2. Подготовка за инсталиране cfLinux на емулирания диск с QEMU

Емулация системи с QEMU

Следвайте инструкциите, за да инсталирате от CD-ROM, лесен за да завършите инсталацията с ISO-образ на пример за подражание твърдия диск. Монтажът изисква рестартиране. В този момент, можете да завършите емулация (Ctrl-C в прозореца на QEMU). Вече можете да изтеглите новоинсталираните операционната система, като се използва следната команда:

Тази команда емулира на стандартен персонален компютър (опцията по подразбиране) на твърдия диск представлява от disk.img на графичен файл. Linux изображение, зареждане от твърдия диск пример за подражание, ще даде резултат на прозореца на QEMU, показан на фигура 3.

Фигура 3. Зарежда прясно cfLinux с подражава твърдия диск

Емулация системи с QEMU

Както можете да видите, че всичко е много просто. В този случай, една и съща последователност може да се използва, за да се инсталира и стартира всяко различни операционни системи (Linux дистрибуции, Windows и други).

други емулатори

Въпреки QEMU - фантастичен емулация среда, а други са на стойност проучване. Вино - с отворен код за изпълнението на API Windows - ви позволява да стартирате приложения за Windows, без операционна система Windows. Но тъй като акроним на виното обяснява, вино - това не е емулатор (вино - вино не е емулатор). Вместо това, Вино изпълнява набор от API, което позволява на приложенията да работят x86 архитектура. Ето защо, приложения, които работят във виното, се чувстват добре.

Работата освен

Използването на QEMU като PC емулатор ви позволява да експериментирате с различни операционни системи без да е необходимо да има резервна машина. Например, с ReactOS - Windows XP, съвместим с отворен код операционна система (чиито емулация е показан на фигура 4).

ReactOS цели за бинарна съвместимост с Windows XP, така че могат да работят ReactOS приложения за Windows XP. Секцията ресурси и връзки към ресурси, съдържащи информация за текущото съвместимостта приложение.

Фигура 4. Да копираш стандартен компютър с ReactOS

Емулация системи с QEMU

QEMU изображение с ReactOS и много други операционни системи може да се намери най-Free операционни системи зоопарк (за повече информация вижте ресурси). Тези операционни системи са представени под формата на живо CD изображения, дискети или CD-та (при qcow формат). QEMU - е чудесен начин да се опита нови операционни системи, без да губите време, за да ги инсталирате.

Вземете продукти и технологии