와인 (소프트웨어)

개요

이름 ‘Wine’은 “Wine Is Not an Emulator”(와인은 에뮬레이터가 아니다.)에서 딴 재귀 약자이다. 사실 와인은 에뮬레이터보다는 호환성 계층에 더 가깝다. 이름을 대문자 혹은 소문자의 형태로 다 나타내기도 하지만, 개발자들은 미관상의 이유로 “Wine”을 권장하고 있다. 이름에서 알 수 있듯이 개발자들은 와인을 윈도우 에뮬레이터라기보다는 유닉스 계열 운영 체제에서 윈도우에서 제작된 바이너리 프로그램을 해독하는 계층이며, 와인 소개글과 홈페이지에서 이를 강조하고 있다.
와인은 LGPL로 배포되는 자유 소프트웨어이다. 와인은 원래 MIT 라이선스로 배포되었지만, Cedega같이 상용 버전의 와인이 프로젝트에 보답을 하지 않을 것을 우려하여, 2002년 3월부터 LGPL로 배포되었다.
12년간의 개발 끝에 2005년 10월 24일 와인 개발자들은 와인의 첫 베타 버전 0.9를 내놓았다. 이후 2010년 5월 ~ 7월 중순 사이에 1.1.x 베타 버전 다음으로 1.2-RC 버전이 꾸준히 업데이트가 이루어졌다.
2008년 6월 17일, 프로젝트가 진행된 지 15년째에 Wine의 첫 번째 안정 버전인 1.0이 출시됐다, . 2010년 7월 16일, Wine의 두 번째 안정 버전인 1.2가 출시됐다.

개발

Bob Amstadt(초기 프로젝트 관리자)와 Eric Youngdale은 1993년 리눅스에서 윈도우 프로그램을 구동시키기 위해서 와인 프로젝트를 시작했다. 원래는 윈도우 3.x용 프로그램을 위해서 개발되었지만 현재는 32비트 및 64비트 윈도우용 프로그램을 실행시킬 수 있다. 이 프로젝트는 유즈넷의 comp.os.linux에서 처음 알려졌다. Alexandre Julliard가 1994년까지 프로젝트를 이끌어 갔다. 에뮬레이터로 작동하기보다 호환성 계층으로 작동하는 와인은 윈도우 프로그램이 사용하는 DLL의 또 다른 구현을 제공한다. 와인 개발자들은 리눅스를 위해서 프로그램을 만들었으나 곧 FreeBSD, 솔라리스로 이식되었다 .
Win32 API의 문서가 완전하지 않았기 때문에 시간이 많이 걸리고 난이도가 높았다. 마이크로소프트가 Win32 표준을 문서화시킨 것이 있지만 파일 형식이나 프로토콜 같은 것은 문서가 제대로 되어 있지 않았고 심지어는 똑같이 작동하게 만들어야 할 버그도 있었다. 그래서 와인 팀은 역공학을 사용해서 함수와 파일 형식을 분석했다.
코렐은 많은 것을 도와 주었다. 코렐은 워드퍼펙트 오피스를 리눅스 플랫폼으로 옮기는 것에 관심을 보였다. 하지만 마이크로소프트가 이 회사에 투자한 이후로 리눅스 버전의 개발이 중단되었다. CodeWeavers에서 많은 현재 와인 개발자를 채용하였고 크로스오버라는 와인의 상용 버전을 만들기 시작했다.
개발 버전은 2주마다 한 번 업데이트된다.

구조

와인은 커널 모듈이 아닌, 사용자 공간에서 완전한 윈도우 API를 구현한다. 윈도우 커널에서 제공하는 서비스는 일반적으로 wineserver라는 데몬에 의해 제공된다. wineserver는 기본 윈도우의 예외로 기본적인 윈도우 기능뿐만 아니라, X 윈도 시스템과 통합 및 신호 변환을 구현한다. 와인은 윈도우 커널의 일부를 구현했지만, 그것만으로 네이티브 윈도우용 드라이버를 와인의 기본 구조로 인해 사용할 수 없다. 이것은 복사 방지 작업에서 특정 프로그램의 동작을 방해한다.

유용성

와인에서 다이렉트3D를 지원하도록 한 개발자는 픽셀 세이더 같은 새로운 특징에 대한 개발을 완료했다고 밝혔다. 와인은 또한 더 많은 프로그램을 구동시키기 위해 윈도우의 네이티브 DLL을 직접 사용할 수 있지만 프로그램 자체에서 DLL을 가지고 있지 않으면 윈도우 라이선스가 필요하다.
winecfg은 와인에 포함되어 있는 GUI 설정 프로그램이다. Winecfg는 직접 레지스트리를 수정하는 것을 필요하지 않게 함으로써 와인 설정을 쉽게 한다. 필요하다면 윈도우의 Regedit와 비슷하면서도 더 가벼운 레지스트리 에디터를 쓸수 있다(와인에 포함됨). 와인은 또한 메모장, 워드패드, 제어판, 윈도우 탐색기, 인터넷 익스플로러 같은 윈도우 프로그램의 오픈소스 도구를 포함하고 있다.
AppDB는 와인에서 윈도우 프로그램이 얼마나 잘 동작하는지 커뮤니티에서 테스트한 목록이다.

하위 호환성

와인은 윈도우 3.1용으로 작성된 것을 비롯하여 오래된 윈도우용 응용 프로그램과 좋은 하위 호환성을 보장한다. 와인은 윈도우 2.0을 요구하는 몇몇 프로그램도 구동할 수 있다.
윈도우를 최신 버전으로 업그레이드 할 경우 사용자가 기존에 사용하던 프로그램 중 일부를 업그레이드해야만 하는 것에 비해, 와인의 하위 호환성은 윈도우보다 우수하다. 많은 경우에, 와인은 "호환성 모드"로 윈도우의 최신 버전보다 더 오래된 프로그램에 대한 지원을 제공할 수 있다.
와인은 64비트 CPU를 사용하는 64 비트 운영 체제에서 16비트 윈도우용 프로그램을 실행할 수 있다. 마이크로소프트 윈도우의 64비트 버전은 16비트 윈도우용 프로그램을 구동할 수 없다.
와인은 부분적으로 윈도우 콘솔 응용 프로그램을 지원하여, 사용자는 콘솔 관리를 사용하기 위해 백엔드를 사용할 것인지 선택할 수 있다.(선택에는 Raw streams, curses, user32가 있다)
raw streams나 curses 백엔드를 사용할 때, 윈도우용 응용 프로그램은 유닉스 터미널 위에서 동작한다.

64비트 응용 프로그램

64비트 윈도우 프로그램을 위한 예비 지원은 2008년 11월에 와인 1.1.10부터 되었다. 이것은 보통 최신GCC 버전 4.4를 필요로하며, 와인 개발자들은 이것이 안정버전으로 지원하기 전까지 중요한 시간이라고 기대한다. 그러나 거의 모든 윈도우 프로그램은 32비트 버전으로 존재하며, 32비트 버전의 와인은 64비트 플랫폼에서도 동작하기 때분에 이것을 문제로 보지는 않는다.
와인의 64비트 포트 또한 예비로WOW64를 지원한다. 2010년 5월에, 32비트와 64비트 윈도우 프로그램은 같은 와인 단계에서 동작하는 것이 허용되어 있다.

다른 운영 체제에 포팅

와인은 원래 리눅스용으로 개발되었지만, Mac OS X, FreeBSD와 솔라리스로 쉽게 포팅할 수 있다. 와인 오픈 BSD 포팅으로 OpenBSD와 NetBSD에서도 사용할 수 있다. 그리고 NetBSD의 pkgsrc에서도 가능하다. 2010년 10월부터 와인도 Winelib로 사용할 때 ARM 플랫폼에서 작동한다(개발자들이 라이브러리로 와인을 사용하여 리눅스에서 윈도우 소스 코드를 컴파일 할 수 있다). 와인 DLL의 몇몇 버전은 마이크로소프트 윈도우에서도 사용 가능하지만, 아직 와인은 완벽하게 윈도우에서 동작하거나 컴파일되지 않는다.

보안

윈도우 바이너리 코드를 실행하는 와인에 의해, 네이티브 윈도우 바이러스 및 악성 코드가 유닉스 계열 운영 체제에 영향을 끼쳐서 시스템이 파괴될 수 있는 문제가 발생한다. 와인은 윈도우 바이러스를 실행할 수 있으므로, 와인에서 실행되는 프로그램은 바람직하지 않은 결과를 제한하기 위해 현재 사용자의 권한으로 제한하고 있다. 이것은 와인이 관리자 권한으로 실행되지 않을 것이라는 이유 중 하나다. ZeroWine같은 멀웨어 연구 소프트웨어는 완전히 호스트 시스템에서 격리된 악성 코드를 유지하기 위해 가상 머신에 있는 리눅스에서 와인을 실행한다.