эмуляция
42 коммент.
Проблема: нужно запускать 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Смотрим внимательно, чтобы не тратить зря время: самые важные строчки отмечены красным полужирным шрифтом. Особенно первая и третья у вас должны быть в значении yes, иначе смысла собирать QEMU мало: значение no в первой строчке лишает вас возможности графического режима QEMU, значение no в третьей - у вас не будет ускоряющего модуля kqemu, без которого любая ОС будет запускаться в 5-10 раз медленнее.
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
Надеюсь, что у вас всё получилось - теперь собираем исходники компилятором. В той же директории, где мы находимся, пишем:
# 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