E D R , A S I H C RSS

와인(소프트웨어)

last modified: 2014-10-11 15:51:55 by Contributors

Contents

1. 개요
2. 이름
3. 특징
4. 현실적인 어려움
5. 역사
6. 반론
7. 호환성
8. 변형 버전
9. Wine에서 실행되는 게임들
9.1. 동방 프로젝트
9.2. Nscript 기반 비주얼 노벨
9.3. 국내 동인게임
9.4. 바실리어트 기반 비주얼 노벨
9.5. 뿌요뿌요2
10. 비슷한 것



1. 개요


Wine.png
[PNG image (48.31 KB)]


오픈소스 윈도우즈 API 호환 라이브러리.
공식 사이트는 여기.

Mac OS X, 리눅스 지원. 라이센스는 처음에는 MIT를 썼다가 Cedega가 와인을 이용하여 DirectX를 자체 구현하고 소스코드를 비공개하자 이를 막기 위해 LGPL로 변경.

2. 이름


Wine의 의미는 Wine Is Not Emulator. 이니셜이지만 첫 글자만 대문자로 쓰도록 하고 있다. 직역하면 "Wine은 에뮬레이터가 아닙니다." 사실 초기에는 WINdows Emulator가 맞았지만, 나중에 위와 같이 바뀌었다.[1] 그래서 우분투 8.04까지의 지원 명칭은 Wine Windows Emulator였다가 8.10부터는 지원 명칭이 Wine Microsoft Windows Compatibility layer로 바뀌었다. Wine 측에서 투덜댄 모양. 하기사 WWE는 Wine의 뜻과 정면충돌하니. 변경된 명칭을 대충 직역해 보자면, “Wine MS Windows 호환성 (제공) 계층(영역)”이라고나 할까. 하여간 에뮬레이터란 단어는 절대 안 쓴다. 설명문에서도 Emulator 대신 C.layer로 죄다 바꿔놨다.

3. 특징


저런 괴악한 이름을 가진 이유는, 일반적인 에뮬레이터는 코드를 CPU에 바로 먹일 수 있는 명령어로 번역하는것과 달리, Wine은 코드를 주 운영체제가 처리할 수 있도록 번역해서 운영체제에게 먹여주기 때문이다. 에뮬레이터의 정의를 어디까지로 보느냐에 따라 달린 문제지만, 어쨌든 일반적으로 생각하는 그런 에뮬레이터는 아니라는 소리.

이런 특징으로 얻을 수 있는 장점은, Wine이 다른 플랫폼(그러니까 쉽게 말하자면 다른 운영체제)에 돌아가게 하기 위해 삽질을 덜 할 수 있다는 점이다. 뒤에서도 나오겠지만, Wine이 영향을 미치는 분야는 리눅스뿐만이 아니고 맥에도 Wine을 활용한 예시가 있으며, 이론상 다른 운영체제에도 이식이 가능하다. 심지어 윈도 위에서도.#[2]

또 한 가지 장점은 Wine이 관리하는 프로그램이 어긋나보이지 않고 주 운영체제의 의도대로 움직여 주도록 할 수 있다는 것도 있다.

CPU 에뮬레이션을 하지 않는 것으로 생기는 다른 특징은 CPU 종류가 다르면 에뮬레이션도 안 먹힌다는 점이다. 윈도우 RT 이전에는 그래서 X86(64)계열 이외에는 깔아봐야 아무런 효과가 없었다. x86(64)외 다른 플랫폼에서 돌아가는 윈도우 CE도 있었지만 윈도우 CE와 본판의 윈도우는 API가 엄연히 달랐다. 굳이 써먹으려면 윈도우용 프로그램의 소스를 구해서 크로스컴파일을 해야 했던 것. ARM 아키텍쳐는 나중에 여유가 되면 윈도우CE의 API도 포팅하자고 일단 실증실험만 하고 있었는데...마이크로소프트측에서 윈도우 8 RT를 내놓으면서 프로그래머의 노가다를 약간이나마 줄여보자고 API를 통일[3]시켰더니, 윈도우 RT용 프로그램이 Wine에서 돌아가게 되는 결과가 나타났다(...)

자유 소프트웨어이므로 소스 코드를 구할 수 있고 직접 수정할 수 있고 이를 재투고해서 성능 향상에 기여할 수 있다. 당신이 Geek라면 말이다.

4. 현실적인 어려움


Wine의 일차적인 목표는 다음과 같다. 윈도 프로그램을 돌리기 위해서 윈도에서 제공하는 API를 똑같이 제공한다.

이 목표를 달성하기 위한 가장 쉬운 방법은 윈도의 바이너리 코드(*.dll, *.exe파일)를 까서(역어셈블해서) 필요한 코드를 취한 다음 필요에 맞게 변형하면 된다. 하지만 이게 안 되는 게 저작권 분쟁을 피하기 위해서는 동일한 코드가 들어가면 안 된다는 것이다.[4] 그래서 Wine측에서는 윈도 API에 대해서 API 문서나 MS의 지원 페이지는 열심히 참고할 수 있고, 코드에 대해서 여러가지 실험을 해 볼수도 있지만, 코드를 까서 보는 것은 안되며, 지원 페이지 중에서도 API가 구현된 방식에 대해서 설명된 것은 보지 못하도록 규칙을 정하고 있다.

그렇다면, 어차피 API는 프로그램 제작자를 위해 깔끔하게 정리돼 있으니까, 각 파일에 대해서 API 문서에 규격화된 대로 구현만 하면 될까? 그것도 여의치 않다.

  • 윈도 프로그램을 돌리기 위해서는 윈도에서 제공하는 API를 그대로, 정말 있는 그대로, MS에서 잘못 만든 버그마저(!) 똑같이 구현해야한다. 버그가 없으면 더 좋은 것 아니냐고 생각할 수 있겠지만 API는 알고리즘 구현보다는 화면에 비치는 쪽에 더 가까운 부분이기에, 프로그램 개발자 입장에서 이런 버그 때문에 덧댄 부분이 의도치 않게 동작할 수도 있고, 생각없이 버그가 정상적인 결과인 줄 알고 버그를 활용했을 수도 있고, 다른 버그를 가리기 위한 어쩔 수 없는 수단으로 이 버그를 활용했을 수도 있다.
  • 또 응용 프로그램 개발자들이 얌전히 윈도 API만을 써서 만드는 게 아니라, 하드웨어를 직접 조작하는 요령을 부린 프로그램들도 있다. 이러면 호환성은 떨어져도 성능 면에서 이득이기 때문이다.

게다가 어느 정도 만들면 윈도우 다음 버전이나 서비스팩에서 새 API가 쏟아져 나온다는 점까지(…)

5. 역사

이런 어려움 때문에 개발기간이 킹왕짱 길다. 그나마 다행인 건 갈수록 나아지기는 한다는 점. 윈도우즈3.1 시절부터 개발을 시작해서 뭐 1~2년 하는 것도 아니고 15년만에 베타 버전이 종식됐다.[5] 그래도 제작자들이 끈기있는 개발을 하여 2주에 한 번씩 베타 버전을 만드는 원칙은 잘 지켜졌다.

2008년 중반에 들어 드디어 첫 공식 버전을 만들었다. 제작자들 말로는 약 3000개의 프로그램을 지원한다고 하며, 월드 오브 워크래프트문명 4, 스타크래프트, 스팀[6]등 상당수의 유명 외산 게임은 안정적으로 지원한다. 굳이 게임이 아니더라도 한글 2010이라든지, 게임을 하지 않아도 윈도를 버리지 못하게 하는 프로그램들도 많이 지원한다. 이후로도 버전은 계속 나와, 2014년 10월 5일 현재 1.7.28 버전(개발 버전)까지 나와 있다.

Wine의 성능이 강화될수록 리눅스로 전향하기는 쉬워지고 마소는 똥줄이 타겠으나, 원체 잘 안 돌아가기도 해서 앞으로 15년을 추가적으로 개발해야 할지도 모르는 상황. 사실 윈도우 API를 관리/확장하는 '甲'이 자신들이므로 실질적으로는 별로 위협은 되지 않는 상태. 정 급해지면 다음 OS에서 신 API 제공이나 기존 API의 기능 교정/확장을 해버리면 되기도 하고... 사실 매 윈도우 버전/서비스 팩마다 WIN32 API의 기능은 확확 불어나고 있다. 게다가 64비트 버전도 나온 요즘에는 WIN64 API도 있으니…

6. 반론

OS/2의 사례를 들면서 윈도와의 호환성이 오히려 독이 될 수도 있다는 반대 의견도 만만치 않다. 굳이 호환성이 뛰어나다면 리눅스용 프로그램을 만들 필요가 없게 되고, 그래서 리눅스 생태계가 말라죽을 수 있다는 것. 윈도와 리눅스가 특징이나 주 사용층이 워낙 다르기에 상황이 그렇게만 돌아가지는 않겠지만 두고봐야 알 수 있는 문제. 리눅스를 쓰는 이유가 단순히 리눅스용 어플리케이션을 사용하는 것은 아니기에 꼭 독이 된다고 볼수는 없다고 생각될수도 있다.

7. 호환성

appDB에는 wine과 응용프로그램을 호환시키기 위해 사용자들이 한 삽질이 기록되어 있다. 이를 나누어 플래티넘 - 골드 - 실버 - 브론즈 - 쓰레기(작동 안됨)으로 나누어서 각각 어떻게 해야 작동하는지 영어로 써 두었으므로, 한방에 작동하지 않는다고 좌절하지 말고, 검색해서 무슨 설정을 해야 하는지 알아 보자.


그러나 국내의 모든 임가드유저 시스템 장악보안 프로그램을 사용한 온라인 게임은 지원할 수 없으며(게임가드가 정상적으로 시스템을 휘어잡지 못하므로 에러를 뿜고 실행이 안된다) 간단한 프로그램은 그럭저럭 돌아가지만, 아직도 안 돌아가는 프로그램이 많다. (애초에 1.0에선 포토샵과 MS오피스 정도를 제대로 돌리는 게 목표였다.)
게다가 DirectX 지원이 원활하지는 않은 편. 윈도우용 directX를 구해다 깔면 돌아가지만, 라이센스 문제가 있다.
근데 WOW는 어떻게 돌아가냐고? WOW는 OpenGL[8]로도 돌아간다. 그래서 잘 돌아간다.
특징 중의 하나로 예전 버전에서 잘 돌아가던게 다음 버전에서 안 돌아가다가 그 다음 버전에서 해결되는 경우가 대단히 많다.

그리고 하나 더 덧붙이자면 리눅스에서는 파일 이름이 대소문자를 구분하므로, 자칫하면 필요한 파일이 중복되는 문제가 있다. 예를 들어 어떤 프로그램이 program.exe를 호출한다고 가정하면, 그 폴더 내에 Program.exe와 program.exe가 동시에 존재할 수 있으므로(리눅스에서 저런 경우 둘은 서로 별개의 파일이다.) 문제가 발생할 수 있다. 특히 게임 등을 패치할 때 저런 문제가 자주 생기는데 고려하여야 한다. 가장 간단한 해결법은 패치 등은 윈도우즈에서 해주고 리눅스에서 윈도우즈 파티션을 마운트해 돌리는 것...인데...이럴거면 뭐하러 와인을 써 듀얼부팅하지 몇몇 경우는 게임 자체는 돌아가지만 패치를 위한 런쳐 등이 와인과 잘 맞물리지 않는 경우가 있다.


8. 변형 버전

Wine의 변형 버전이 몇 가지 있다.

먼저 Transgaming이라는 회사에서 개발하는 세데가(Cedega). 윈도우즈용 게임을 지원하는 데 특화된 물건인데 Wine이 MIT 라이센스를 따르던 시절 태어나 개발되면서 Wine의 소스를 잔뜩 가져다 써놓고 Wine 쪽에 공헌하는 게 없다든지 하는 것들 때문에 꽤 까였으며 Wine 쪽에서도 이에 빡돌아서(…) Wine의 라이센스를 LGPL로 바꿔 버렸다. 본래 상용이었으나 2009년 7.3버전을 끝으로 2011년 2월 28일에 결국 지원이 전면 중단되고, 소스는 전면 오픈소스로 공개되었다. 링크 소스 가져가 놓고는 기여하지 않은 게 부메랑이 되어 돌아온 셈.

또 하나는 CodeWeavers라는 회사에서 개발하는 크로스오버(CrossOver) 시리즈. 이쪽은 Mac OS X용과 리눅스용으로, 그리고 각각 스탠다드판과 프로판과 게임용으로 나뉜다. 이쪽은 세데가와 달리 Wine의 소스를 가져다 쓰는 대신 Wine 쪽 공헌과 함께 호스팅 지원을 착실하게 하고 있기 때문에 Wine과 좋은 관계를 유지하고 있다. 덕분에 Wine이 상당히 좋아져 CrossOver 대신 써도 된다. 이 돈독한 관계는 IGS케이브의 관계와 비교해도 손색이 없을 정도. 크로스오버도 마찬가지로 상용이며 가격은 12개월 이용권 신규 기준 59.95달러.

여담으로 리눅스윈도우즈를 하나로 합쳤다고 선전했린도우즈도 사실 리눅스에 Wine를 혼합해 만든 것이였다. 당시 윈도우즈의 프로그램은 잘 돌아가긴 했다. 그러나 마이크로소프트에 린도우즈 상표를 팔아 넘기면서[9] 스파이어로 바꾸었다. 자세한 내용은 린도우즈 문서를 참고할 것. 참고로 현재 이 OS는 망했다.

안드로이드 버전도 개발 중에 있다고 한다. 다만 현재로서는 '돌아간다'라는 데 의의를 둬야 할 정도의 성능이라고.시간이 답이다#

9. Wine에서 실행되는 게임들

리눅스에서 윈도우 프로그램을 실행할 수 있게 해 주는 Wine을 이용하여 플레이 가능한 게임 목록이다. 잘 알려진 게임들 중 Wine으로 실행 가능한 목록은 WineHQ AppDB에서 찾아볼 수 있으니 한번 훑어보자. 링크

9.3. 국내 동인게임

  • 절망희 Episode 1 (회상모드시 레터박스 처리 약간 부족하나 사운드까지 나옴)

9.4. 바실리어트 기반 비주얼 노벨

  • 하울링 드림 (wine 1.6 ubuntu 12.04에서 구동 확인)

9.5. 뿌요뿌요2

  • 실행이나 게임플레이는 가능한데 BGM 이 안 나온다(...)였는데.. 1.4버전 이후로 Wine에서 미디가 지원되기 시작했다. 만약 우분투 기준이라면 PulseAudio를 삭제한 후[10] Timidity라는 패키지를 설치하면 Wine에서 미디로된 음악을 들을 수 있다. 물론 뿌요뿌요2도 배경음이 나온다. 이는 에이지오브 엠파이어도 마찬가지.

다만, 사운드폰트가 윈도에서 듣던 것과는 다르니 음악 자체의 호불호가 많이 갈린다고 한다.



10. 비슷한 것

Wine과 비슷한 프로젝트로 리액트OS(ReactOS)라는 게 있다. 이쪽은 아예 윈도우즈라는 운영체제 자체를 클론해 버리는 프로젝트로 진도가 상당히 더디다. 원래는 Wine과 완전히 별개로 개발되고 있었지만 요즘은 Wine의 코드를 수혈했다. 본인들의 말에 따르면 많은 버그가 고쳐졌다고. 한때 베이퍼웨어가 될 뻔 하기도 했고 2013년 말 기준으로 아직 쓸만한 수준이 되려면 한참 멀었지만 최근 개발 속도에 탄력이 붙는 걸 보면 아주 희망을 버릴 수준은 아닌듯.

맥 OS X용으로 Cider[11]라는 프로그램이 존재하며, 이쪽은 윈도우로 출시된 게임을 맥 OS X으로 포팅할때 사용되는 상용툴이다. 아까 말했던 Transgaming이 만든 것으로,(...) Cedega 만들 적 Wine을 기반으로 독자적으로 계속 개발하고 있다. EA의 심즈2, 3가 맥용 버젼은 이 Cider를 이용해서 포팅되었다. 이외에도 스팀 등에서 맥/윈도우즈용 겸용 가능한 게임들을 잘 뒤져보면 이걸로 포팅된 게 상당히 많다.

안드로이드에서는 윈도우 프로그램을 안드로이드에서 돌리는 winulator라는 게 있다. 공식 홈페이지 다만 PC판 프로그램을 그대로 돌릴 순 없고, 따로 컨버팅된 파일을 SD카드 최상위 루트에 투척해야 쓸 수 있다. 그나마 돌리는 프로그램은 저3스타크래프트정도가 한계라고. 스타크래프트라도 돌리는게 어디야! Startagus스타크래프트 64따윈 필요없다! 히히히 오줌발사!

티맥스 윈도우라는 것도 있는데 이건...

----
  • [1] 법적 분쟁을 피하기 위한 수사학적 말장난 이외에도, 이런 회귀적 네이밍 센스는 오픈소스 진영에서 흔히 써먹는 패턴이다. GNU가 GNU is Not Unix이(라고 갖다붙이)듯이.
  • [2] 다만 아직은 어디까지나 이론상. 그러나 이론대로 착실히 구현돼 있다면 실행되는게 정상이라 조금씩 호환되도록 개선해나갈 가능성이 크다.
  • [3] 다들 알겠지만 그래도 망했다
  • [4] 실제로 ReactOS쪽에서 개발 중에 MS의 바이너리와 동일한 어셈블리 코드가 들어간 게 발견되는 바람에 털린적이 있다.
  • [5] 좀 더 정확히 말하자면, 12년동안 알파(…)가 나왔고 3년동안 베타가 나왔다. 최초의 정식 버전(Wine 1.0)은 개발 시작 15주년 기념(…)으로 릴리즈되었다.
  • [6] 단 아직도 스팀 자체를 완벽하게 소화하지 못하며, 개개의 게임은 지원이 불안정할 수 있다…고 해도 밸브 게임은 웬만하면 돌아간다. 하지만 스팀 맥 버전이 나오면서 반은 허사가 된 상태(…). 게다가 2012년 11월 7일 리눅스용 스팀이 공개되었다. 이젠 리눅스도 안전하지 않다
  • [7] 와인 공식 홈페이지에 의하면 2013년 2월 현재 문명5의 와인 호환성은 최상 등급인 플래티넘 등급으로서, 사실상 공식적으로 지원하고 있는 상태로 볼 수 있다.
  • [8] 맥용 클라이언트는 이 기반이다. 와우 말고도 맥용 네이티브 코드가 있는 게임들은 잘 돌아가는 경우가 많다.
  • [9] 처음에는 마이크로소프트가 린도우즈닷컴을 상대로 상표권 소송을 걸었지만 패소했다. 'windows'가 고유 명사이기 때문에 Linux와 Windows를 합친 Lindows가 MS의 상표권을 침해한 건 아니라는 것. 그래서 MS는 린도우즈닷컴과 협상을 벌여 20만 달러를 주고 상표권을 사들였다. 물론 MS가 Lindows 브랜드를 사용하려는 건 아니고 남들이 못 쓰게 봉인해 놓기 위함이었다.
  • [10] ALSA와의 문제로 PulseAudio를 통하면 가상신시사이저가 나오지 않는 문제가 있다.
  • [11] Wine + Apple = Cider 라는 패러디 이름일 가능성이 높다.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2014-10-11 15:51:55
Processing time 0.1740 sec