Итак, эмулятор
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" не будет работать. Хотя в документации говорят, что должно работать оба варианта.