목록Software Engineering (80)
Pure Software Engineer :)
dom0에는 (2.6.32.39 이후 버전) user level process가 VM간에 통신을 할 수 있도록 guest OS level에서 page를 할당할 수 있는 디바이스(gntalloc)를 제공한다.(참고 http://cateee.net/lkddb/web-lkddb/XEN_GRANT_DEV_ALLOC.html) 이를 통해 사용자 어플리케이션은 디바이스(gntalloc)을 통해 커널 메모리를 할당받아 다른 VM이 접근할수 있도록 access 권한을 주고 나서 이 페이지를 통해 메시지를 주고 받을 수 있다. 하지만 2.6.32.39 이후 버전부터 gntalloc device가 적용되어 있으므로 그 이전의 dom0를 사용하기 위해서는 직접 패치를 해줘야 했다. 여기서는 2.6.32.39버전의 dom0에..
하이퍼콜은 기본적으로 guest OS가 Xen에게 요청을 보낼 수 있는 인터페이스이다.따라서 guest OS에서 동작하는 application이 hypercall을 사용하기 위해서는 반드시 guestOS를 거쳐야 한다. 이를 위해 guest OS는 privcmd 라는 디바이스를 제공한다.(/proc/xen 또는 /dev/xen 아래에 privcmd 가 보이면 된다.)사용자는 이 디바이스에 ioctl 명령을 통해 guest OS로 요청을 보내고privcmd는 guest OS 모드에서 동작하여 xen에게 application으로부터 받은 요청을 하이퍼바이저에게 전달하는 역할을 한다. 이미 xen에서는 xend에서 hypercall을 위와 같은 방법으로 사용하고 있다. 또한 일반 사용자 application에..
가상화(Xen) 환경에서 hypercall이란 Guest OS가 하이퍼바이저에게 privilege operation실행을 요청하는것이다.이는 일반 환경에서 application이 OS에게 시스템 콜을 요청하는 것과 같다. 따라서, 새로운 하이퍼콜을 추가하기 위해서는 Xen과 GuestOS 모두 수정해줘야 한다.(여기서 Xen은 4.0.1버전 Dom0 커널은 3.4.11버전을 사용하였고, 64비트 아키텍처이다.) // $ cd xen-4.0.1 // 1. 새로운 하이퍼콜 등록 // xen/arch/x86/x86_64/entry.S // ENTRY(hypercall_table) 에 새로운 하이퍼콜 추가 // ENTRY(hypercall_args_table) 에 새로 추가할 하이퍼콜의 argument 갯수를 ..
가상 머신 생성할때 다음과 같은 오류를 자주 본 적이 있다. Error: Device 0 (vif) could not be connected. Hotplug scripts not working. 이는 dom0의 network backend 가 제대로 동작하지 않아서 그런것이다. 확인해 보니 dom0 컴파일 옵션에서 network와 block device 에 대한 backend 드라이버를 선택하지 않고 컴파일 했었다. make menuconfig 에서 device->(block device, network device)에서 반드시 backend 드라이버를 컴파일할때 포함시키도록 하자. referencehttp://wiki.xensource.com/xenwiki/XenCommonProblems#head-f7..
A에서 B로 ssh 연결을 자주 할때 비밀번호를 매번 입력하는것은 번거롭다. 비밀번호 입력 없이 로그인하는 방법을 알아본다. 먼저 A에서 $ ssh-keygen ~/.ssh/ 하위 디렉토리에 id_rsa, id_rsa.pub 두개의 파일이 생성된다(id_rsa는 사용자의 private key이고 , id_rsa.pub는 public key 이다.) 이 중 id_rsa.pub 파일을 ssh 접속할 머신(B)의 ~/.ssh/ 디렉토리 밑에 authorized_keys 로 복사한다. 그럼 끝! ssh 연결해보면 비밀번호를 묻지 않고 로그인이 된다.
xen에서 tpm을 가상화하여 vtpm을 guest에게 제공한다. 이를 사용하기 위해서는 vpm_manager가 있어야 하는데 기본적으로는 없는듯 하다. xen 컴파일 할때 다음과 같이 옵션을 줘야 함 $ sudo make install-xen VTPM_TOOLS=y 이렇게 하고 리붓하고 나면 /dev/vtpm 이라는게 생겨야 하는거같은데... 난 왜 안생기지? 생겼다면 guest configuration에 다음과 같이 추가한다 vtpm=['backend=0,instance=1'] 아래와 같은 메시지가 뜬다면 다시 처음부터...Error: Device 0 (vtpm) could not be connected. Hotplug scripts not working. referencehttp://www.goss..
Xen hypervisor에서 TCB를 줄이기 위해 dom0에서 privilege operation들을 domain builder라는 isolated domain으로 따로 분리해 낸 방법을 제안. 이 페이퍼의 contribution은 크게 2가지이다. 1. 우선 domain builder 라는 domain을 통해 dom0를 TCB에서 제거함으로써 TCB를 줄였다. 2. TCB의 trustworthness를 평가하는데 있어 code line을 가장 중요시 했던 기존의 approach와는 달리, 코드 수는 많더라도 state space size라고 해서 privilege operation을 TCB에 두는 대신 untrusted code와의 interface가 있어야 하는데 이 코드의 양도 같이 고려해 줘야한..
xen에서 guest domain을 생성하는 방식은 2가지가 있다.1. xm create config_file2. xm new config_file create로 guest를 생성하는경우 바로 boot까지 되지만, new로 생성하면 일단 guest에 대한 정보가 xend에 기록이 된다.(uuid가 생성되면서 xend에 의해 관리됨)그리고 바로 부팅이 되는것이 아니라 halt상태가 된다.이러한 guest를 부팅시키기 위해서는 xm start [guest name] 을 수행해야한다.xend에서 관리하는 domain에 관한 정보는 /var/lib/xend/domains/ 아래에 uuid 별로 디렉토리가 만들어져서 관리가 된다.xm suspend/resume할때 checkpoint를 뜨게 되는데 자동적으로 위의..