Дальнейшее изложение предполагает, что вы дали себе за труд хотя бы пробежать глазами 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" не будет работать. Хотя в документации говорят, что должно работать оба варианта.
Чо-то я не понял, зачем нужны пляски с бубном вокруг /dev/loop при монтировании исошников из qemu. Всю жизь делал просто
ОтветитьУдалитьchange /path/to/image.iso
из консоли qemu - проблем не замечено.
При создании двух виртуальных машин с установленными Зло Server 2003, использовал ключик model=rtl8139.
ОтветитьУдалитьДля чипа 8029 нет в ней дров! Я в первый раз был в шоке.
В Зло ХР SP2 есть.
При запуске сетевухам назначается один и тот же MAC, что лечится ключиком macaddr=xx:xx:xx:xx:xx:xx.
Но не лечится! При просмотре мака в самой винде они те которые ты задал.
Но конфликт всё равно есть.
Компы не пингуются между собой и с хозяйской ОС пингуется только один из них (тот который первым запущен).
Вот так.
Правильно было указать версию QEMU ,
ОтветитьУдалитьну и версию используемой Debian .
И вообще слово "Sarge" раедко у Вас встречается :)
Удачи :)
И еще, Зло тож бывает разного разлива :)
ОтветитьУдалитьwin98 - попадались две легальные версии
абсолютно разного поведения в установке.
win2000 - минимум 3 различных версии встречал
"Всю жизь делал просто change /path/to/image.iso"
ОтветитьУдалитьХм... попробую. :-) Век живи, век учись, чёрт возьми!
"Компы не пингуются между собой и с хозяйской ОС пингуется только один из них (тот который первым запущен)."
Что-то подобное было, т.к. использую Зло ХП Сервиспук2. Думал, у меня руки кривые, оказывается - вроде нет :-)
"Правильно было указать версию QEMU"
В принципе, это должно действовать и на новых версиях QEMU. На всякий слуачй - 0.7.2
У народа есть геморрой с новыми версиями. Разберусь с работой - буду пытаться запалить новую 0.8.2
"И вообще слово "Sarge" раедко у Вас встречается"
А что, это имеет решающее значение? Этч вышел!? ;-)
"А что, это имеет решающее значение? Этч вышел!? ;-)"
ОтветитьУдалитьВ яблочко!
Вот так.
http://tokkee.org/debian/
ОтветитьУдалитьЗдесь есть qemu 8.0 & gcc 4.0
bacpordeb http://debian.tokkee.org/debian/ sarge qemu
deb-src http://debian.tokkee.org/debian/ sarge qemu
bacpordeb http://debian.tokkee.org/debian/ sarge gcc
deb-src http://debian.tokkee.org/debian/ sarge gcc
aka elipse :)
http://tokkee.org/debian/
ОтветитьУдалитьЗдесь есть qemu 8.0 & gcc 4.0
deb http://debian.tokkee.org/debian/ sarge qemu
deb-src http://debian.tokkee.org/debian/ sarge qemu
deb http://debian.tokkee.org/debian/ sarge gcc
deb-src http://debian.tokkee.org/debian/ sarge gcc
aka elipse :)
Скоро выйдет Etch ,а вы работаете
ОтветитьУдалитьс QEMU 0.6 двухлетней давности.
По вашим градациям тоже просто Debian - а так же и Woody ,...
Просто можно все указать ,а другим не занимиатся дедуктивным анализом.
Ведь речь о тонкостях поведения QUEMU , а не о впечатлениях.
Мне показалось что вы серьезно подходите
к таким вопросам , а если я ошибся - тогда прошу прощения
elipse
Так, вносим ясность, ув.тов. elipse. :-)
ОтветитьУдалить"Скоро выйдет Etch ,а вы работаете
с QEMU 0.6 двухлетней давности."
Во-первых, не 0.6, а 0.7.2 - который у меня поставился, на таком и работаю. Мне на нём именно РАБОТАТЬ, а не ловить глюки и проблемы новых версий и компиляторов. Мне деньги платят не за это, грубо говоря. Через два года мне защищать кандидатскую - и тема там отнюдь не "Эмуляторы в Дебиан" :-)
"По вашим градациям тоже просто Debian - а так же и Woody"
Ну и что с того!? Переименовывать блог каждый раз, как выйдет новый релиз? Ну знаете...
У меня на одной машине до сих пор стоит часть Woody - с которого я и начинал. И ничего, работает.
Ещё раз: я работаю в Дебиан, потому что мне это удобно. Я пишу о том, что мне кажется интересным\полезным. За последними новинками могу не поспевать - при том, что приходится работать над двумя научными темами сразу. Не забывая о личной жизни :-)
"Ведь речь о тонкостях поведения QUEMU , а не о впечатлениях."
Найду время - поставлю новую версию. То, что я описал в этом посте, будет работать и на более старших версиях.
"Мне показалось что вы серьезно подходите
к таким вопросам"
Вам виднее. Если вам помогает то, что здесь написано - я очень рад. Если нет - заведите свой блог. Поверьте, я буду там частым гостем :-)
Тонкость №8. Хочу дать море памяти и/или запустить кучу ОС, а оно работает медленно. Отчего?
ОтветитьУдалитьАвтор, Фабрис Беллард, разрешает использовать kqemu бесплатно, но с ограничениями и без исходников. Дело в том, что то, что он даёт бесплатно, стоит кучу мегабаксов - люди целыми компаниями бьются за эти технологии. Это его, Белларда, ноу-хау. Поэтому kqemu можно запустить только с четырьмя ОС и выделить 1.3ГБ памяти суммарно.
kqemu уже давно GPL
2 GQ пишет...
ОтветитьУдалитьkqemu уже давно GPL
Ваша правда, не успел исправить. Поправлено, текст ещё немножко причёсан. Спасибо!
Для 100% загруженности под Win9x есть лекарство, ставится специальный драйвер в этой системе. Вроде как было описано в документации к qemu (не man, а html-файлы которые идут с qemu)
ОтветитьУдалитьБаян с монтированием диска, если бьешь его на партишены и логические диски, т.е. не форматируешь диск полностью на vfat, особенно это чувствительно, когда юзаешь виртуальные машины с линухом, там свап раздел выделять надо...
ОтветитьУдалить"там свап раздел выделять надо..." - его надо выделять не на отдельный раздел внутри виртуального диска, а на отдельный "диск", причём положить этот "диск" в ramfs на хостсистеме, всёравно одноразовый.
ОтветитьУдалитьSirYorik.
2 Анонимный комментирует...
ОтветитьУдалить"там свап раздел выделять надо..." - его надо выделять не на отдельный раздел внутри виртуального диска, а на отдельный "диск", причём положить этот "диск" в ramfs
Ммм... остроумно :-) Надо будет попробовать. Спасибо за мысль.
Спасибо, с вашего позволения скопирую к себе в загашник
ОтветитьУдалить2 virens комментирует...
ОтветитьУдалить2 Анонимный комментирует...
"там свап раздел выделять надо..." - его надо выделять не на отдельный раздел внутри виртуального диска, а на отдельный "диск", причём положить этот "диск" в ramfs
Ммм... остроумно :-) Надо будет попробовать. Спасибо за мысль.
Вы не поверите, но для Выня это тоже помагает, и решает описанную вами проблему Памяти этому богомерзкому редмонтовскому созданию много не давать - всё равно не умеет ей пользоваться, лезет в своппинг (что под эмулятором очень медленно). : pagefile.sys помещается на отдельный диск(Мой компутер->Свойства->Дополнительно->Параметры быстродействия->Дополнительно-Виртуальная память-Изменить), диск на хостсистеме в раму. Короче, при недостатке оперативы свопинг перекладывается на линукс(и слава богу), что для виртуализации вын-серверов важно.
отчего-то change cdrom /path/to/image.iso не работает
ОтветитьУдалитьприходится вместо cdrom писать ide1-cd0 (название подглядел в info block)
это как-то лечится или это нормально?
Для перехода в консоль гостевой Linux-системы есть и такой путь:
ОтветитьУдалить- жмём мышкой в окно qemu (чтобы произошёл захват мыши);
- между консолями можно переключаться с помощью Alt+F1-F...