On Wed, Nov 05, 2008 at 10:25:54PM -0500, Nicholas wrote: > Dmitri V. Ivanov wrote: > > >Сам использую detached screen чтобы цеплять monitor и serial от > >kvm/qemu. Написанное мной пока крайне сырое, но тоже могу показать (а > >вдруг кто чего подскажет). > > Пока не совсем понял что значит "цеплять monitor и serial". Например: > запускается kvm с помошью команды > kvm -daemonize -vnc 192.168.1.1:3 -m 256 -hda vm.qcow2 > после чего можно подключиться к его терминалу с помощью vncviewer > 192.168.1.1:3 . > > Вы используете какой-то другой метод ?
Да. У меня машина имеет -vnc none -monitor pty -serial pty qemu при запуске пишет что-то вроде "character device mapped to /dev/pty/5" Я ловлю эти строчки, и по ним делаю окошки в screen-е. screen предварительно запускаю в сразу detached режиме (указывая имя сессии). Каждую строчку я привожу к виду /dev/pty/<number>, а дальше это дело цепляю примерно так screen -S <session name> -X screen -t <title> /dev/pty/5 Насколько я угадал (в документации этого нет, в код qemu не смотрел), первая из этих строчек - monitor. В нем можно сказать например system_powerdown, и vm аккуратно сделает shutdown. Для serial console в inittab гостя указываем тип терминала screen (в примерах vt100). Вообще-то для этого есть libvirt (как я понял, написав уже свою заготовку), но я ее пока не понимаю. У меня пока получилась такая заготовка: ============== #!/bin/sh # Command to run KVM. All options except -monitor pty -serial -pty. Ones would # be added by script itself cmdline='qemu-system-x86_64 -m 256 -drive file=/home/dima/test1.img,if=virtio,boot=on -net nic,vlan=0,macaddr=00:16:3e:56:63:74,model=virtio -net tap,vlan=0,script=/etc/kvm/add2lan -kernel /boot/vmlinuz-2.6.26-bpo.1-686 -initrd /home/dima/initrd.img -append "root=/dev/vda1 ro console=ttyS0" -vnc none -daemonize' # What to pass into screen. Always put 'monitor' first. May be up to four # 'serial' (according to qemu-doc) ptys='monitor serial' # Name for screen session. Just a word - no dots, commas and spaces sessname='vmbinder' # Get attached or detached session with name $sessname and maximal PID (With hope it's last session). # sessrname gets value PID.${sessname} sessrname=$(screen -ls|sed -n -e "\%^[[:space:]][[:space:]]*[[:digit:]]*\.${sessname}[[:space:]].*\(At\|De\)tached% {s/^[[:space:]]*\([^[:space:]]*\)[[:space:]].*$/\1/p}"| sort -t '.' -k 1,1n - | tail -n 1) # If no desired session - start one sessisnew='' if test -z "$sessrname"; then screen -dmS $sessname sessrname=$(screen -ls|sed -n -e "\%^[[:space:]][[:space:]]*[[:digit:]]*\.${sessname}[[:space:]].*\(At\|De\)tached% {s/^[[:space:]]*\([^[:space:]]*\)[[:space:]].*$/\1/p}"| sort -t '.' -k 1,1n - | tail -n 1) screen -S $sessrname -p 0 -X title PlaceHolder sessisnew='1' fi # appendptys='' number='1' for item in $ptys; do if test "$item" == "monitor"; then appendptys="$appendptys -monitor pty" number='0' else appendptys="$appendptys -serial pty" fi done set $ptys #qemu-system-x86_64 -m 256 -drive file=/home/dima/test1.img,if=virtio,boot=on -kernel /boot/vmlinuz-2.6.26-bpo.1-686 -initrd /home/dima/initrd.img -append "root=/dev/vda1 ro console=ttyS0" -vnc none -monitor pty -serial pty -daemonize 2>&1 | (eval ${cmdline}${appendptys} 2>&1) | sed -n -e '\%[[:space:]]% [EMAIL PROTECTED]:space:]]/@/@p}'| while read line do title=$1 shift test "$number" != '0' && title="${title}$number" number=$(($number + 1)) screen -S $sessrname -X screen -t $title $line done # If we are started new screen kill PlaceHolder window (one isn't needed for normal operations) test -n "$sessisnew" && screen -S $sessrname -p PlaceHolder -X kill ================ В планах сделать из этого комплектик для скриптового запуска-остановки виртуальной машины (мне нужна одна, но по идее можно и несколько). WBR Dmitri Ivanov -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]