Викиверситет Wiki
Advertisement

Добро пожаловать в Викиверситет![]

  • Сообщество — наш русскоязычный портал сообщества, где вы можете узнать всё о сообществе Викиверситета или задать любые вопросы.
  • Обозначьте свое участие в качестве преподавателя или учащегося в интересующем Вас факультете/кафедре/институте/школе. Для этого можете создать страницу по аналогии с этим примером, или если соответствующая страница уже есть записаться туда с помощью ~~~~.
  • Пожалуйста, установите на свою страницу участника шаблон {{Репутация участника}}, чтобы другие участники могли вас поблагодарить или сделать вам предупреждение. Это важно для приятного, удобного общения и предупреждения конфликтов. Не воспринимайте это слишком серьезно, но все же прислушайтесь к другим участникам.
  • Чтобы получать актуальную информацию о событиях, происходящих в Викиверситете, Вы можете установить шаблон {{Актуально}}, например в самое начало своей страницы обсуждения.



КПВ ОПД[]

Занятие 01.02.2010[]

--Ksenia 07:38, 1 февраля 2010 (UTC)

04.03.2010[]

1. Введение

1.1 Возможности

QEMU - это БЫСТРЫЙ! эмулятор процессора, использующий динамическую трансляцию для достижения хорошей скорости эмуляции.

QEMU имеет два режима работы:

  • Эмуляция всей системы. В этом режиме QEMU эмулирует полноценную систему (например ПК), включая процессор и различное периферийное оборудование. Его можно использовать для запуска различных операционных систем без необходимости перезагрузки ПК или для отладки кода системы.
  • Эмуляция пользовательского режима (только Linux-машины). В этом режиме QEMU может запускать процессы Linux, скомпилированные для одного процессора, на другом процессоре. Его можно использовать для запуска Wine - эмулятора API Windows (http://www.winehq.org), или для упрощённой кросс-компиляции и кросс-отладки.

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

  • PC (процессор x86 или x86_64)
  • PREP (процессор PowerPC)
  • G3 BW PowerMac (процессор PowerPC)
  • Mac99 PowerMac (процессор PowerPC, в процессе разработки)
  • Sun4m (32-битный процессор Sparc)
  • Sun4u (64-битный процессор Sparc processor, в процессе разработки)
  • Malta board (32-битный процессор MIPS, в процессе разработки)

При эмуляции пользователя поддерживаются процессоры x86, PowerPC, ARM и Sparc32/64. 2. Установка Сначала распакуйте архив с исходными текстами: cd /tmp tar zxvf qemu-x.y.z.tar.gz cd qemu-x.y.z Затем настройте QEMU и соберите его (обычно никакие опции не нужны):

./configure

make Затем выполните под root'ом:

make install

чтобы установить QEMU в `/usr/local'.

3. Запуск QEMU в качестве эмулятора системы типа PC

3.1 Введение Как эмулятор системы QEMU эмулирует следующее периферийное оборудование:

  • i440FX host PCI bridge и PIIX3 PCI to ISA bridge
  • PCI VGA-карту Cirrus CLGD 5446 или фиктивную VGA-карту с VESA-расширениями Bochs (аппаратный уровень, включая все нестандартные режимы).
  • PS/2-мышь и клавиатуру
  • 2 PCI IDE-интерфейса с поддержкой жёстких и приводов CD-ROM
  • дисковод
  • сетевые PCI-адаптеры NE2000
  • последовательные порты
  • звуковую карту Soundblaster 16

QEMU использует PC BIOS проекта Bochs и Plex86/Bochs LGPL VGA BIOS.

3.3 Запуск
использование: qemu [опции] [образ_диска]

disk_image - это "сырой" образ жёсткого диска, соответствующий нулевому жёсткому IDE-диску. Общие параметры: `-fda файл' `-fdb файл' Здесь файл - образ дискеты для дисковода 0/1 соответственно (See Образы дисков.). Вы можете использовать дискету системы-хозяина, указав `/dev/fd0' в качестве файла. `-hda файл' `-hdb файл' `-hdc файл' `-hdd файл' Здесь файл - образ жёсткого диска 0, 1, 2 или 3 соответственно (See Образы дисков.). `-cdrom файл' Здесь file - образ CD-ROM (вы не можете одновременно использовать `-hdc' и `-cdrom'). Вы можете использовать CD-ROM системы-хозяина, указав `/dev/cdrom' в качестве файла. `-boot [a|c|d]'

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

`-snapshot' Запись во временный файл, а не в файл образа жёсткого диска. В этом случае образ "сырого" диска остаётся нетронутым. Однако вы можете принудительно включить запись, нажав клавиши C-a s (See Образы дисков.). `-m megs' Устанавливает объём виртуальной памяти в megs мегабайт. По умолчанию он составляет 128 МБ. `-nographic'

   Обычно QEMU использует SDL для вывода VGA-данных. Используя эту опцию, вы можете вообще отключить графический вывод, сделав, таким образом, QEMU простым консольным приложением. Эмулируемый последовательный порт перенаправляется в консоль. Зато вы так вы можете использовать QEMU для отладки ядра Linux, имея в своём распоряжении последовательную консоль.

`-k язык'

   Использование раскладки клавиатуры для данного языка (например ru для русского). Эта опция нужна только в тех случаях, когда трудно получить "сырые" коды клавиш (напр., на Mac'ах или в некоторых серверах X11). Вам не нужно использовать её на машинах PC/Linux или PC/Windows.
   Доступны следующие раскладки:
   ar  de-ch  es  fo     fr-ca  hu  ja  mk     no  pt-br  sv
   da  en-gb  et  fr     fr-ch  is  lt  nl     pl  ru     th
   de  en-us  fi  fr-be  hr     it  lv  nl-be  pt  sl     tr
   По умолчанию используется раскладка en-us.

`-enable-audio'

   По умолчанию эмуляция SB16 отключена, поскольку она может вызвать некоторые проблемы у Windows. Вы можете включить её вручную с помощью этой опции.

`-localtime'

   Настраивает часы реального времени согласно локальному времени (по умолчанию в UTC). Эта опция нужна для обеспечения правильного времени в MS-DOS или Windows.

`-full-screen'

   Запуск в полноэкранном режиме.

`-pidfile файл'

   Сохраняет идентификатор процесса QEMU в файл. Полезно, если вы запускаете QEMU из скрипта.

`-win2k-hack'

   Используйте эту опцию при установке Windows 2000, чтобы предотвратить ошибку переполнения диска. После установки Windows 2000, вам больше не нужно использовать эту опцию (она замедляет передачу данных по IDE).

Сетевые опции:

`-n скрипт'

   Задаёт скрипт инициализации сети TUN/TAP [default=/etc/qemu-ifup]. Этот скрипт запускается для настройки сетевого интерфейса системы-хозяина (обычно tun0), соответствующего виртуальной сетевой карте NE2000.

`-nics n'

   Эмуляция n-ого числа сетевых карт (по умолчанию 1).

`-macaddr адрес'

   Задаёт mac-адрес первого интерфейса (в hex-формате типа aa:bb:cc:dd:ee:ff). Mac-адрес увеличивается для каждого нового сетевого интерфейса.

`-tun-fd fd'

   Подразумевает, что fd общается с сетевым интерфейсом tap/tun системы-хозяина и использует его. Примеры использования опции смотрите на сайте http://bellard.org/qemu/tetrinet.html.

`-user-net'

   Использование сетевого стека в режиме пользователя. Используется по умолчанию, если не найден скрипт инициализации сети tun/tap.

`-tftp префикс'

   При использовании сетевого стека в режиме пользователя активирует встроенный сервер TFTP. Все файлы, начинающиеся с префикса, могут быть загружены с системы-хозяина в гостевую систему с помощью клиента TFTP. Клиент TFTP в гостевой системе должен быть настроен на двоичный режим передачи данных (используйте команду bin для TFTP-клиента для Unix). IP-адресом системы-хозяина обычно выступает 10.0.2.2.

`-smb каталог'

   При использовании сетевого стека в режиме пользователя активирует встроенный сервер SMB, чтобы Windows-системы могли иметь прозрачный доступ к файлам системы-хозяина, находящимся в указанном `каталоге'.
   В гостевой ОС Windows нужно добавить строку:
   10.0.2.4 smbserver
   в файл `C:\WINDOWS\LMHOSTS' (для Windows 9x/Me) или `C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS' (Windows NT/2000).
   Тогда доступ к `каталогу' можно получить через `\\smbserver\qemu'.
   Учтите, что на системе-хозяине должен быть установлен сервер SAMBA как `/usr/sbin/smbd'. QEMU был успешно протестирован с smbd версии 2.2.7a из Red Hat 9 и версии 3.0.10-1.fc3 из Fedora Core 3.

`-redir [tcp|udp]:порт_хозяина:[гость_хозяина]:порт_гостя'

   При использовании сетевого стека в режиме пользователя перенаправляет TCP- или UDP-подключения, входящие в порт_хозяина, на гостя_хозяина в порт_гостя. Если гость_хозяина не указан, используется 10.0.2.15 (адрес, выдаваемый по умолчанию встроенным сервером DHCP).
   Например, чтобы перенаправить подключение X11 хозяина с экрана 1 на экран 0 гостя, используйте следующие команды:
   # на хозяине
   qemu -redir tcp:6001::6000 [...]
   # теперь xterm хозяина должен открыться на гостевом сервере X11
   xterm -display :1
   Чтобы перенаправить telnet-подключение к порту 5555 хозяина на telnet'овский порт гостя, используйте следующие команды:
   # на хозяине
   qemu -redir tcp:5555::23 [...]
   telnet localhost 5555
   Далее, если вы запустите telnet localhost 5555, вы подключитесь к telnet-серверу гостя.

`-dummy-net'

   Использование фиктивного сетевого стека: сетевыми картами не будет получено ни одного пакета.

Загрузка Linux. С помощью этих опций вы можете использовать заданное ядро Linux, не устанавливая его на образ диска. Это может быть полезным для раннего тестирования различных ядер.

3.5 Монитор QEMU


Монитор QEMU используется для выполнения сложных команд в эмуляторе QEMU. Вы можете использовать его для:

  • извлечения или вставки образов съёмных накопителей (таких как CD-ROM или дисководов);
  • "замораживать"/"размораживать" виртуальную машину (ВМ) и сохранять или восстанавливать её состояние из файла на диске;
  • изучать состояние ВМ без необходимости использования внешнего отладчика.
3.5.1 Команды

Доступны следующие команды: `help или ? [cmd]'

   Вывод справки по всем командам или только по команде cmd.

`commit'

   Запись изменений в образ диска (если используется -snapshot).

`info суб-команда'

   показывает различную информацию о состоянии системы:
   `info network'
       показывает состояние сети 
   `info block'
       показывает блочные устройства 
   `info registers'
       показывает регистры процессора 
   `info history'
       показывает историю набранных команд 

`q или quit'

   Выход из эмулятора.

`eject [-f] устройство'

   Извлечение съёмного носителя (используйте для принудительного извлечения -f).

`change устройство файла'

   Смена съёмного носителя.

`screendump файла'

   Сохранение содержимого экрана в виде PPM-изображения в файл.

`log объект1[,...]'

   Включение журналирования указанных объектов в файл `/tmp/qemu.log'.

`savevm файл'

   Сохранение состояния виртуальной машины в файл.

`loadvm файл'

   Восстановление состояния виртуальной машины из файла.

`stop'

   Остановка эмуляции.

`c или cont'

   Возобновление эмуляции.

`gdbserver [порт]'

   Запуск сеанса gdbserver (по умолчанию порт=1234).

`x/fmt адрес'

   Дамп виртуальной памяти, начиная с указанного адреса.

`xp /fmt адрес'

   Дамп физической памяти, начиная с указанного адреса.
   fmt - это формат, сообщающий команде, как нужно форматировать данные. Его синтаксис: `/{количество}{формат}{размер}'
   количество
   это число объектов для дампа.
   формат
   может быть x (шестнадцатиричный), d (десятичный со знаком), u (десятичный без знака), o (восьмеричный), c (символьный) или i (инструкции asm).
   размер
может быть b (8 бит), h (16 бит), w (32 бит) или g (64 бит). На платформе x86 размеры h или w могут быть указаны с форматом i для выбора размера инструкций для 16- или 32-битного кода соответственно.
вывод значения выражения. Используется только часть format из fmt.

`sendkey клавиши' Отправляет клавиши в эмулятор. Используйте - для одновременного нажатия нескольких клавиш. Пример:

   sendkey ctrl-alt-f1
   Эта команда полезна для отправки нажатий клавиш, которые ваш графический интерфейс перехватывает на низком уровне, наподобие ctrl-alt-f1 в X Window.

`system_reset'

   Сброс системы.

`-kernel bzImage'

   Использование bzImage в качестве образа ядра.

`-append cmdline'

   Использование cmdline в качестве командной строки ядра.

`-initrd файл'

   Использование файл в качестве исходного ram-диска.

Отладочные/экспертные опции: `-serial dev'

   Перенаправление виртуального последовательного порта в устройство dev системы-хозяина. Доступные устройства:

vc

виртуальная консоль 
pty
[только для Linux] Pseudo TTY (новый PTY выделяется автоматически) 
null

устройство void stdio [только для Unix] стандартный ввод/вывод Стандартным устройством в графическом режиме является vc, а в неграфическом - stdio. Эту опцию можно использовать многократно для эмуляции до четырёх последовательных портов. `-monitor dev'

   Перенаправление монитора в устройство dev системы-хозяина (те же самые устройства, что и для последовательных портов). Стандартным устройством в графическом режиме является vc, а в неграфическом - stdio.

`-s'

   Ожидание подключения gdb к порту 1234 (See Использование GDB.). 

`-p порт'

   Изменение порта подключения gdb. 

`-S'

   Не запускать процессор при запуске (вы должны ввести 'c' в мониторе). 

`-d'

   Выводить журнал событий в /tmp/qemu.log. 

`-hdachs c,h,s,[,t]'

   Принудительно использовать физическую геометрию жёсткого диска 0 (1 <= c <= 16383, 1 <= h <= 16, 1 <= s <= 63) и опционально устанавливать принудительный режим передачи данных BIOS (t=none, lba или auto). Обычно QEMU может сам определить все эти параметры. Эта опция полезна для образов дисков старого MS-DOS.

`-isa'

   Эмуляция системы только с ISA (по умолчанию эмулируется система с PCI). 

`-std-vga'

   Эмуляция стандартной VGA-карты с VBE-расширениями Bochs (по умолчанию эмулируется PCI VGA Cirrus Logic GD5446) 

`-loadvm файл'

   Запуск из сохранённого ранее состояния (loadvm в мониторе)

Занятие 10.03.10[]

Ксения, надо работать активнее. Не забываете записывать страницу --NSA 07:33, 10 марта 2010 (UTC)

Advertisement