Командная строка, формируемая инструментом по умолчанию, не всегда может отвечать требованиям пользователя.
Для того чтобы расширить конфигурацию самостоятельно, предусмотрен файл с параметрами эмулятора, который
формируется при создании проекта и располагается в рабочей директории. Это файл qemu_opts.ini
.
Подробнее про работу с этим файлом можно узнать в разделе
Интерактивный режим создания проекта.
В этом разделе рассмотрим несколько типичных ситуаций модификации командной строки запуска эмулятора.
Важно! При самостоятельной модификации параметров запуска эмулятора не гарантируется корректная работа команд из набора natch set
.
Настройка проекта строится на основе образа операционной системы, и в интерфейсе не предусмотрено
добавление более одного диска, а иногда это может потребоваться.
К счастью, большинство опций эмулятора QEMU могут быть применены и в Natch, путем самостоятельного
редактирования файла параметров qemu_opts.ini
.
В qemu_opts.ini
присутствуют строки с метками, отвечающими за режим работы. Если вам нужен второй
диск только для режима аппаратной виртуализации -- необходимо добавить соответствующие строки только
с этой меткой. Наример, мы хотим добавить второй диск с названием second.qcow2
.
Изменим id
устройства и получится так:
[kvm]-drive file=../../test_image_debian.qcow2,id=ide0-hd0,if=none # основной диск
[kvm]-device ide-hd,bus=ide.0,drive=ide0-hd0 # основной диск
[kvm]-drive file=../../second.qcow2,id=ide1-hd0,if=none
[kvm]-device ide-hd,bus=ide.1,drive=ide1-hd0
Такая конфигурация будет работать только для режима аппаратной виртуализации, но скорее всего вас интересует работа Natch, значит придется позаботиться о поддержке детерминированного воспроизведения.
Если второй диск используется только как дополнительное хранилище, режим тюнинга можно не трогать.
Для работы двух и более дисков в режиме детерминированного воспроизведения необходимо предварительно
создать оверлеи для новых дисков, чтобы реальный образ оставался неизменным и была возможность воспроизведения.
Рассмотрим пример с тем же диском second.qcow
.
Для создания оверлея можно использовать утилиту natch-qemu-img
из комплекта Natch или стандартную (под именем qemu-img
), если
у вас установлен эмулятор QEMU.
Создаем оверлей (мы располагаемся в папке проекта):
qemu-img create -f qcow2 -b /user/home/Images/second.qcow2 -F qcow2 second.diff
Теперь добавим еще одно дисковое устройство с меткой [rr]
по аналогии с существующим, не забывая менять идентификаторы:
[rr]-drive file=SCENARIO_NAME/test_image_debian_new.diff,if=none,id=disk # основной диск
[rr]-drive driver=blkreplay,if=none,image=disk,id=disk-rr # основной диск
[rr]-device ide-hd,bus=ide.0,drive=disk-rr # основной диск
[rr]-drive file=second.diff,if=none,id=disk2
[rr]-drive driver=blkreplay,if=none,image=disk2,id=disk-rr2
[rr]-device ide-hd,bus=ide.1,drive=disk-rr2
Теперь можно использовать оба диска и воспроизведение будет работать.
По умолчанию используется один сетевой адаптер модели e1000
, но если вам нужно больше адаптеров,
можно их добавить. Обратите внимание, что анализ помеченных данных в Natch работает только на модели e1000
.
Так как работа Natch предполагает детерминированное воспроизведение, просто добавить новое устройство
нельзя, нужно обеспечить его работу в режиме воспроизведения. Рассмотрим добавление еще одного сетевого
адаптера без проброса портов. Для этого откройте файл qemu_opts.ini
на редактирование, найдите упоминание
netdev
:
-netdev user,id=net0
-device e1000,netdev=net0
[rr]-object filter-replay,id=replay,netdev=net0
В таком простом случае обратить внимание нужно на последнюю строчку, которая добавляет фильтр для режимов записи и
воспроизведения. Добавить еще одно такое же устройство можно просто изменив поля id
:
-netdev user,id=net0
-device e1000,netdev=net0
[rr]-object filter-replay,id=replay,netdev=net0
-netdev user,id=net1
-device e1000,netdev=net1
[rr]-object filter-replay,id=replay1,netdev=net1
Теперь в нашей конфигурации два сетевых адаптера и воспроизведение будет работать.
Когда в конфигурации присутствуют проброшенные порты, строк страновится больше:
[kvm]-netdev user,id=net0,hostfwd=tcp:127.0.0.1:49152-:5555
[tuning]-netdev user,id=net0,hostfwd=tcp:127.0.0.1:49152-:5555
[record]-netdev user,id=net0,hostfwd=tcp:127.0.0.1:49152-:5555
[replay]-netdev user,id=net0
-device e1000,netdev=net0
[rr]-object filter-replay,id=replay,netdev=net0
Проброс портов должен фигурировать во всех возможных режимах работы эмулятора, кроме воспроизведения.
Видим, что для режимов записи и воспроизведения строки разные, поэтому уже нельзя использовать метку [rr]
.
В то время как фильтр так и остается для [rr]
.
Однако, если использовать режимы тюнинга и аппаратной виртуализации не планируется, строки можно
опустить. Как и в предыдущем примере, необходимо изменить id
, а так же указать порты для проброса.
Со стороны эмулятора необходимо организовать проброску порта для подключения по ssh (порт 22 по умолчанию, либо который установлен у вас). Сделать это можно на этапе создания проекта в разделе про сеть. Укажите порт 22 для пробрасывания, а снаружи можно будет подключаться по выданному порту (от 49152, в зависимости от количества портов в списке).
Если пробрасывался только порт 22, в qemu_opts.ini
появятся записи вида:
[kvm]-netdev user,id=net0,hostfwd=tcp:127.0.0.1:49152-:22
[tuning]-netdev user,id=net0,hostfwd=tcp:127.0.0.1:49152-:22
[record]-netdev user,id=net0,hostfwd=tcp:127.0.0.1:49152-:22
[replay]-netdev user,id=net0
Если на этапе создания проекта вы отказались от пробрасываения портов, можно воспрользоваться командой
natch set port 22
и необходимые изменения будут внесены автоматически как в qemu_opts.ini
так и в
конфигурационные файлы сценариев, если они были выбраны.