Можно ли написать скрипт qemu? - PullRequest
3 голосов
/ 11 марта 2011

Мне было интересно, можно ли написать сценарий qemu, чтобы вы могли загрузить его и автоматически запустить для запуска программ в гостевой ОС? В моем случае это Linux. По сути, я хочу избежать взаимодействия с гостем, чтобы я мог провести серию экспериментов с кондором или чем-то подобным.

Я видел этот вопрос , который предлагает метод, использующий python, но мне интересно, есть ли какой-либо другой способ, который поддерживается самой qemu?

Я не хочу делать ничего особенного. Предполагая автоматический вход гостя в простую оболочку, я думал о сценарии, подобном следующему:

cd <some_dir>
./experiment
scp result me@my.machine.com:

Есть идеи, иначе я опробую приведенный выше метод python?

Ответы [ 4 ]

2 голосов
/ 26 января 2013

QEMU Monitor может ограниченно взаимодействовать с гостевыми системами, используя собственную консоль. Это включает в себя чтение регистров, управление мышью / клавиатурой и получение снимков экрана. Существует протокол мониторинга QEMU (QMP) , который позволяет передавать команды JSON и читать значения из гостевой системы.

2 голосов
/ 30 марта 2011

Все, что вы помещаете в /etc/rc.local, запускается при загрузке. Вы должны будете убедиться, что среда настроена должным образом перед выполнением ваших команд. Сделайте самую последнюю строку в вашем скрипте «shutdown -h now», и виртуальный компьютер даже автоматически отключится.

0 голосов
/ 07 октября 2016

Все зависит от образа вашей виртуальной машины, который вы загружаете с помощью QEMU. Например, в моем случае я просто добавил необходимые команды в / etc / profile

Но для входа в систему необходимо выполнить вход в систему. Чтобы сделать автологин, я сделал следующие изменения в / etc / inittab:

# Startup the system
::sysinit:/bin/mount -t proc proc /proc
::sysinit:/bin/mount -o remount,rw /
::sysinit:/bin/mkdir -p /dev/pts
::sysinit:/bin/mkdir -p /dev/shm
::sysinit:/bin/mount -a
::sysinit:/bin/hostname -F /etc/hostname
# now run any rc scripts
::sysinit:/etc/init.d/rcS
::sysinit:/bin/login -f root

# Put a getty on the serial port
ttyAMA0::respawn:/sbin/getty -L  ttyAMA0 0 vt100 # GENERIC_SERIAL

# Stuff to do for the 3-finger salute
#::ctrlaltdel:/sbin/reboot

# Stuff to do before rebooting
::shutdown:/etc/init.d/rcK
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r

Ниже указана команда входа в систему с именем пользователя 'root' и выполнением сценария / etc / profile:

::sysinit:/bin/login -f root
0 голосов
/ 27 августа 2011

На вашем хосте может быть скрипт, который запускает виртуальную машину, ждет немного времени, а затем запускает ssh user@vm experiment для запуска программы. Stdout окажется на вашем хосте и может быть перенаправлен в файл, чтобы захватить его локально и не нуждаться в scp.

...