정보공간_1

[4기 강북 유성배] 하이퍼바이저의 이해 : VirtualBox 본문

IT 놀이터/Elite Member Tech & Talk

[4기 강북 유성배] 하이퍼바이저의 이해 : VirtualBox

알 수 없는 사용자 2013. 11. 11. 19:20

안녕하세요.
저는 강북 멤버십 20-1기 유성배라고 합니다.

  저번시간에 이어서, 이번 시간에는 또 다른 하이퍼바이저인 VirtualBox에 대해 다루고자 합니다. VirtualBox는 가장 대표적인 Type-II, 전가상화 하이퍼바이저 입니다. Xen과 완전히 반대되는 구조라고 할 수 있습니다. 운영체제 위에 하이퍼바이저를 설치하는 형태이고, 하이퍼바이저 위에 구동시키는 운영체제에 별도의 수정을 가하지 않아도 되기 때문입니다. 여러분들은 아마도 리눅스 등을 다루는 학교과제에서 사용해보신 적이 다들 있을 것입니다.

  VirtualBox 역시도 Oracle에서 오픈소스로 배포하고 있습니다 (https://www.virtualbox.org/). 유료버전인 VMWare Workstation과는 다르게 자유롭게 받을 수 있으며 개인적인 용도로는 사용이 자유롭습니다. (단체 내에서 사용하더라도 개인적인 용도로 사용한다면 문제가 없는 라이센스 정책을 따르고 있습니다.)

  VirtualBox를 다운받아서 설치한 후, 실행하면 아래와 같이 관리자 창이 뜨게 됩니다. 창이 GUI로 구성되어 있어 손쉽게 VM을 생성, 삭제, 시작, 정지 등을 할 수 있습니다. Xen의 Xentool과 같은 역할을 한다고 보시면 됩니다.

 

 

  관리자 창을 이용하여 가상머신을 관리하는 방법에 대해서는 손쉽게 해보실 수 있으므로, 본 포스팅에서는 다루지 않겠습니다.  본 포스팅에서는 VirtualBox를 터미널(SSH)만 사용가능한 서버환경에서도 자유롭게 사용하는 방법에 대해 기술하고자 합니다.
  이 방법은 다음과 같은 경우에 유용하게 쓰일 수 있습니다. 외부에서 모바일 기기로 ActiveX를 사용하는 웹사이트에 접근해야 되는 상황에 처한다고 가정해봅시다.위의 방법을 모르는 경우, 사용가능한 서버환경이 있다고 하더라도, 윈도우즈가 설치된 컴퓨터를 켜놓고, 원격접속으로 접근해야 합니다. 하지만, 위 방법을 알고 있다면, 서버 환경에 VirtualBox를 설치하여 사용할 수 있습니다. 윈도우즈가 깔린 VM을 켰다 껐다 하면서 자유롭게 사이트에 접근할 수 있는 것입니다.

 

  1. 먼저 적절한 버전의 VirtualBox(https://www.virtualbox.org/wiki/Downloads)를 받아 설치를 하시면 됩니다. 설치가 적절히 되었다면 vboxmange라는 명령어가 생길 겁니다.

  2. GUI가 지원되지 않는 환경에서 VM의 화면을 보기 위해서는 원격데스크톱 기능이 필요합니다. VirtualBox에서는 VRDE(Virtual Remote Desktop Extension)를 통해 VM의 화면을 원격데스크톱으로 볼 수 있고, 조정할 수 도 있습니다. VRDE가 설치되어있는지는 다음의 명령어를 통해 확인하실 수 있습니다.

    vboxmanage list extpacks


    만약 해당 명령어를 입력했을 때 다음과 같은 메시지(특히 밑줄친 부분)가 나오면, VRDE가 설치되어 있는 상태입니다.

    Extension Packs: 1
    Pack no. 0:   Oracle VM VirtualBox Extension Pack
    Version:      4.2.16
    Revision:     86992
    Edition:
    Description:  USB 2.0 Host Controller, VirtualBox RDP, PXE ROM with E1000 support.
    VRDE Module:  VBoxVRDP
    Usable:       true
    Why unusable:

  3. 그 다음에는 VM을 생성하는 방법입니다. 아래 명령어를 통해서 VM을 생성할 수 있습니다. 아래 명령어를 사용하면 해당 이름을 가진 VM을 정의한 설정 파일을 세팅합니다.

    vboxmanage createvm --name "[VM의 이름]"

    해당 명령어를 입력했을 때 "Settings file"이라고 뜨면서 설정파일의 경로를 출력하게 됩니다. 아래의 명령어를 통해, 만들어진 설정파일을 VirtualBox에 등록합니다.

    vboxmanage createvm --name [설정파일의 경로명]


    아래 명령어를 통해서 등록된 VM의 리스트를 볼 수 있습니다.

    vboxmanage list vms


    • cf) 위의 생성 및 등록 과정을 다음 명령어를 통해 한번에 수행할 수도 있습니다.

      vboxmanage createvm --name "[VM의 이름]" --register

    • cf) 등록된 VM을 완전히 제거(등록상태, 설정파일 및 디스크 파일)하려면, 아래와 같은 명령어를 사용하면 됩니다.

      vboxmanage unregistervm "[VM의 이름]" --delete


  4. 이제 등록된 VM의 하드웨어를 설정해 주어야 합니다. 먼저 아래 명령어를 통해 기본 하드웨어(메모리, NIC, OS 타입)를 먼저 설정합니다. 또한 OS 설치를 위해, 부팅 순서를 DVD가 먼저되도록 설정합니다.

    vboxmanage modifyvm "[VM의 이름]" --memory [메모리의 크기(단위 : MB)] --acpi on --boot1 dvd --nic1 bridged --bridgeadapter1 eth0 --ostype "[OS 타입(64비트인지 지정가능) - 예) WindowsXP, WindowsXP_64]"

    • cf) OS 타입은 다음 명령어를 통해 알 수 있습니다. 명령어를 입력하면 VirtualBox에서 지원하는 운영체제의 리스트를 출력합니다. 해당하는 운영체제의 ID 값을 입력하면 됩니다.

    • vboxmanage list ostypes

    VM이 메인으로 사용할 디스크의 이미지를 새로 생성합니다.

    vboxmanage createvdi --filename [디스크 이미지의 경로및 이름] --size [디스크의 크기(단위 : MB)]


    VM에 IDE 컨트롤러를 추가합니다.

    vboxmanage storagectl "[VM의 이름]" --name "IDE Controller" --add ide


    방금 추가한 IDE 컨트롤러에 생성했던 디스크 이미지를 붙입니다. 그리고 운영체제 설치 CD 이미지 역시 붙여줍니다.

    vboxmanage storageattach "[VM의 이름]" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium [메인 디스크의 이미지 경로]
    vboxmanage storageattach "[VM의 이름]" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium [운영체제 설치 CD의 이미지 경로]


  5. 이제 VM을 켜면 됩니다. VM을 켜기 위해서는 다음 명령어를 입력하면 됩니다.

    vboxmanage startvm "[VM의 이름]" --type headless

    • cf) VM을 끄려면 다음의 두 명령어 중 하나를 입력하면 됩니다. 첫번 째는 아예 플러그를 빼는 것이고, 두번 째는 전원버튼을 한번 누르는 것입니다.

    • vboxmanage controlvm "[VM의 이름]" poweroff
      vboxmanage controlvm "[VM의 이름]" acpipowerbutton

  6. 이대로도 사용하시는데는 문제가 없지만, 원격 데스크톱시에 아이디와 비밀번호를 부여할 수 있습니다. 아래 명령어를 입력하시면 됩니다.

    vboxmanage setproperty vrdeauthlibrary "VBoxAuthSimple"
    vboxmanage modifyvm "[VM의 이름]" --vrdeauthtype external
    vboxmanage internalcommands passwordhash "[비밀번호]"
    vboxmanage setextradata "[VM의 이름]" "VBoxAuthSimple/users/[아이디]" [앞서서 passwordhash로 얻었던 비밀번호의 hash값]

 

이제 원격데스크톱으로 VirtualBox가 깔린 컴퓨터로 접속을 하면, VM의 화면을 보고 조작 하실 수 있습니다. (TIP : 만약, 아래의 화면처럼 원격데스크톱이 가상메모리 부족을 이유로 죽는다면, "자격 증명 저장 허용"란을 체크하고 다시 접속해 주시면 됩니다.)

 

 

  이상으로 터미널(SSH)만 사용가능한 서버환경에서도 Virtualbox를 자유자재로 사용하는 방법에 대해 살펴보았습니다. 다음 포스팅은 임베디드 환경에서의 가상화 하이퍼바이저인 Xen-ARM에 대해 다뤄보도록 하겠습니다.

 

참고문헌

[1] Virtualbox Vboxmanage manual site. https://www.virtualbox.org/manual/ch08.html