20150814

Xen에서 guest VM 콘솔에 접속하기
xl console 명령을 사용해 Xen에서 guest VM 콘솔에 접속할 수 있다[1]. PVM에 대해 xl console 명령은 사용해보지 않았지만, PVM에서는 쉽게 잘 되는 것으로 보인다. HVM에 대해 xl console 명령을 내릴 때가 문제이다. HVM에서 xl console 명령으로 guest VM 콘솔에 접속하려면 HVM 내부에서 serial 포트를 열어야 하고, guest 생성시 설정 파일에 변경이 필요하다 (serial = ‘pty’ 추가) [2].
HVM 내부에서 serial 포트를 여는 방법은 이전에 MARSSx86 설치 과정에서 한 적이 있다 (네 번째 섹션 참고).
Xen에서 guest VM 콘솔에 접속할 때, 파이썬 스크립트를 사용해 자동화하고자 했다. subprocess 모듈을 사용해 프로세스를 실행하고, stdin에 차례대로 명령을 입력해 로그인 및 명령을 수행했다[3]. 이 때, 로그인 과정에서 잘 되지 않아 root 비밀번호를 삭제하는 방식으로 진행함[4].

import sys 
import subprocess
import shlex
import time
 
domain_id = sys.argv[1]
cmd = "xl console %s" % (domain_id)
p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 
p.stdin.write("\n")
p.stdin.write("root\n")
p.stdin.write("python runspec.py xalancbmk &\n")
p.stdin.write("exit\n")

References:
[1] Xen FAQ Console, http://wiki.xenproject.org/wiki/Xen_FAQ_Console#How_do_I_run_xl_console_to_an_HVM_DomU.3F
[2] xl console does not work on HVM guest, http://www.xenproject.org/questions-and-answers/xl-console-does-not-work-on-hvm-guest.html
[3] Communicate multiple times with a process without breaking the pipe?, stackoverflow, http://stackoverflow.com/questions/3065060/communicate-multiple-times-with-a-process-without-breaking-the-pipe
[4]How do I completely remove root password [closed], http://stackoverflow.com/questions/11700690/how-do-i-completely-remove-root-password

Advertisements
Tagged with: , , , , , , , , ,
Posted in 1) Memo

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

누적 방문자 수
  • 88,257 hits
%d bloggers like this: