Computer >> 컴퓨터 >  >> 소프트웨어 >> 가상 머신

VirtualBox 스크린샷 깔끔하게 찍는 방법 - VBoxManage 명령어 활용 가이드

VirtualBox로 가상 머신 안에서 다양한 설치와 작업을 수행하다 보면, 그 과정을 기록하기 위해 스크린샷을 찍고 싶어지는 순간이 옵니다. VMware 계열의 가상화 제품이라면 시스템 메뉴에 스크린샷 기능이 기본으로 포함되어 있어 아주 간단하지만, 안타깝게도 VirtualBox에는 이런 옵션이 없습니다.

그렇다면 호스트 운영체제의 도구를 사용해야 합니다. 각종 캡처 프로그램이나 PrtScrn, Alt+PrtScrn 같은 키 조합을 활용하는 방식이죠. 하지만 여기서 큰 문제가 하나 있습니다. VirtualBox는 자체 인터페이스의 일부를 게스트 운영체제 화면 영역처럼 취급하기 때문에, 스크린샷에 지저분한 테두리가 함께 찍히게 됩니다.

문제의 본질

정리하면 이렇습니다. 공유 폴더를 설정하거나 가상 머신 내부에서 호스트로 이미지를 복사·붙여넣는 번거로운 과정 없이, 외부에서 게스트 시스템의 스크린샷을 깔끔하게 캡처하고 싶은 것입니다. 즉, VirtualBox의 내부 테두리를 제외하고 순수한 게스트 화면만 담아내는 기능이 필요합니다.

결론부터 말씀드리면, 가능합니다. VirtualBox 4.0 버전부터 제공되는 기능을 활용하면 되는데요, 지금부터 그 방법을 자세히 알아보겠습니다.

기존 방식의 한계

SnagIt, IrfanView, GIMP, Gnome Screenshot, KSnapshot 등 어떤 캡처 도구를 사용하든 결과는 마찬가지입니다. VirtualBox 창을 캡처했다는 사실을 드러내는 위아래 테두리가 항상 따라 붙습니다. 예를 들면 다음과 같은 형태죠.

이건 상당히 거슬립니다. 실제로 필요한 것은 파란색 화면 영역뿐인데, 매번 일일이 잘라내야 하니 소중한 시간만 낭비됩니다. 다행히 간단한 대안이 있으며, 다만 VirtualBox 명령줄을 사용해야 한다는 점이 조금 생소할 수 있습니다.

해결책: VBoxManage 명령줄 활용

이 기능은 VirtualBox 4.0 이상 버전에서 사용할 수 있으므로, 그 이전 버전에서는 동작하지 않습니다. 사용 방법은 다음 명령어 하나면 충분합니다.

VBoxManage controlvm <vm name> screenshotpng <filename>.png

이것이 전부입니다. <vm name>에는 가상 머신의 이름을, <filename>에는 나중에 스크린샷을 구분할 때 사용할 임의의 문자열을 넣으면 됩니다.

Ubuntu Lucid를 예로 들면 다음과 같습니다.

스크립트로 자동화하기

매번 명령줄에 직접 접속해서 명령어를 입력하는 대신, 이 과정을 부분적으로 자동화할 수도 있습니다. 첫째, 명령어를 대신 실행해 주는 스크립트를 만들 수 있습니다. Windows에서는 배치(BAT) 파일로, Linux에서는 BASH 스크립트로 구현해 보겠습니다. 둘째, 이미지 이름에 범용 식별자를 사용하면 매번 파일명을 직접 입력할 필요가 없습니다. 환경 변수 RANDOM이나 타임스탬프가 좋은 선택입니다. 마지막으로, 바탕화면이나 애플리케이션 패널에 바로 가기를 만들고 단축키 조합을 지정하면 더욱 편리하게 호출할 수 있습니다.

Windows 예시

Windows에서 명령줄을 사용하는 것이 낯설게 느껴질 수 있지만, 생각보다 간단합니다. 기본기를 익힌 후에는 배치 파일 작성으로 넘어갈 수 있습니다.

이미지 이름을 코드에 고정해 넣거나, 시간·날짜 문자열 또는 난수처럼 실행할 때마다 고유한 값을 생성하는 방식을 사용할 수 있습니다. 그런 다음 명령어를 대신 실행해 주는 간단한 배치 파일을 작성하면 됩니다.

echo off

"<full path to VBoxManage.exe" controlvm <vm name> screenshotpng <filename>.png

실제 예시로 Windows 8 게스트를 들어보겠습니다. 가상 머신용 배치 파일을 만들어 이미지 이름 뒤에 난수를 붙여 고유성을 확보합니다. 이미지는 Share 디렉터리에 저장하지만, 원하는 경로는 무엇이든 사용할 수 있습니다. 마찬가지로 가상 머신 이름도 코드에 고정하거나 입력 인자로 전달할 수 있습니다.

echo off

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" controlvm Windows-8 screenshotpng C:\Share\image-%random%.png

마지막으로 바로 가기를 만들어 적절한 위치에 놓은 뒤, 속성에서 단축키 조합을 지정하면 됩니다. 이렇게 하면 작업 속도와 편의성이 크게 향상됩니다.

Linux 예시

Linux에서는 더욱 간단합니다.

단 한 줄만 담긴 간단한 스크립트를 만들면 됩니다.

#!/bin/bash
VBoxManage controlvm <vm name> screenshotpng ~/image-`date +%s`.png
exit 0

실행 결과로 홈 디렉터리에 1970년 이후 경과된 초 단위 시간이 파일명에 붙은 이미지들이 생성됩니다. 가상 머신 이름을 스크립트에 고정해 넣을 수도 있고, 입력 인자로 전달할 수도 있지만 이 경우 실행 시 상호작용이 필요합니다. 또는 프로세스 테이블을 파싱해 현재 실행 중인 가상 머신의 이름을 자동으로 찾아내면 완전 무인 동작 스크립트도 만들 수 있습니다. which 명령어로 VBoxManage 바이너리의 전체 경로를 감지하는 방법도 유용합니다.

그다음 바로 가기를 만들면 됩니다. 예를 들어 GNOME에서는 상단 패널에 사용자 지정 런처를 추가하고, 명령 필드에 스크린샷 스크립트의 전체 경로를 입력하면 됩니다. 이렇게 하면 메뉴 옵션을 실행하는 것과 거의 동등하면서도 어쩌면 더 빠른 자동화 솔루션이 완성됩니다. 다양한 방법이 있지만, 이 정도면 시작하기에 충분합니다.

추가적인 장점

이 방법에는 외부 유틸리티에는 없는 또 다른 장점이 있습니다. 게스트 화면이 호스트 모니터에 일부만 보이는 경우라도, 게스트 화면 전체 내용을 캡처한다는 점입니다. 따라서 호스트와 게스트의 해상도가 다르거나, 멀티 모니터 환경이거나, 가상 머신을 창 모드로 실행하더라도 불편한 잘림 현상 없이 캡처할 수 있습니다. 예를 들어 Windows 8 가상 머신의 가로·세로 스크롤바를 확인해 보세요. 화면에 보이는 것보다 더 많은 내용이 있다는 뜻인데, 이 캡처 기능이 바로 그 문제를 해결해 줍니다.

마무리

지금까지 VirtualBox에서 가장 성가신 문제 중 하나인 가상 머신 스크린샷 관리 방법을 알아보았습니다. 명령줄을 조금만 활용하면 스크린샷 캡처 작업을 거의 100% 자동화할 수 있습니다.

이 튜토리얼은 VirtualBox와 스크린샷에 초점을 맞추고 있지만, 동시에 유연하게 사고하는 방법, VirtualBox의 강력한 명령줄 관리 기능, 스크립트와 바로 가기, 단축키 조합을 활용해 업무 효율을 높이는 노하우도 함께 다룹니다. Windows와 Linux 양쪽 모두에서, BASIC과 BASH 모두에서 잘 동작합니다. 즐겁게 활용해 보시기 바랍니다.