Skip to content

Latest commit

 

History

History
132 lines (105 loc) · 9.81 KB

app6_cmd_line.md

File metadata and controls

132 lines (105 loc) · 9.81 KB

Приложение 6. Изменение командной строки эмулятора

Командная строка, формируемая инструментом по умолчанию, не всегда может отвечать требованиям пользователя. Для того чтобы расширить конфигурацию самостоятельно, предусмотрен файл с параметрами эмулятора, который формируется при создании проекта и располагается в рабочей директории. Это файл 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

Со стороны эмулятора необходимо организовать проброску порта для подключения по 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 так и в конфигурационные файлы сценариев, если они были выбраны.