Показаны сообщения с ярлыком эмуляция. Показать все сообщения
Показаны сообщения с ярлыком эмуляция. Показать все сообщения

Конвертировать img-образ QEMU в VirtualBox без vditool



8 коммент.
Для запуска приложений Windows, аналогов которым в Linux пока не видно, а особенно программ, работающих с сетью или требующих сетевого подключения, в последнее время я всё чаще использую VirtualBox. В отличие от QEMU, VirtualBox изначально сильно заточен именно под Windows (Guest addons, разные варианты ACPI, seamless-перехват мыши). Но у меня есть уже установленные варианты Windows в QEMU и их хотелось бы использовать в VirtualBox. Ниже небольшой пост о конвертации QEMU-образов в образы VirtualBox.


Конвертирование образов QEMU в VirtualBox, и, может быть, обратно Собственно, это не сложно, но задачу в первый раз при поиске осложняет масса устаревшего мусора в Сети, который рекомендует пользоваться vditool, однако насколько мне известно эту утилиту больше не скачать. А на самом деле, всё, что нужно для преобразования, уже находится в комплекте VirtualBox.

Итак, чтобы преобразовать образ диска QEMU под названием test.img в образ диска VirtualBox а-ля test.vdi, делаем вот что:
qemu-img convert -O raw test.img test.raw

VBoxManage convertdd test.raw test.vdi
как вариант: VBoxManage convertfromraw -format VDI test.raw test.vdi

VBoxManage modifyvdi /full/path/to/test.vdi compact


Здесь есть один момент, который важной упомянуть: обратная конвертация из VirtualBox в QEMU затруднена. Это означает, что если вы не найдёте vditool для Linux, обратно преобразовать данные не выйдет. Но если вам всё-таки улыбнётся удача, то последовательность действий такова:

vditool COPYDD vbox-image.vdi raw-image.img

qemu-img convert -f raw raw-image.img -O qcow2 qemu-image.qcow

То есть сначала перегоняем данные из vdi-формата в img, при этом размер файла будет 8Гб независимо от того, насколько заполнен диск. Далее уже стандартной утилитой в QEMU сжимаем образ и получаем на выходе QEMUшный диск, готовый для запуска.

Благодаря комментаторам, выяснилась возможность конвертировать образ Virtualbox в образ QEMU

VBoxManage internalcommands converttoraw src.vdi dst.raw

И ещё. В отличие от образов QEMU, примонтировать которые не составляет проблемы, образы VirtualBox примонтировать вовсе не так просто. Так что если вы хотите иметь постоянный (и простой) доступ к файлам гостевой ОС, имеет смысл использовать QEMU. Если же вам нужно запустить Windows в Linux без особых сложностей, VirtualBox всё-таки лучше.


Примечание
В последних версиях QEMU (по крайней мере, 0.12.3) имеется поддержка vdi формата VirtualBox 1.1. Для более ранних версий патч можно найти на сайте QEMU Forum в разделе Patches Repository.
Спасибо анонимному комментатору за ценные сведения!

Ссылки
Краткое изложение можно почерпнуть на опеннете, а очень ценный пост по обратной конвертации из Virtualbox в QEMU можно найти здесь.
Читать далее

Эмулятор QEMU и работа с USB в гостевой системе



11 коммент.
Ситуация: в эмуляторе QEMU требуется работать с USB-устройствами в гостевой (эмулируемой) машине; при этом USB-устройства подключены к хост-машине (т.е. к реальному компьютеру).
Решение: немного чёрной магии, параметр -usb и lsusb спасут отца русской демократии.

Рабочий пример: Windows XP, которая установлена в эмуляторе QEMU, который установлен в Debian GNU/Linux Etch. Для примера затащим в QEMU USB-флешку и будем работать с ней в Windows, которая в QEMU, который в Debian.

Запускаем виртуальную машину QEMU, например, с такими параметрами:
qemu -usb -m 200 -hda mustdiexp.img -boot c -localtime
красным помечен обязательный параметр -usb, т.е. нужно явно указать QEMU, что мы хотим использовать USB. Далее включаем флешку, и в консоли узнаём, куда подключилась наша флешка. В этом нам поможет сначала dmesg, а потом lsusb. При этом dmesg нам скажет адрес устройства, а lsusb - его точный идентификатор.

Как узнать адрес устройства в Linux? Легко - спросим dmesg, и он ответит:

usb 1-6: new high speed USB device using ehci_hcd and address 15
usb 1-6: configuration #1 chosen from 1 choice
scsi9 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 15
usb-storage: waiting for device to settle before scanning
scsi 9:0:0:0: Direct-Access JetFlash TS4GJFV35 8.07 PQ: 0 ANSI: 2
sd 9:0:0:0: [sde] 7987200 512-byte hardware sectors (4089 MB)
sd 9:0:0:0: [sde] Write Protect is off
sd 9:0:0:0: [sde] Mode Sense: 03 00 00 00
sd 9:0:0:0: [sde] Assuming drive cache: write through
sd 9:0:0:0: [sde] 7987200 512-byte hardware sectors (4089 MB)
sd 9:0:0:0: [sde] Write Protect is off
sd 9:0:0:0: [sde] Mode Sense: 03 00 00 00
sd 9:0:0:0: [sde] Assuming drive cache: write through
sde: sde1
sd 9:0:0:0: [sde] Attached SCSI removable disk
sd 9:0:0:0: Attached scsi generic sg4 type 0
usb-storage: device scan complete
Красным я подсветил искомое - адрес нашего устройства 15. Теперь интересуемся у lsusb насчёт идентификатора устройства, и он нам всё выдаст:
penta4@penta4rce:~$ lsusb
Bus 005 Device 005: ID 046d:c03e Logitech, Inc. Premium Optical Wheel Mouse
Bus 005 Device 003: ID 046e:5500 Behavior Tech. Computer Corp.
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 004: ID 03f0:1204 Hewlett-Packard DeskJet 930c
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 015: ID 058f:6387 Alcor Micro Corp.
Bus 001 Device 014: ID 04fc:0c15 Sunplus Technology Co., Ltd
Bus 001 Device 001: ID 0000:0000
Готово: идентификатор нашего устройства 15 есть 058f:6387 С этими данными идём в эмулятор QEMU, заходим в гостевую систему, нажимаем CTRL+ALT+2 и попадаем в консольный режим QEMU. Там мы пишем:
usb_add host:058f:6387
Если QEMU пишет, что не может добавить ваше устройство, а вы уверены, что всё сделано правильно - проверьте права на файл-устройство, оно должно быть с полными (777) правами. В консоли, откуда запущен QEMU, увидите:
/proc/bus/usb/001/015: Permission denied
Стало быть, идём и делаем так:
penta4rce:/proc/bus/usb# chmod -R 777 001/
Не очень изящно, зато работает :-) Можно ещё править udev.rules, но мне под вечер с этим было откровенно лень заниматься.

После этого Windows (или что вы там эмулируете) радостно найдёт ваше устройство (в данном случае флешку) и будет злостно грузить процессор в мучительных раздумьях "что же это было!?" В случае с Windows XP виртуальным диском оно шуршать будет порядочно - по всей видимости, для этого чуда редмонтовской мысли это нормально. После этого работаете с устройством как обычно.

Ссылки
Пост был написан, когда мне пришлось снова вспоминать, как я врубал USB в годы моей ударной молодости :-) Дабы не гуглить, вот несколько интересных ссылок по теме "USB в QEMU", особенно на замечательную Книгу Слаки (Slackbook).
Читать далее

Обзор средств эмуляции: эмулятор Linux в Windows и наоборот



38 коммент.
Проблема: Как известно, не все программы под windows имеют свои аналоги в Linux, и часто эти программы бывают очень нужны. Требуется запуск прог Windows в Linux.
Решение: Есть класс программ, позволяющих запускать программы других операционных систем (не обязательно Windows) в Linux и других UNIX-системах. Это эмуляторы - такие программы, которые позволяют, грубо говоря, эмулировать Linux в Windows или наоборот. Среди них следует выделить наиболее часто применяемые.


1. WINE

opensource, GPL.
Wine Is Not a (CPU) Emulator
это прослойка, которая транслирует Win32API в POSIX API, то есть свободная реализация Windows API, которая позволяет запускать программы Windows, переводя вызовы программы под Windows в вызовы Linux. Это позволяет выполнять программы почти на полной скорости. Однако из-за того, что продукты Microsoft являются закрытыми, невозможно точно воспроизвести структуру их API, что приводит к разного рода сбоям и странностям при выполнении Windows-программ в WINE. Положительным моментом является то, что вам не нужно ставить Windows - только WINE и программу.
Плюсы: достаточно быстрая работа на реальных ресурсах машины, работа с реальными каталогами и файлами, нет необходимости в установке Windows.
Минусы: не все приложения поддерживаются и работают не всегда стабильно.
Ссылки:
http://www.winehq.org
http://gazette.linux.ru.net/team/a_kuprin.html
http://linuxshop.ru/linuxbegin/print633.html

1.1 CodeWavers CrossOver Office
closedsource.
Основанный на WINE коммерческий продукт, отличающийся лучшим исполнением особенно важных Windows приложений, таких как Adobe Photoshop, Microsoft Office, Autodesk AutoCAD и некоторых других. В общем, более стабильная, хотя и не самая свежая версия WINE, с графическим установщиком, который предоставит вам удобный и простой интерфейс для настройки.
Ссылки: http://www.codeweavers.com

1.2 TransGaming Technologies WineX / Cedega
proprietary, но есть возможность скачать исходники.
Так же основанный на WINE, но имеющий одно очень существенное, особенно для геймеров, усовершенствование - он содержит в себе улучшенную, вдобавок, полную (в плане совместимости) поддержку интерфейса Direct3D.
Ссылки: http://www.transgaming.com



2. DOSEMU
opensource, GPL.
dosemu - эмулятор DOS для запуска старых приложений, часто используется для бухгалтерских и прочих весьма специфичных нужд. Многие программы под DOS использовали его "особенности" и баги для работы, которых в dosemu может не оказаться.
Плюсы: быстрый запуск и работа устаревших, но нужных программ DOS (бухгалтерских, например), не требователен к ресурсам.
Минусы: нетривиальная установка, не все программы будут работать.
Ссылки: www.dosemu.org




3. Win4Lin
closedsource.
В файл, который для
Windows будет диском, ставится полноценная копия Windows и потом туда ставятся нужные приложения. Старая версия Win4Lin позволяла запускать Windows 95 с очень приличной скоростью и работать с приложениями для этих систем в виндовс, однако для этого требуются патчи на ядро. Патчи есть далеко не для всех версий ядер, и для определённых версий Win4Lin патчи были свои - нужно было угадывать.
Win4lin PRO не требует патча, позволяет запускать
Windows 2000/XP, но работает медленно и при этом подгружает служебные программы для "ускорения". Есть подозрения, что в этом эмуляторе используются наработки автора QEMU и особенно его ускоряющего модуля. Особенностью этого эмулятора является то, что есть возможность работать с реальными каталогами Linux.
Плюсы: возможность запуска
Windows.
Минусы: проблемы с накладыванием патчей на ядро (закрытых и возможно небезопасных), либо очень низкая скорость запуска
Windows, необходимость устанавливать Windows, невозможность эмуляции других ОС.
Ссылки:
http://www.win4lin.com/
http://www.netraverse.com/
http://sys.net.ru/docs/win4lin/Win4Lin6/
http://sys.net.ru/docs/win4lin/win4lin2debian



4. Виртуальные машины
Имитируют весь компьютер целиком вместе с жёстким диском (в виде файла), CD-ROM и USB (всё это связано с железом настоящего компьютера). Установленная туда ОС будет работать с реальным железом только через эмулированное. Виртуальные машины это как раз то, что обычно называют "эмулятор Linux" или "Эмулятор Windows" - с помощью виртуальных машин вы действительно сможете эмулировать Linux или Windows.

4.1 QEMU
opensource, GPL.
QEMU - виртуальная машина. В QEMU можно поставить почти любую ОС - любой
Windows (начиная с Windows95 до WindowsXP включительно), любой дистрибутив Linux или FreeBSD, BeOS/Haiku, ReactOS, Syllable и проч. Для быстрой работы нужен kqemu - ускоряющий модуль (так же под GPL), который имеется на сайте автора. Для этого потребуются заголовки ядра - в основном, чтобы собрать ускоряющий модуль kqemu, с которым замедление работы гостевой ОС составит до 1.5 раза (вместо 5-10 раз без модуля). Этот эмулятор использует наработки другого проекта, BOCHS. Так же позволяет создавать виртуальные машины собственной утилитой qemu-img. Работа с эмулятором (вызов, задание параметров) происходят в консольном режиме, но есть и графические оболочки.
Плюсы: хорошая скорость работы (с kqemu) гостевой ОС, стабильность, широкие возможности (эмуляция нескольких платформ, одновременный запуск множества систем, точность эмуляции), защищённая среда.
Минусы: несколько меньшая скорость эмуляции, чем VMware, консольный интерфейс (хотя есть графические оболочки типа Qemulator).
Ссылки:
форум о QEMU
www.qemu.org
Установка в Дебиан (на английском)


4.2 BOCHS
opensource, GPL.
BOCHS - виртуальная машина, точный эмулятор x86 платформы. Имеет свой BIOS, VGABIOS и прочее, что и используется QEMU. Очень точный, но очень медленный, применяется в основном разработчиками, где нужна уверенность, что это сбой в программе, а не эмулятора.
Плюсы: полная точная эмуляция x86, возможность установки в него практически любой ОС, лёгкая и простая установка в Debian.
Минусы: очень низкая скорость работы гостевой ОС.
Ссылки:
www.bochs.org


4.3 VMWare
closedsource.
VMWare - как и QEMU, виртуальная машина. Обладает более высокой скоростью эмуляции, поддерживает большее число ОС. Кроме того, установка VMWare на Дебиан нетривиальна, хотя имеются deb-пакеты в неофициальных репозиториях; требуется компиляция закрытых ускоряющих модулей с заголовками ядра. Есть сообщения, что у VMWare имеются проблемы с полноэкранным режимом. По требовательности к ресурсам мало отличается от QEMU, потребляя много оперативной памяти и процессорного времени. Возможности те же: безопасная среда для эмуляции гостевых ОС. Плюс графический интерфейс для создания виртуальных машин.
Плюсы: более быстрая эмуляция гостевых ОС, есть графический интерфейс для создания виртуальных машин.
Минусы: закрытые проприетарные модули потенциально могут вывести хост-ОС из стабильного состояния.
Ссылки:
http://www.vmware.com/
http://www.nixp.ru/news/6914
http://software.newsforge.com/print.pl?sid=05/04/27/186203
VmWare in Ubuntu


4.4 VirtualBox
opensource, GPL.
VirtualBox - так же виртуальная машина x86, основана на наработках QEMU. Отличается простым графическим интерфейсом и весьма высокой скоростью эмуляции (часто быстрее QEMU) и поддержкой периферии (USB, сеть, FireWire). Точность эмуляции ниже, чем у QEMU (невозможно запускать многие ОС, например BeOS/Haiku, MenuetOS, Syllable).
Есть guest additions, которые позволяют очень нужные вещи, а именно копи-паст с хост-системы в гостевую (clipboard sharing) и незаметный захват мыши.
Плюсы: простая установка и настройка, возможно расширение функционала плагинами, широкая поддержка периферии, в ряде случаев быстрее QEMU.
Минусы: при интенсивном использовании графический интерфейс мешает, точность эмуляции менее распространённых ОС не высока.
Ссылки:
http://www.virtualbox.org/
Работа и впечатления


4.4 KVM - Kernel-based Virtual Machine
opensource, GPL.
KVM - это решение полной виртуализации, хотя сам по себе это модуль ядра Linux. Для работы требуется модифицированная версия QEMU. Для работы требуется поддержка виртуализации процессором.
Плюсы: модуль ускорителя в ядре, простая установка.
Минусы: требуется поддержка виртуализации процессором.
Ссылки:
http://kvm.qumranet.com/kvmwiki
http://inf.by/linux/211/


5. Гипервизоры
opensource, GPL.
XEN - гипервизор, позволяет запускать гостевую ОС как процесс ядра в хост-системе. Отличается очень низкими накладными расходами (от 2 до 8% потери производительности гостевой ОС), защитой хост-ОС, а так же использованием технологий виртуализации современных процессоров. Однако для того, чтобы использовать его возможности, требуется патч на ядро не только хост-ОС, но и гостевой ОС, что делает запуск проприетарных систем внутри очень непростым делом.
Плюсы: потенциально наибольшая достижимая скорость работы гостевой ОС, ниже требования к ресурсам хост-ОС.
Минусы: весьма нетривиальная установка - требуется патч на ядро гостевой ОС.
Ссылки:
http://www.cl.cam.ac.uk/Research/SRG/netos/xen/
http://wiki.xensource.com/xenwiki/XenFaq
http://www.howtoforge.com/book/print/1169
http://xgu.ru/xen/manual/


6. Виртуализация на уровне операционной системы
opensource, GPL.
Open VZ это технология «лёгкой» виртуализации, позволяющая на одной аппаратной системе держать несколько различных версий Linux с одним ядром (поддерживающим ovz и содержащимся, как правило, на небольшом корне с ограниченным доступом по ssh и без других сервисов). В отличие от «тяжёлых» вариантов вроде Xen, Qemu или VMware, накладные расходы обычно составляют единицы процентов.
Ссылки:
Краткий доклад одного из авторов OpenVZ.
Читать далее

Эмулятор VirtualBox: работа и впечатления



27 коммент.
Для того, чтобы запускать другие операционные системы внутри уже установленной, есть множество программ-эмуляторов: QEMU, VMware, WINE и другие. Но вот появился VirtualBox, заманивающий красочным графическим интерфейсом и высокой скоростью эмуляции. Скачав версию эмулятора VirtualBox для своей операционной системы отсюда, можно совершенно бесплатно (для персонального использования) посмотреть на это чудо.


Установка
Всё описанное далее разворачивалось на Debian GNU/Linux. Пакет VirtualBox_1.3.6_Debian_sarge_i386.deb при установке потянул за собой libxalan18 и libxerces25 суммарным объёмом на 7 Мб. К тому же потребовал заголовков ядра - при установке собирается ускоряющий модуль.


Установка прошла гладко, при этом была создана новая группа vboxusers.
Creating group 'vboxusers'. VM users must be member of that group!
Собственно, после этого следует добавить своего пользователя в эту группу:
sudo gpasswd -a beast vboxusers
Перелогиниваемся в систему - вот и всё. Теперь, если посмотреть вывод lsmod, можно увидеть там модуль нового эмулятора.
vboxdrv 28420 0
Кстати, несколько забегая вперёд, если у вас при этом загружен kqemu, то ничего страшного не произойдёт: оба эмулятора могут работать вместе одновременно, в любых режимах и с любыми ОС внутри. Соседствуют мирно, работают без нареканий на общее благо простого линуксоида.


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


VirtualBox в работе
Довольно умных фраз о тонкостях виртуализации: самое время запалить что-нибудь интересное внутри этого ящика. Запускаем его, набирая в консольке
VirtualBox
и перед нами должно появиться графическое окошко. Интерфейс его очевиден - кнопки с простыми названиями типа New и Start в пояснениях не нуждаются. Поэтому сходу создаём новую виртуальную машину:



Программа будет выдавать окошки, в которых графическим способом придётся задавать параметры будущей виртуальной машины. Сначала это развлекает, но потом, кстати, начинает утомлять: если мне надо быстренько запалить Кноппикс, приходится тыкать по всем кнопкам сначала - в QEMU и bash_history всё куда быстрее...
Одна вещь в VirtualBox радует: это динамически задаваемый размер виртуального жёсткого диска. Задаём начальный размер, и он будет увеличиваться по мере надобности.


Все настройки сделаны, теперь жмём Start и пробуем установить внутри, например, свой любимый дистрибутив.



Особенности работы с VirtualBox
Тем, кто долго работал с QEMU, многое в VirtualBox будет понятно, но есть и существенные отличия. Если ткнуть в "экран" виртуальной машины, клавиатура и мышь подключаются к гостевой ОС. При этом для выхода из режима гостевой ОС нужно нажать на правый CTRL, а не на ALT+SHIFT по привычке. Кроме того, для перехода на другую раскладку в гостевой ОС нажимаем комбинацию клавиш хост-системы. Мелочь, а неприятно оказаться отрезанным от своей родной системы - и справку не откроешь...

Кроме того, есть глюки с полноэкранным режимом: однажды не удалось переключиться обратно после того, как в полноэкранном режиме я попытался сделать скриншота в гимпе из хост-системы. В QEMU это проходит без вопросов, а тут не смог переключиться обратно - пришлось сбрасывать иксы.
В полноэкранном режиме VirtualBox не переключает экран в более низкое разрение, как при использовании SDL, а просто выводит на чёрном поле экран гостевой ОС, как mplayer с видеовыводом x11. При этом графический интерфейс гостьОС начинает ощутимо тормозить.
Есть у VirtualBox и консольный интерфейс, использующий SDL - как QEMU. Но синтаксис команд, несколько скудно описанный в справочнике, довольно замороченный. И быструю справку по нему не получить: только в графическом режиме.

Загрузка и выгрузка ядерного модуля эмулятора
Если VirtualBox используется на машине, работающей в режиме 24/7, то наличие в памяти ядерного модуля может быть нежелательным по разным причинам. Если выгрузка проблем не представляет:
sudo rmmod vboxdrv
то загрузка модуля имеет особенности.
Для загрузки и приведения в рабочее состояние модуля для VirtualBox нужно не только загрузить его, но и дать полные права файлу-устройству:
sudo modprobe vboxdrv
sudo chmod 777 /dev/vboxdrv
иначе будете получать при запуске эмулятора следующую ошибку:
/dev/vboxdrv not writable for some reason. If you recently added the current
user to the vboxusers group then you have to logout and re-login to take the
change effect.
После этого ядерный модуль заработает в штатном режиме. Опять-таки, в отличие от QEMU, нельзя запустить VirtualBox без ускорителя.


Скорость эмуляции VirtualBox
Эмулятор очень шустрый, особенно при операциях с графикой: графический интерфейс гостьОС совершенно не тормозит в оконном режиме. Скорость работы как с Linux (на примере Кноппикса), так и со Windows XP примерно такая же, как и в QEMU. Только графика отзывчивее. Кроме того, при работе эмулятора происходит постоянная загрузка процессора под 100% - новый QEMU в этом плане куда экономнее.


Точность эмуляции VirtualBox
Скорость - это хорошо, но хотелось бы ещё и точности эмуляции. Под этим подразумевается сходное поведение гостьОС внутри эмулятора и на реальном железе.
Linux (Кноппикс и Дебиан) и BSD-системы (Frenzy) работали нормально, быстро и без глюков. C Windows нужно быть готовым к нештатным ситуациям: например, отмонтирование и выброс CD-ROM в эмуляторе приводит к мгновенной перезагрузке Windows внутри эмулятора.
Попытка запуска внутри VirtualBox BeOS и Haiku приводит к одному результату: эти ОС вываливаются в kernel panic. Хотя Haiku в QEMU идёт без проблем.


Выводы
Некоторое время использования VirtualBox позволяет поделиться следующими впечатлениями.

Что понравилось
  • удобен для новичков и всех, кто не часто пользуется виртуальными машинами;
  • хорошая поддержка USB;
  • задел на будущее - есть поддержка аппаратной виртуализации;
  • отличная работа с графикой: графические интерфейсы гостьОС не тормозят, работать можно с комфортом.

Что НЕ понравилось
  • глюки полноэкранного режима - определённо следует дорабатывать;
  • консольный режим не проработан: нельзя получить быструю справку по ключам эмулятора, нельзя указать много параметров (как в QEMU);
  • не может работать без модуля виртуализации - не всегда хочется, чтобы в памяти болтался сомнительного содержания ядерный модуль;
  • документация - только в хелпе графического интерфейса, никаких манов;
  • довольно посредственная точность эмуляции, особенно экзотических и альтернативных ОС.
В целом, можно сказать: хороший и быстрый эмулятор для начинающих виртуализаторов без особых претензий и не для частого использования.
Читать далее

Тонкости эмулятора QEMU и хитрости ускорителя kqemu



4 коммент.
Некоторое время назад я уже писал о найденных финтах QEMU - но со времён версии 0.7.2 эти финты несколько "заржавели", и к ним добавились новые. Так, в версиях QEMU 0.8 и далее есть поддержка USB и многопроцессорности, а ещё добавилось возможностей у kqemu. Об этом я расскажу ниже в посте.

Ускоритель kqemu
У него прибавилось возможностей, которые позволяют ещё более ускорить работу эмулируемой ОС. Основная изюминка нового kqemu - возможность полной виртуализации: не только пользовательского кода ОС, но и кода ядра. Это существенно ускоряет дисковые операции и отрисовку интерфейса.

Полная виртуализация
Для этого нужно добавить ключ -kernel-kqemu в вызов эмулятора. Сие существенно ускоряет эмуляцию некоторых ОС. Фабрис Беллард для простых смертных в общих чертах объясняет тут, что ускорение от этого ключа будет для гостевых ОС на базе Linux 2.4.* максимальным, меньше для Linux 2.6.*, а так же для Зла2000 и ЗлаХП (но это нельзя использовать при инсталляции).

Здесь углублённая техническая документация по ускорителю kqemu - так как я мало что из неё понял (ибо не программист), просто дам ссылку.

Поэтому при вызове эмулятора:

'-no-kqemu' пишем, если эмулируем экзотические ОС (типа ReactOS, Haiku, MenuetOS и тому подобное). Это позволит нормально запуститься гостевой ОС и работать устойчиво. Но это существенно снижает скорость работы гостевой ОС и повышает нагрузку на вентилятор процессора :-)

'-kernel-kqemu'
- пишем, чтобы включить полную виртуализацию для Linux 2.4, Linux 2.6, Зла2000 и ЗлаХП. Это приводит к заметному ускорению эмуляции (1.5-2 раза) гостевых ОС без потери точности эмуляции. При этом, если запросить у эмулятора (CTRL+ALT+ цифра 2) info kqemu, он должен написать kqemu support: enabled for user and kernel code

- если не писать ничего, то только пользовательский код выполняется на процессоре хост-системы, а код ядра динамически транслируется. При этом (CTRL+ALT+ цифра 2) info kqemu будет писать kqemu support: enabled for user code

Поддержка полной виртуализации есть для 32-разрядных систем - для 64-разрядных только в экспериментальной стадии. В случае Зла2000/Хп нельзя использовать полную виртуализацию при установке!

Полная виртуализация не может работать со всеми ОС потому, что она делает предположения об инструкциях, которые гостевые ОС используют. Однако следует отметить, что полная виртуализация (как, впрочем, и обычная) изначально защищённая: весь код выполняется в пространстве пользователя и он не сможет повредить хост-ОС.

Распараллеливание эмуляции
Для этого существует ключ '-smp n', где n - число процессоров (по умолчанию 1). Странно, но у меня при тестировании это привело не к ускорению, а к замедлению эмуляции: тот же Кноппикс опознавал систему как двухпроцессорную, но при этом работал медленнее, чем при однопроцессорном режиме.

Заключение
Это, конечно же, не все возможности QEMU и kqemu - в этом посте упор делается на описание возможностей kqemu по части полной виртуализации и ускорения тем самым эмулируемых ОС. При этом использовалась информация отсюда хотя и на английском.
Читать далее

Изучение Линукса: с чего начать изучение Linux



24 коммент.
Новизна, безусловной, дело привлекательное, и на форумах всё чаще стали появляться вопросы о том, с чего начать изучение Linux: какие команды Linux учить, что делать с консолью Linux, как собрать Linux и тому подобное. Потому, что в Ubuntu Linux или SuSE всё поднимается на раз, автоматом и это скучно.

Ну да, говорили, что будет сложно. UNIX, консоль, команды... а тут - всё работает, автоматом подключается и монтируется. Не глючит и не падает. Даже вирусов под Linux нет. Что ж это за Линукс, где негде развернуться?


Изучение Линукса обычно начинаются с:
- желания сразу собрать ядро Linux и заоптимизировать его по самое не могу;
- желание вводить в консоли Линукса команды, редактировать конфигурационные файлы, снести графическую оболочку;
- желание самому собрать
Linux с нуля...

Это, конечно, хорошо, но зачастую эксперименты начинаются на своей родной и единственной подключённой к интернету системе. В случае чего (а опыт, как известно, растёт пропорционально выведенному из строя оборудованию) такой любознательный пользователь Linux оказывается один на один с незнакомой системой, без данных и возможности задать вопрос.
Поэтому: все эксперименты проводите только в эмуляторе! Чтобы не оплакивать безвременно утраченные данные, настройки, нервы и время.

Как развеять тоску графического великолепия
Если вдруг кому в Ubuntu или Suse Linux скучно и тоскливо, знайте: проблем всегда можно найти на свою голову. Хотите трудностей? Их есть у нас! Для этого:
  1. Подымаем эмулятор, например QEMU или, что проще, VirtualBox. Об этом сказано здесь, тут и в Гугле. Заодно виртуозно овладеете поиском.
  2. Ставим в эмуляторе что-нибудь покруче, например Debian (варианты: Slackware, Gentoo, Arch и далее по списку вплоть до LFS). Тем более, что тут описаны подводные камни (на всякий случай) установки Debian.
  3. После каждой успешной операции делаем резервную копию файла-образа, и прибавляем к нему какой-нибудь осмысленный ярлык: например, debianCleanWithX.img - чистая установка Дебиана, уже поставлены иксы.
  4. Далее пытаетесь добиться примерно того, что Убунта и Сюсе делают автоматом: поставьте и настройте иксы, графическую оболочку (можно поставить разные, посмотреть и поиграться). Это будет не легко, но займёт вас на какое-то время :-)
  5. Хорошо отключить всякие automount и прочую пиротехнику: монтируем руками, читаем /etc/fstab и увлекательные страницы man mount.
  6. Логи - наш рулевой: заделываемся рутом и смело открываем файлы в каталоге /var/log - там узнаете кучу подробностей о работе Линукс и о том, что происходило при загрузке.
  7. Для навигации по файлам в консоли удобно использовать MC, заодно пооткрывайте разные файлы в каталогах - узнаете много интересного.
  8. Кто-то рвался в бой и собирался компилировать ядра? Отлично! Вот вам испытательный полигон: затаскиваете внутрь эмулятора исходники ядра (или ставите сырцы ядра из пакетов), и, вооружившись этим, смело набиваете шишки пытаетесь сделать работоспособное ядро (то есть расставляете полторы тысячи флажков по местам). Ваши знания об аппаратной части компьютеров в процессе этого сильно расширятся. Под эмулятором при конфигурировании ядра можно смело врубать флажки с подписью EXPERIMENTAL и лазать по разделу Kernel Hacking. Заодно посмотрите, как отразится на стабильности собранного ядра разные флажки.
Эмулятор - это несколько облегчённый вариант, потому что там имитируется самое простое оборудование, которое только есть. Так же можно поколупать эмулятор и вывести в сеть эмулируемую ОС. Кроме знаний о ядре, получите знания о работе сетей в процессе настройки. В общем, духовно обогатитесь дальше некуда.


Там же, в эмуляторе, можно начинать писать скрипты и смотреть, что получается при их выполнении. На реальной машине этим тоже можно заниматься, но желательно не от рута (вообще, отвыкайте сидеть под рутом, даже вырвавшись на эмуляторные просторы).

Можно экспериментировать с разными дистрибутивами, настраивать, пробовать новые программы, запускать LiveCD с Линуксом / BSD, разного рода экзотикой (Haiku, Minix, ReactOS, Syllable) и конечно же под эмулятором пойдут WindowsXP и его вариации на тему. В общем, полёт фантазии по полной программе.


Кому и этого мало - можно попробовать под эмулятором создать свой собственный LiveCD или (если на дворе дождь / снег зарядил на неделю) попробовать собрать LFS. Но это уже ваша песня...
Читать далее

QEMU: установка и первые впечатления от эмулятора QEMU



21 коммент.
Теперь эмулятор QEMU полностью открыт, вместе с ускоряющим модулем, и поэтому устанавливать его стало значительно проще. Думаю, что скоро QEMU с kqemu войдут в состав дистрибутивов и позволит ставить его просто из пакетов, а не собирать из исходников. Так что теперь "эмулятор Linux" установить стало намного проще.

Ускоряющий модуль kqemu так же распространяется под лицензией GNU GPL. Безусловно, это ещё один повод попробовать в действии эмулятор QEMU - о чём далее и рассказывается.

Что нового?
Помимо окончательного "освобождения" ускоряющего модуля эмулятора QEMU, к версии 0.9 накопилось порядочное количество улучшений. Из основного:
  • поддержка многопроцессорности (гипертреадинг простаивать не будет);
  • поддержка USB;
  • увеличение скорости эмуляции kqemu (наш ответ VMware);
  • улучшена поддержка звука;
  • возможность сетевого соединения между несколькими эмулируемыми ОС.
Этого было достаточно, чтобы попробовать поставить QEMU v0.9.0 и kqemu v 1.3.0pre11, о чём говорится далее.

Особенности установки

Собственно, со времён этого поста изменилось не так много. Для работы требуются те же пакеты, однако теперь установка ускоряющего kqemu занимает отдельную операцию.

Подготовка
Качаем последние версии эмулятора и ускорителя отсюда, распаковываем архив с qemu в какой-нибудь временный каталог (например, ~/temp/). Ускоритель распаковываем в подкаталог (в нашем примере ~/temp/kqemu-x.y.z соответственно версии). Заголовки ядра (той же версии ядра, что сейчас работает - это важно!) и нужные пакеты, как и говорилось тут предполагаются установленными.

Если старая версия эмулятора присутствует в системе и использовалась с kqemu, не забудьте выгрузить модуль:
rmmod kqemu
Всё - теперь сборка и установка.


Сборка
Процесс сборки, если всё выполнено правильно, проблем не составляет: выполняем
penta4rce:~/temp/qemu-0.9.0# ./configure
На что должны получить в ответ что-то вроде:

Install prefix /usr/local
BIOS directory /usr/local/share/qemu
binary directory /usr/local/bin
Manual directory /usr/local/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path /root/temp/qemu-0.9.0
C compiler gcc
Host C compiler gcc
make make
install install
host CPU i386
host big endian no
target list i386-linux-user arm-linux-user armeb-linux-user sparc-linux-user ppc-linux-user mips-linux-user mipsel-linux-user m68k-linux-user i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu arm-softmmu
gprof enabled no
profiler no
static build no
SDL support yes
SDL static link no
mingw32 support no
Adlib support no
CoreAudio support no
ALSA support no
DSound support no
FMOD support no
kqemu support yes
Documentation no

Выделенное красным означает, что эмулятор сможет запускать ОС в графическом режиме и с ускорением. После этого выполняем там же
make
и созерцаем длинные сообщения компилятора. У меня (P4-630 3GHz, 2Gb RAM, WD Raptor 36Gb) процесс компиляции занял около 7 минут. После чего пишем:
make install
Это ещё не всё - ускоритель kqemu собирается отдельно. Переходим в подкаталог с kqemu и конфигурируем его:
penta4rce:~/temp/qemu-0.9.0/kqemu-1.3.0pre11# ./configure
На что получаем в ответ что-то вроде:
Source path /root/temp/qemu-0.9.0/kqemu-1.3.0pre11
C compiler gcc
Host C compiler gcc
make make
host CPU i386

kernel sources /lib/modules/2.6.15.7/build
kbuild type 2.6
Далее как обычно:
make
make install
Возможно, потребуется снова поменять права на файл устройства:
chmod 666 /dev/kqemu
Иначе при запуске эмулятора будете получать сообщение о том, что kqemu не активен.

Для обладателей самосборных ядер особое предупреждение: убедитесь, что версия заголовков ядра, которые будет использовать kqemu при компиляции, и версия в данный момент работающего у вас ядра точно совпадают - иначе при попытке загрузить модуль:
# modprobe kqemu
будете получать сообщение об ошибке вида
FATAL: Error inserting kqemu (/lib/modules/2.6.15.7/misc/kqemu.ko): Invalid module format
Загрузить модуль не от той версии, естественно, не выйдет.

Теперь можно посмотреть, загрузился ли модуль:
lsmod | grep kqemu
Должно выдать:
kqemu 124068 0
Если при запуске эмулятор в консоль выдаёт что-то вроде:
$ qemu win.img
Could not configure '/dev/rtc' to have a 1024 Hz timer. This is not a fatal
error, but for better emulation accuracy either use a 2.6 host Linux kernel or
type 'echo 1024 > /proc/sys/dev/rtc/max-user-freq' as root.
то просто набираем
sudo echo 1024 > /proc/sys/dev/rtc/max-user-freq
как и советует эмулятор.
Насколько я понял, для эмулятора (и для Mplayer, кстати, тоже) нужен таймер высокого разрешения - Realtime Clock Timer с нужной частотой. Чтобы он отсчитывал время с большей точностью, соответственно. Это можно выставить при сборке ядра, но можно исправить потом, передав модулю rtc значение частоты через файловую систему переменных proc. Как и пишет программа, это не смертельно, но неприятно.

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

Впечатления
Первое и главное, что сразу бросается в глаза - новая версия быстрее по сравнению с 0.7.2 на глаз вдвое (тесты, которые скоро опубликую, во многом подтверждают это впечатление). Особенно это видно при опознавании устройств различными LiveCD и работе с графическим интерфейсом (притормаживания Windows XP стали существенно меньше). Теперь можно запускать более 4 эмуляторов и выделять много памяти каждой системе. Так что наш "эмулятор Windows" теперь можно использовать для того, чтобы запускать целый зоопарк операционных систем.

Дабы не быть голословным и оживить пост - ниже скриншот с пятью разными ОС, запущенными на моём Debian GNU/Linux.


На этом скриншоте - весь мой зоопарк: OpenBeOS/Haiku (сборка сентябрь 2006, запускается с kqemu нормально), Knoppix Linux v5.1.1, ReactOS v0.3.0 (запущено с kqemu), FreeSBIE v2.0 и Windows XP в эмуляторе QEMU.

Следует отметить, что помимо скорости, повышена и точность эмуляции: так, например, Haiku и ReactOS теперь запускаются и с ускорением kqemu.

В общем, по сравнению с предыдущими версиями:
  • повышена скорость и точность эмуляции;
  • есть поддержка USB, многопроцессорности;
  • сняты ограничения на количество выделяемой памяти одной ОС и количество одновременно запущенных эмуляторов;
  • теперь эмулятор полностью OpenSource! Более того, есть сообщения, что QEMU вместе с kqemu уже появился в экспериментальной ветке Deiban.

Одним словом, замечательный открытый эмулятор QEMU стал ещё лучше, быстрее и точнее.
Читать далее

Эмуляторы для Linux: быстрый обзор



17 коммент.
Задача: требуется запускать windows-приложения или операционную систему Windows 2000, XP и Vista в Linux.
Решение: есть свободные и коммерческие эмуляторы под Linux, и в этом посте рассказывается, какие есть эмуляторы Linux и где можно скачать эмулятор для Linux.
(это достаточно старый обзор - более полная версия здесь)

1. WINE
opensource, GPL.
Wine Is Not a (CPU) Emulator - свободная реализация (обратная разработка) Windows API. Последние версии способны запускать многое из Windows софта, но работает это часто с тормозами, вылетами и прочими прибабахами, так как Microsoft не хочет открывать код своих систем. Подходит для запуска небольших приложений и неплохо справляется с запуском более увесистых.
Ссылки:
http://www.winehq.org

2. DOSEMU
opensource, GPL.
dosemu - эмулятор MS DOS. Если у под кроватью завалялись диски с программами к дос или костылю Windows 3.1 - можно их запустить оттуда. Плюс разные бухгалтеры ещё пользуются программами под MS DOS. Быстрый, достаточно стабильный эмулятор MS DOS, но его установка в Linux может быть не тривиальной.
Ссылки:
www.dosemu.org

3. Win4Lin
closedsource.
Win4Lin - прослойка между Windows и Linux, способна запускать Windows на ресурсах Linux (видеть из Windows каталоги Linux, общаться напрямую с устройствами и прочее). Ставим внутрь него винду, потом нужные программы. Для Windows 95 - говорят, хорошо и быстро, но надо было угадывать с патчем на ядро и версией программы. Win4lin PRO не требует патча, но работает жутко медленно. Не свободен и не бесплатен.
Ссылки:
http://www.win4lin.com/

4. QEMU
opensource, GPL.
QEMU - полный эмулятор, имитирует компьютер целиком. Туда можно поставить почти всё, что хочешь - любую Windows (Windows 95, Windows 98, Windows ME, Windows XP до Windows XP SP3 включительно), Linux и FreeBSD. Работает достаточно быстро и стабильно. Для быстрой работы нужен kqemu - ускоряющий модуль. В последних версиях Debian GNU/Linux QEMU есть и уже с ускоряющим модулем. Весь QEMU занимает около 25-30Мб. Платный аналог - vmware - просит денег и ставится с помощью танцев с шаманским бубном.
Ссылки:
www.qemu.org

Итог: нужно запустить блокнотик, калькулятор или ещё что-то несерьёзное - WINE. Нужен запуск винды с её программами - QEMU.
Читать далее

QEMU в Linux: тонкости и настройки



20 коммент.
Итак, эмулятор QEMU мы поставили, запустить Windows смогли, но это ещё не всё. Есть несколько тонкостей, о которых в Сети пишут мало или совсем ничего - это, вроде как, очевидно.
Дальнейшее изложение предполагает, что вы дали себе за труд хотя бы пробежать глазами man qemu (на русском - здесь), который открывает много интересного пользователю.

Тонкость №1. Как получить доступ к файлам внутри "жёсткого диска" QEMU?
Поставили Windows в эмуляторе, программы и теперь хочется иметь доступ к его файлам. Это можно. Создаём точку монтирования, даём ей нужные права и прописываем в конфиге /etc/fstab:
/opt/qemu/images/win2k.img /mnt/windows vfat rw,user,loop,noauto,offset=32256 0 0
Точки монтирования и имя образа, естественно, в вашем случае замените на те, которые существуют. Теперь можно монтировать и отмонтировать Windows диск как и любой другой.

Примечание: будьте внимательны при монтировании диска Windows при запущенном эмуляторе с Windows. Этого вообще лучше не делать, а если и делать, то монтировать диск в режиме "только-чтение". И не удивляйтесь, что некоторые свежие файлы (только что созданные Windows в эмуляторе) не будут видны даже на FAT. Партизанская система, как говорит мой хороший друг.

Тонкость №2. Графическая оболочка в Windows тормозит. Как её ускорить?
Для этого тыкаем правой кнопкой мыши по рабочему столу, заходим в Свойства экрана, поставим 16-битный цвет, тыкаем в кнопку Дополнительно, заходим в расширенные настройки и убираем все "ускоряющие" свистелки Windows: выводим бегунок "аппаратное ускорение" в крайнее левое положение и отключаем "Совмещённые записи". Linux управляет оборудованием на порядок лучше, так что умничать Windows теперь не обязательно.

И естественно, выключаем все спецэффекты: тени, затухания и прочую белиберду. Ставим классический интерфейс и по CTRL+ALT+F переключаемся в полноэкранный режим. После данных манипуляций Windows должен отзываться радикально шустрее.

Тонкость №3. Сколько ресурсов надо операционной системе Windows для приемлемой работы?
1. Обязательно работать с ускоряющим модулем kqemu - ради него, собственно, всё и затевалось (без него можно было просто поставить QEMU из дистрибутива по apt-get qemu).
2. Памяти Windows много не давать - всё равно не умеет ей пользоваться, лезет в своппинг (что под эмулятором очень медленно).
3. Объём "жёсткого диска" - вот тут чем больше, тем лучше. Разрастается Windows быстро - у меня со всеми необходимыми программами занимает 8Гб и уже тесно - приходится подключать новые "диски". Диски лучше делать в FAT - меньше проблем с чтением/записью.
4. Через bridge в сети лучше не пускать - нахватается вирусов. Правда, хост-системе (Debian, например) на это плевать, но всё-таки неприятно.
Как ни странно, но Windows XP работает в эмуляторе заметно стабильнее, чем на реальной аппаратуре. Программы вылетают только от недостатка памяти/своппинга. Так что "форточки" работают стабильно только в окне эмулятора :-)

Тонкость №4. А сколько ресурсов надо давать другим системам?
Здесь всё куда предсказуемее. Linux и FreeBSD памяти - чем больше, тем лучше. Особенно это касается LiveCD - быстрее работать будут и отзываться живее. Если хотите ставить на жёсткий диск - 3Гб максимум, 4Гб - если очень щедры. Больше не надо.

Тонкость №5. Запускаю BeOS/Haiku, Reactos, Syllable с ускоряющим kqemu, а оно виснет. Что делать?
Соответственно, не использовать kqemu :-) Делается это добавлением в строку параметров -no-kqemu
Запускается немного медленнее (особенно тормоза заметны на графической оболочке), но идёт. Лично запускал и Haiku, и ReactOS, и Syllable - идёт отлично, но без ускорения.

Тонкость №6. Хочу поставить операционную систему Windows в QEMU - какая пойдёт быстрее?
Запускал Windows с 95 по XP включительно. Опыт:
1. Windows 95 идёт быстрее всех (не удивительно - там тормозить просто нечему), но из-за низкого IQ грузит процессор на 100%. Отличилось тем, что выпадало в синий экран при простом запуске Photoshop 4.
2. Windows 98 тормозит не детским образом. Те же проблемы с IQ.
3. Windows ME я не ставил.
4. Windows 2000 идёт нормально, но в некоторых версиях эмулятора есть проблемы с его установкой. По причине IQ менее 40 процессор под завязку грузит только когда что-то делает, в простое - простаивает.
5. Windows XP - тоже самое, что и 2000, если выключить большинство его рюшечек.
Всё перечисленное выше NTёвое поделие работает с kqemu без проблем.
6. Windows Vista - пробовал по настоятельными просьбам трудящихся... Но оно не пошло. Сказало, что "ошибка 0хс0000225 Да у тебя, отец, ACPI нет? Как же ты живёшь? Иди ты к ... вендору за новым компом".

Тонкость №7. Хочу эмулировать дискетку/жёсткий диск - сколько их можно всего подсунуть?
Два флоппи-диска и четыре IDEшных харда. В man qemu это подробненько растолковано (а здесь ещё и на русском), причём прямо на первой странице. Но на всякий случай приведу цитату:
использование: qemu [опции] [образ_диска] 
disk_image
- это "сырой" образ жёсткого диска, соответствующий нулевому жёсткому IDE-диску.

Общие параметры:

`-fda файл'
`-fdb файл'

Здесь файл - образ дискеты для дисковода 0/1 соответственно. Вы можете использовать дискету системы-хозяина, указав `/dev/fd0' в качестве файла.

`-hda файл'
`-hdb файл'
`-hdc файл'
`-hdd файл'

Здесь файл - образ жёсткого диска 0, 1, 2 или 3 соответственно.

`-cdrom файл'

Здесь file - образ CD-ROM (вы не можете одновременно использовать `-hdc' и `-cdrom'). Вы можете использовать CD-ROM системы-хозяина, указав `/dev/cdrom' в качестве файла.

`-boot [a|c|d]'

Загрузка с дискеты (a), жёсткого диска (c) или CD-ROM (d). По умолчанию выполняется загрузка с жёсткого диска.


Тонкость №8. Указал в QEMU вместо сидюка ISO-образ, а надо его сменить на другой исошник. Как?
Подсвечиваем (выделяем мышкой) окно эмулятора и ударом в волшебный бубен CTRL+ALT+2 - попадаем в служебный терминал эмулятора. Дальше пишем: info block - получаем список всего, чего прикручено к эмулятору в качестве "устройств ввода-вывода". Вспоминаем, что мы в эмуляторе компьютера - пишем eject. Так наш исошник освобождается эмулятором. Далее, переходим в консольку xterm (ну, в нормальный линуксовый терминал) и как обычно монтируем исошник:
#mount -t iso9660 my.iso /mnt/loop -o loop
При этом (если ничего больше на петлю не прикручено) наш исошник закрепится за /dev/loop0 (не забываем, что у настоящих программистов отсчёт идёт с нуля, а не с единицы). Возвращаемся в служебный терминал эмулятора и пишем там: change cdrom /dev/loop0

Переключаемся в эмулятор ударом в бубен CTRL+ALT+1 - всё, теперь работаем дальше.
Добавление: как выяснилось, можно просто в терминале QEMU указывать имя и путь к ISO-образу и сразу его монтировать командой:
change cdrom /path/to/image.iso
и образ сразу становится доступным для работы.

Внимание!
Прежде, чем вы с радостным воплем побежите дальше, на вашем пути будут небольшие грабельки. Именно: если при уже примонтированном iso-шнике вы сделаете change cdrom, ваша петля прикипит - то есть ядро будет продолжать считать, что loop0 в работе и не даст его размонтировать даже после закрытия эмулятора. Очень неприятно, учитывая, что потом надо будет писать другое устройство - /dev/loop1 и далее. Их всего 8. Чтобы отодрать "прикипевшую" таким образом петлю, пишем от рута:
# losetup -d /dev/loop0
Петля с радостным звоном отлетает и на неё можно снова монтировать. Спасибо Шурику с форума

Тонкость №9. Послать сочетание клавиш в эмулируемую ОС.
Вариант: вы захотели в эмулируемом линуксе переключиться на консоль из графического режима, и по привычке нажимаете CTRL+ALT+F1 и... вываливаетесь в консоль основной системы. Чтобы этого не случалось, можно послать комбинацию клавиш, которую нажмёт за вас эмулятор. Для переключения виртуальных консолей в гостевой Linux-системе следует переключиться в монитор и использовать команды вида:

sendkey ctrl-alt-f2

Регистр важен: например, "sendkey ctrl-alt-delete" работает, а вот "sendkey CTRL-ALT-DELETE" не будет работать. Хотя в документации говорят, что должно работать оба варианта.
Читать далее

QEMU в Linux: установка и использование



42 коммент.
Исходные данные: есть установленный Debian (или Ubuntu в крайнем случае) и некоторые программы Windows, которые в WINE не запускаются.
Проблема: нужно запускать Windows и заточенные под Windows приложения.

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

Ставим!
Идём сюда и качаем последнюю версию эмулятора QEMU вместе с ускоряющим модулем kqemu. Распаковываем в свою временную директорию:
$ mkdir temp
$ cd temp
$ tar zxvf qemu-0.7.2.tar.gz
$ cd qemu-0.7.2
$ tar zxvf ../kqemu-0.7.2.tar.gz
Эмулятор очень небольшой, но он потребует для своей работы некоторое количество пакетов, которые мы сейчас быстренько поставим (от рута):
# apt-get install libsdl1.2debian zlib1g libx11-dev libsdl1.2-dev texi2html sharutils libgpmg1-dev vgabios bochsbios

Обновлено: если у вас Debian Etch 4.0 и выше, нужен пакет proll

Это если ядро самосборное. Если нет - нам нужен ещё и компилятор вместе с заголовками ядра. К тем пакетам, что мы поставили выше, доставляем ещё:
# apt-get install kernel-headers-$(uname -r) gcc g++ make
Оно потащит за собой другие пакеты, и мы их тоже ставим. На всё требуется около 20Мб, что не так много за запуск других ОС. Самое важное - это чтобы среди пакетов оказались относящиеся к SDL, иначе QEMU откажется работать с графическим выводом.
Дальше в том каталоге, где у нас распакован QEMU, даём команду:
#./configure
И внимательно смотрим на её вывод - должно быть что-то вроде:

notebeast:/home/beast/temp/qemu-0.7.2# ./configure
Install prefix /usr/local BIOS
directory /usr/local/share/qemu

binary directory /usr/local/bin
Manual directory /usr/local/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path /home/beast/temp/qemu-0.7.2
C compiler gcc
Host C compiler gcc
make make
host CPU i386
host big endian no
target list i386-user arm-user armeb-user sparc-user ppc-user i386- ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu
gprof enabled no
static build no
SDL support yes
SDL static link yes
mingw32 support no
Adlib support no
FMOD support no
kqemu support yes
KQEMU Linux module configuration: kernel sources /lib/modules/2.6.15.7/build kbuild type 2.6
Смотрим внимательно, чтобы не тратить зря время: самые важные строчки отмечены красным полужирным шрифтом. Особенно первая и третья у вас должны быть в значении yes, иначе смысла собирать QEMU мало: значение no в первой строчке лишает вас возможности графического режима QEMU, значение no в третьей - у вас не будет ускоряющего модуля kqemu, без которого любая ОС будет запускаться в 5-10 раз медленнее.
Надеюсь, что у вас всё получилось - теперь собираем исходники компилятором. В той же директории, где мы находимся, пишем:
# make
По экрану побегут служебные записи, в которые вчитываться не обязательно. Главное, чтобы компиляция не прервалась словами Aborted, Fatal Error и прочими. Компиляция будет довольно длительной, даже на мощных машинах (P4 3GHz, 2Gb DDR = 10 минут).
Если всё кончилось хорошо, то пишем там же
# make install
Снова побегут строчки служебных записей, только их будет меньше. Компилятор распихал всё куда надо, и теперь мы почти готовы запалить QEMU. Надо активировать поддержку ускоряющего модуля kqemu, делаем так (тоже от рута):
# mknod /dev/kqemu c 250 0
# chmod 666 /dev/kqemu
# modprobe kqemu
Для надёжности проверяем командой
# lsmod | grep kqemu
Оно должно написать что-то вроде:
kqemu 39304 0
Всё, эмулятор QEMU собран, ускорение включено, и теперь..

...Ключ на старт!
Поехали! Достаём из-под кровати пыльный диск Windows XP и создаём "жесткий диск" для установки Windows XP:
$ qemu-img create mustdie.img 4096M
То есть: создать образ диска для QEMU размером 4Гб и именем winxp.img
Так, сделали. Теперь вставляем диск с Windows в CD-привод и пишем:
$ qemu -m 512 -hda mustdie.img -cdrom /dev/cdrom -boot d -localtime
То есть: запускаем эмулятор QEMU с выделением ему 512Мб памяти, жёстким диском в виде файла mustdie.img и реальным CD-приводом (в нём должен быть диск!) в виде ссылки на реальное устройство /dev/cdrom, загружаемся с компакт-диска (если хотим с "жёсткого диска" грузиться пишем -boot c) и в эмуляторе течёт реальное время (-localtime то есть то, что у нас в системе). Понятные установки? А вы говорили сложно будет...

Что ещё?
В следующих постах я расскажу о некоторых интересных моментах с QEMU, возможности заставить Windows шевелиться быстрее и возможностях доступа к "жесткому диску" эмулятора. Не забываем, что так можно поставить почти любую ОС.
В качестве развлечения можно запустить любой Linux LiveCD командой:
$ qemu -m 512 -cdrom /dev/cdrom
Или, если он уже на жёстком диске в виде исо-образа:
$ qemu -m 512 -cdrom knoppix.iso

Ссылки:

Замечательная статья, которая мне в своё время очень помогла, посвящена как раз установке QEMU на Debian-based дистрибутивы (на английском):
http://www.linuxquestions.org/questions/history/320569
Единственный форум, посвящённый полностью QEMU:
http://m2.dad-answers.com/qemu-forum/ и углубляемся в чтение, если остались вопросы.
Сравнение (несколько устаревшее, но интересное) с другими эмуляторами (для особо продвинутых): http://unix.ginras.ru/apps/gam001.html
Читать далее