저자: 데이비드 HM 스펙터, 역 송종범
현 IT 환경에 관해 언급할 수 있는 긍정적인 점은 IT 전문가들이 적은 비용으로도 많은 것을 할 수 있다는 것이다. 이 말은 누구도 새로운 장비를 사기위해 예산을 편성하지 않아도 된다는 이야기처럼 들린다. 그도 그럴 것이 그만 둔 직원이 비싸게 주고 산 오래된 장비를 헐값에 팔아서 원래 가격을 메우기 때문에 수지를 맞추지 않아도 되기 때문이다.
아직까지 게임에 빠져 있고 제품과 서비스를 위해 수 많은 소프트웨어 설정을 시험해 봐야 하지만 새로운 하드웨어를 사거나 빌릴 여건이 안 된다면 어떻게 해야 하나? 소프트웨어 테스트를 위한 반복적인 설치와 삭제작업은 지루한 시간 낭비임에 틀림없다. 이번 기사에서는 약간의 시간과 디스크 공간을 제외하고 어느 것도 낭비하지 않으면서 장비들을 충분히 테스트할 수 있도록 도와줄 수 있는 소프트웨어 솔루션을 시험해볼 것이다.
A Ship in a Bottle
전에도 다루었듯이 리눅스에서 Vmware나 Win4Lin같은 상업적인 제품으로도 윈도우 시스템을 에뮬레이트할 수 있다. 특히 이는 마이크로소프트의 윈도우 같은 것에서만 실행되는 오피스 제품을 사용해야 할 때 또는 장비수를 줄이기 위해 많은 서버들을 가상 서버로 통합해야 할 때 아주 유용하다.
Vmware는 BSD나 리눅스류(Win4Lin는 단지 윈도우 에뮬레이터)를 실행하는 데에도 사용될 수 있다. 그러나 이 프로그램의 추상적인 하드웨어 인터페이스들은 단지 일반적인 하드웨어 장치만을 제공하기 때문에 만들 수 있는 설정의 종류가 줄어들 수 있다.
이것은 광범위한 소프트웨어 테스트를 제한할 수 있다. 따라서 여러분은 광범위한 하드웨어와 소프트웨어 설정을 확실히 해둘 필요가 있는데 고객이 사용할 수도 있을 것 같은 시스템이 여러분의 시스템에서도 잘 작동하도록 해두어야 한다.
일종의 에뮬레이트된 하드웨어나 소프트웨어에 대해 개발자들이 더 많은 통제권을 줄 수 있는 같은 장비에서 다양한 리눅스(또는 기타 운영체제)류들에서 실행 할 수 있는 여러 가지 도구들이 있다. 이런 도구들 역시 가상 머신과 얼마나 상호작용 하느냐에 따라 더 많은 제어도 허용하며 Vmware 환경에서는 불가능한 아주 복잡한 프로세스나 커널 디버깅도 가능하다.
이러한 시스템의 대다수가 오픈 소스이며 이에는 다음과 같은 세 가지 기본요소가 있다. PCI 슬롯이나 CPU 레지스터에까지 하위 단계인 실제적인 하드웨어 일부를 에뮬레이트 하는 하드웨어 에뮬레이터들, OS 에뮬레이터들, 기존의 UNIX/LINUX 프로세스들을 실행하고 에뮬레이팅하는 시스템 프로세스로 호환되는 API를 제공하는 bridge 라이브러리가 바로 그것이다.
일단 에뮬레이션과 관련된 모든 주제의 일부가 OS 에뮬레이터와 bridge 라이브러리이므로 이것들부터 다루도록 한다..
Bridge 라이브러리
Bridge 라이브러리들은 다른 시스템을 기능적으로 에뮬레이트하는 애플리케이션 프로그래밍 인터페이스(API, Application Programming Interfaces)를 호출하거나 작성하는 것을 허락한다.
CodeWeavers의 CrossOver Office는 그런 라이브러리를 잘 보여주는 예이다. CodeWeavers는 Win32 run-time 클론을 구현해냈다. 이는 윈도우 운영체제의 어느 부분도 인스톨하지 않아도 실행하는 윈도우 기반 응용프로그램(오피스나 파워포인트 같은)을 허용한다.
마이크로소프트사는 보다 많은 응용프로그램 지원 코드를 운영체제 안에 직접 포함시키기 때문에 특히 자사의 핵심 응용프로그램들(기술적으로 이것은 번들링(bundling, 끼워팔기)"이나 "타잉(tying, 묶어팔기)"이라고 불리며 마이크로소프트사에 대항하는 반 독점 중 하나)을 사용하는 동안은 다른 운영체제를 사용하지 못하게 하는 것으로 유명하기 때문에 이는 정말 놀랄만한 업적이다.
KDE나 다른 X11 기반 원도우 관리자가 x86 리눅스 박스에서 사용되는 동안 파워포인트를 실행해야 할 경우 CodeWeavers가 좋지만 시스템 레벨 에뮬레이션까지는 해결할 수 없으며 다른 시스템 설정으로 소프트웨어를 테스트해야 할 경우 많은 도움이 되지 않을 것이다.
OS 특정 에뮬레이터
다른 프로그램의 다양한 하위 집합들을 실행하게 해주는 메거니즘을 제공하는 Bridge 라이브러리와는 달리 특정 OS에 적합한 에뮬레이터는 소프트웨어 환경을 위해 완벽한 프록시를 제공하려 한다.
WINE
이와 같은 프로그램들 중 가장 유명한 것이 바로 WINE일 것이다. WINE은 Win32 API를 완벽하게 대체하며, 개발이 끝났을 때 머신에 윈도우를 설치하지 않고 x86에 기반한 윈도우 응용프로그램을 가능하게 해준다. 그저 데스크탑 윈도우 응용프로그램을 설치할 때 고생하고 싶지 않을 경우에만 유용하다. 하드웨어 에뮬레이터들과는 다르게 WINE은 전체 머신을 에뮬레이팅 하지않고 전형적인 X 윈도우 세션 안에서 윈도우 애플리케이션을 운영하게끔 한다.
DOSEMU
DOSEMU는 기본적으로 pre-1998 universe를 위한 것이다. Win32 API를 제공하는 대신, DOS API를 에뮬레이트 하며 MS-DOS와 같이 작동하는 FreeDOS도 따라온다. 이는 반드시 필요하지만 오래된 프로그램을 실행하는데 유용하며 확장된 (그리고 종종 아주 고가의) 윈도우 진영으로 업그레이드해야 하는 괴로움도 없다.
Hardware emulators
(어쨌든 이번 기사에서) 진짜 중요한 것은 전체 하드웨어 시스템을 에뮬레이트 하는 시스템에서 알 수 있다. 이런 시스템으로 여러분은 소프트웨어 개발이나 설정 테스트를 위해 에뮬에이트되는 것과 관련하여 시스템의 욕심을 채워줄 무한한 유동성을 가지게 된다.
Bochs
Bochs는 아마도 상업적인 제품인 Vmware과 가장 비슷한 오픈 소스 하드웨어 x86 하드웨어 에뮬레이터이다. Bochs는 I/O 장치들을 포함하여 모든 장치들을 에뮬레이트 하며 BSD, 리눅스나 윈도우를 운영하는 표준 시스템을 에뮬레이트할 필요가 있을 경우 좋다.
Bochs의 진정한 장점은 그것이 에뮬레이터란 점이다. 어느 UNIX/Linux 플랫폼에서도 작동한며 이는 PPC 리눅스 박스에서도 윈도우나 다른 x86 운영체제를 에뮬레이트할 수 있다는 것을 의미한다.
Plex86
Plex86은 Bochs와 같은 하드웨어 운영체제이다. (사실 Plex86은 Bochs 창시자인 케빈 도턴(Kevin Lawton)의 현 프로젝트) 그러나 하드웨어 에뮬레이션의 속도를 증가시키기 위해 x-86에 특화된 코드를 사용했기 때문에 더 상위의 에뮬레이션을 이룩할 수 있었다.
유저 모드 리눅스
유저 모드 리눅스 (UML, User-Mode Linux)는 에뮬레이터에 관한 한 스위스 군용칼에 비교할 수 있다. 이전의 하드웨어 에뮬레이터와는 조금 다르게 작동하며 호스트 컴퓨터에서는 실제로 없는 장비를 가진 것처럼 정의할 수 있게 해준다. 소프트웨어가 다양한 종류의 하드웨어에서 작동하는지 확인할 필요가 있을 때 밖에 나가 테스트 설정과 관련된 모든 하드웨어를 살 필요가 없으므로 이는 테스트에 아주 편리하게 사용된다.
UML은 머신 위의 콘솔 윈도우에 있는 다른 운영체제들도 "부팅"할 수 있도록 해주는 커널 패치 집합으로 구성된다. UML의 장점은 이러한 가상 운영체제들은 특권을 요구하거나 루트로 실행할 필요가 없다는 것이다. 이는 Joe User가 멀티 유저 머신이 충돌하는 위험을 감수할 필요 없이 고유한 프로세스로 몇몇 개의 "게스트" 운영체제를 실행할 수 있다는 것을 의미한다.
따라서 가상 시스템에서 X11도 운영할 수 있는 가상화된 프로세스는 완벽하다. X11가상 시스템 애플리케이션이 원래의 X 서버와 같은 데스크탑에 있기 때문에 특히 시스템들을 충분하게 운영하고 있다면 이것은 아주 혼란스러울 수 있다.
UML에 의해 사용되는 다른 도구들은 여러분이 실행하고자 하는 소프트웨어 시스템을 표현하는 부트 디스크 이미지를 만들 수 있게 해준다. 이는 물론 훌륭한 리눅스 시스템처럼 테스트 되는 소프트웨어를 설치할 수 있으며, 필요한 소프트웨어에 접근하는 네트워크를 사용하는 ship-in-a-bottle을 가질 수도 있다.
이상으로 언급한 모든 시스템들 중에 UML이 아마 가장 강력하고 완벽하면서 복잡할 것이다. 진한 커피와 설탕이 필요한 아주 유용한 세션으로 유저 모드 리눅스 문서는 UML 사용상 필요한 모든 것을 알 수 있기 때문에 추천할 만하다.
결론
지난 20년간 보여준 기술 예산 삭감이 술값보다 작은 돈으로 아직도 훌륭한 작업을 할 수 없다는 것을 의미하는 것은 아니다. 위에서 언급한 재능 있는 이들 덕택에 우리는 성과를 얻을 수 있었고 아마도 어떤 새로운 것을 배울 수 있었으며 경쟁력 있는 기술들로 작업할 수 있었을 것이다.
리소스
일반용 에뮬레이터
윈도우용 에뮬레이터
데이비드 스펙터(David HM Spector)는 뉴욕에 있는 인프라스트럭처와 제품 개발을 하는 Really Fast Systems, LLC의 회장이자 최고 경영자이다.