Ускоряющий модуль kqemu так же распространяется под лицензией GNU GPL. Безусловно, это ещё один повод попробовать в действии эмулятор QEMU - о чём далее и рассказывается.
Что нового?
Помимо окончательного "освобождения" ускоряющего модуля эмулятора QEMU, к версии 0.9 накопилось порядочное количество улучшений. Из основного:
- поддержка многопроцессорности (гипертреадинг простаивать не будет);
- поддержка USB;
- увеличение скорости эмуляции kqemu (наш ответ VMware);
- улучшена поддержка звука;
- возможность сетевого соединения между несколькими эмулируемыми ОС.
Особенности установки
Собственно, со времён этого поста изменилось не так много. Для работы требуются те же пакеты, однако теперь установка ускоряющего 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 стал ещё лучше, быстрее и точнее.
очепятка. VMware, а не WMvare
ОтветитьУдалитьпо работе использовал qemu под зло для эмуляции другого зла. тоже вполне достойно. особенно учитывая размер по сравнению с VMware и более грамотную эмуляцию железа :)
ОтветитьУдалитьА ещё для него есть вкусный qemu-launcher.
ОтветитьУдалить2 Michael
ОтветитьУдалитьочепятка. VMware, а не WMvare
Исправлено. Спасибо.
2 dpwiz
А ещё для него есть вкусный qemu-launcher.
Посмотрю, сам не использовал спасибо.
А не пробовали затестить KVM в новом ядре 2.6.20?
ОтветитьУдалить2 savagex
ОтветитьУдалитьА не пробовали затестить KVM в новом ядре 2.6.20?
Собираюсь потестить, когда на ноутбук новое ядро поставлю. QEMU, как говорит автор, скоро тоже будет поддерживать KVM.
sudo echo 1024 > /proc/sys/dev/rtc/max-user-freq
ОтветитьУдалитьне отработает, надо так:
sudo sh -c "echo 1024 > /proc/sys/dev/rtc/max-user-freq"
2 Anonymous said...
ОтветитьУдалитьне отработает, надо так:
sudo sh -c "echo 1024 > /proc/sys/dev/rtc/max-user-freq"
Хоть бы написал, где "надо так". В убунте? У меня в дебиане всё работает.
И опять не Debian-way.
ОтветитьУдалитьDebian-way, это поставить qemu из experimental - там как раз 0.9.0 лежит
По поводу echo:
ОтветитьУдалитьесть конечно built-in, но в нормальной системе должен быть для совместимости
/bin/echo
в дебиане и производных оно есть в пакете coreutils.
2 GQ said...
ОтветитьУдалитьИ опять не Debian-way.
Debian-way, это поставить qemu из experimental - там как раз 0.9.0 лежит
А он уже с ускорителем? А к моему самосборному ядру kqemu подойдёт? И потом, среди меток этого поста нет "дебиан" - стало быть, решение дистрибутивонезависимо. Ну, до некоторой степени :-)
За информацию спасибо: стало быть, дебиановцы уже законопатили новый эмулятор. Но по experimental-ам не хожу, на сарже сижу :-)
kqemu-source, из которого при помощи module-assistant собирается пакет с модулем, тоже есть.
ОтветитьУдалитьДа, пока в experimental, т.к. в unstable заиваются обновления для etch.
А вообще, я смотрю ты постоянно пробуешь новый софт, смысл тебе сидеть на стабильной ветке? переходи на тестинг или на смесь дистрибутивов.
2 GQ
ОтветитьУдалитьkqemu-source, из которого при помощи module-assistant собирается пакет с модулем, тоже есть.
Я стараюсь не сильно заморачиваться на дебиан-вэй - как проще, так и делаю. Мне проще собрать из исходников пару вещей и не вспоминать об этом больше.
Да, пока в experimental, т.к. в unstable заиваются обновления для etch.
У меня основная машина - рабочая. Это значит, что эксперименты на ней исключены вообще - только под эмулятором. Мне статьи писать надо, а не в линуксе колупаться.
А вообще, я смотрю ты постоянно пробуешь новый софт, смысл тебе сидеть на стабильной ветке?
Только в эмуляторах - мне в дебиане нужна стабильность и простота установки софта. Экспериментаторство с реальным железом - это мы уже проходили :-)
переходи на тестинг или на смесь дистрибутивов.
На ноутбуке переход уже начат - я x.org поставил из бэкпортов. Когда выйдет Этч - буду обновлять на ноуте иксы, да и софт подновлю. Но главная машина навсегда останется саржевой.
Чего-то не выходит каменный цветок. Пишет ошибку зараза. Хотя и ядро стандартное и заголовки совпадают по версии. А не хочет, гад такой. Пишет
ОтветитьУдалитьandrey@andrey:~/Desktop/kqemu-1.3.0pre11$ sudo modprobe kqemu
FATAL: Error inserting kqemu (/lib/modules/2.6.17-11-generic/misc/kqemu.ko): Invalid module format
Есть мнение. что это даёт о себе знать неснесённая предыдущая версия, но на make uninstall в папке с исходниками, пишет, что нет такой команды. Может быть уважаемый virens сталкивался с чем-нибудь подобным?
2 Guest
ОтветитьУдалитьЧего-то не выходит каменный цветок. Пишет ошибку зараза. Хотя и ядро стандартное и заголовки совпадают по версии.
Ага, у меня тоже такое было. Каменный цветок не выходил до тех пор, пока я не загрузился с тем ядром, от которого у меня остались заголовки. До этого modprobe упорно отказывался загружать модуль.
Есть мнение. что это даёт о
себе знать неснесённая предыдущая версия
Мыслите в правильном направлении:
1. Ссылка на заголовки ядра не той версии, что на исходники.
2. Загружены под другим ядром.
но на make uninstall в папке с исходниками, пишет, что нет такой команды.
;-) Конечно нет - кто ж будет ядро так удалять!? apt-get remove kernel-headers какой у вас там версии и снова же их поставить.
Может быть уважаемый virens сталкивался с чем-нибудь подобным?
Будучи горячим финским парнем, на эти грабли не преминул наступить :-) В моём случае всё было так: исходники и заголовки от ядра 2.6.15.7w, а загружен под 2.6.15.7 - модуль-то где надо появляется, но грузиться не грузится. Гуглил полчаса, пока дошло :-)
Ни у кого не было проблемы с поднятием tun/tap (виртуальный сетевой интерфейс) под новой кемой? В старой версии (0.7.1) всё работало, а в новой интерфейс не поднимается.
ОтветитьУдалить2 Anonymous
ОтветитьУдалитьНи у кого не было проблемы с поднятием tun/tap (виртуальный сетевой интерфейс) под новой кемой?
Аксакалы говорили, что со времён 0.8.2 что-то поломали. Я ещё не пробовал, о результатах отпишусь.
Тем, у кого возникнут проблемы при сборке qemu с помощью gcc 4 добро пожаловать сюда: http://marc.abramowitz.info/archives/2006/06/29/how-to-build-qemu-on-dapper/
ОтветитьУдалитьЭх, а у меня 0.9.1 около 40 минут компилировался на Sempron-2500...
ОтветитьУдалитьНе понять что имеется ввиду
ОтветитьУдалить"FATAL: Error inserting kqemu (/lib/modules/2.6.15.7/misc/kqemu.ko): Invalid module format
Загрузить модуль не от той версии, естественно, не выйдет."
У меня стоит ядро Linux 2.6.9-023stab040.1
Компиляция Qemu-0.9.1 проходит успешно. При распаковки ускорителя и запуск следующее:
linux:~/temp/qemu-0.9.1/kqemu-1.3.0pre11# ./configure
Source path /root/temp/qemu-0.9.1/kqemu-1.3.0pre11
C compiler gcc
Host C compiler gcc
make make
host CPU i386
kernel sources /usr/src/linux
kbuild type 2.6
Соответственно выдает FATAL: Error inserting kqemu (/lib/modules/2.6.15.7/misc/kqemu.ko)
Мне кажется вместо
kernel sources /usr/src/linux должно быть
kernel sources /lib/modules.
Но папка modules пуста.
Что необходимо сделать и как установить ускоритель?
Что такое.. куему поставил.. все вроде работает.. ставлю винду хп и когда дохожу до места с разметвой диска, то не получается разметить.. указываешь размер раздела, а он не создает его, а просто возвращает тебя к тому экраму где приведен список дисков и не чего при этом не создает... Попробовал ставить Debian, который у меня стоит.. тот тоже отказался отформатировать мне раздел под FAT32.. да и под другими ФС тоже.. Еще пробовал создать и отформатировать раздел в Disk Director Suite 10, он вапще повис при выполнении форматирования.. Может я что т оне так делаю..Подскажите что такое, кто знает и понял о чем я :)
ОтветитьУдалить