기본 콘텐츠로 건너뛰기

윈도우 소프트웨어를 리눅스에서 구동하기 위한 3가지 방법

리눅스가 상승세를 타고 있다. 스팀에서는 1,000여 가지의 리눅스 게임을 제공하고 있고 데스크톱 소프트웨어 역시 점점 더 웹 기반으로 이전하게 되면서 윈도우에 대한 수요는 줄어드는 추세다. 이제는 별 어려움 없이 리눅스에서 넷플릭스(Netflix) 비디오를 볼 수 있을 뿐 아니라 심지어는 웹 버전의 마이크로소프트 오피스를 리눅스에서 사용하기도 한다.

그럼에도 불구하고, 리눅스 데스크톱을 사용해본 사람이라면 알겠지만 언젠가 한번은 윈도우 소프트웨어가 없는 것이 사무치게 아쉬운 순간이 찾아오곤 한다. 물론 해결책은 얼마든지 있자. 리눅스에서 윈도우 소프트웨어 사용하기 위한 방법을 알아보자.

와인(Wine)
와인을 사용하면 윈도우 OS 없이도 리눅스에서 윈도우 소프트웨어를 사용할 수 있다.

와인은 오픈 소스 “윈도우 호환 레이어”로써 리눅스 데스크톱에서 바로 윈도우 프로그램을 사용할 수 있게 해준다. 와인은 OS를 설치하는 대신, 윈도우 애플리케이션 구동에 필요한 OS 요소들을 재실행하는 원리로 동작한다.

이러한 원리는 윈도우 복제본을 필요로 하지 않는 유일한 방법임엔 분명하지만, ‘모든’ 애플리케이션을 적절하게 구동하지는 못한다는 단점도 있다. 특히 비디오 게임을 실행하는 경우 버그나 퍼포먼스 문제가 자주 발생했다. 다행히도 월드 오브 워크래프트(WoW)와 같이 출시 수 년이 지나 안정화가 이뤄진 인기 게임들의 경우에는 실행에 큰 문제는 없었다. 와인 애플리케이션 데이터베이스(Wine Application Database) 웹사이트를 방문하면 와인의 애플리케이션 구동 원리나 현재 지원되는 애플리케이션들에 관한 정보를 얻을 수 있으니 참고해보자.


플레이온리눅스의 와인 버전을 우분투에서 실행하는 모습

와인의 사용법은 다음과 같다. 먼저, 리눅스 배포자의 소프트웨어 저장소에서 와인을 다운로드하자. 설치가 완료되면 이제는 윈도우용 .exe 파일을 다운로드 하는 것이 가능해진다. .exe 파일을 더블클릭 하면 와인을 통해 그것을 구동할 수 있다. 와인을 보다 쉽고 즐겁게 사용하고 싶은 사람이라면 인터페이스 애플리케이션 플레이온리눅스(PlayOnLinux)를 함께 이용하는 것도 좋은 방법이다. 윈도우 기반의 각종 인기 프로그램과 게임을 보다 편리하게 설치할 수 있게 될 것이다.

코드위버스(Codeweavers)는 와인의 상용 버전, 이른바 크로스오버 리눅스(CrossOver Linux)를 발표하기도 했다. 유료 서비스이긴 하지만, 주요 윈도우 애플리케이션들(마이크로소프트 오피스, 어도비 포토샵, 그리고 주요 PC 게임들)에 대한 공식 지원이 보장되고 또 실제 성능도 준수하다. 서비스의 변경 내용이 오리지널 와인 프로젝트에도 반영된다는 점 역시 흥미로운 부분이다.

가상 머신
가상 머신은 리눅스 PC에서 윈도우 소프트웨어를 구동하는 매우 편리한 방법이다. 하드웨어 성능의 발전으로 이제는 가상 머신으로도 충분히 가벼운 구동 경험이 가능해졌다.

이를 위해선 우선 버추얼박스(VirtualBox)나 VM웨어(VMware), 혹은 리눅스의 내장 커널 기반 가상 머신(KVM) 솔루션에 윈도우 복제본을 설치해야 한다. 솔루션 안에서 복제본은 자신이 실제 하드웨어에 위치하고 있는 것으로 인식한다. 현대적인 가상 머신들은 여기에서 나아가 가상 머신 상에서 구동되는 윈도우 프로그램을 머신 외부로 꺼내, 사용자의 리눅스 데스크톱에서 일반적인 윈도우를 이용하는 것과 같은 경험을 제공하기도 한다.


우분투 리눅스 내 버추얼박스

가상 머신은 와인보다 단순한 솔루션이라 할 수 있다. 실제 윈도우 복제본 상에서 윈도우 애플리케이션을 구동하는 것이기 때문에, 버그 발생의 위험이 없다는 장점도 있다.

하지만 윈도우의 복제본을 이용한다는 자체가 야기하는 어려움은 참고할 필요가 있다. 가상 머신이란 개념은 기본적으로 제1 OS가 있는 상황에서 윈도우 복제본을 추가적으로 구동하는 구조이기에, 하드웨어를 다루는 골치 아픈 과정을 거쳐야 한다. 특히 컴퓨터의 그래픽 카드에 접근해야 하는 고사양 PC 게임들의 경우에는 아예 실행이 불가능하다(이들의 경우 와인이 보다 나은 옵션이다). 하지만 MS 오피스나 어도비 포토샵 등의 생산성 앱을 실행하는데 있어서는 더할 나위 없는 방식임에 분명하다.

듀얼 부팅
기술적인 측면에서 보면 듀얼 부팅은 리눅스 자체에서 윈도우 소프트웨어를 구동하는 방식으로 보기 어렵지만, 윈도우 소프트웨어를 필요로 하는 많은 리눅스 사용자들이 선택하는 현실적인 방법이다. 이 방식은 리눅스에서 곧바로 적용이 어려우며, 대신 컴퓨트를 리부트 해 윈도우를 선택한 뒤 MS의 OS로 부팅에 들어가는 원리로 동작한다. 이 과정을 거치면 윈도우 소프트웨어를 기본 환경에서 동작할 수 있게 된다. SSD 시장이 최근 보여준 성장은 리부트 과정을 더욱 신속하게 만들어줬다.


듀얼 부팅 설정에서의 리눅스 설치 과정

댓글

이 블로그의 인기 게시물

보안 공부 링크

SSLsplit - SSL/TLS기반의 네트워크 포렌식 및 침투테스트(중간자공격) 도구 http://www.roe.ch/SSLsplit 가상화 서버운영 및 구축을 위한 Xenserver가 오픈소스로 공개 http://www.xenserver.org/ Python과 Fabric를 사용한 SSH 봇넷 C&C 구축 예제 http://raidersec.blogspot.kr/2013/07/building-ssh-botnet-c-using-python-and.html 파워쉘을 이용한 비밀번호 정보 획득 http://www.obscuresecurity.blogspot.kr/2013/07/get-gpppassword.html niktoHelper - Nmap의 Grepable형식을 Nikito와 연동하기 위한 파이썬 스크립트 http://milo2012.wordpress.com/2013/07/07/niktohelper-bridge-between-nmap-grepable-output-and-nikto/ 루비를 통한 심도있는 XSS 방어 방법 http://homakov.blogspot.com.es/2013/07/xss-defense-in-depth-with-rackrails-demo.html IT관련 E-Book 모음 http://www.cyberhades.com/2013/07/04/unos-libritos-tecnicos-para-el-veranito JJEncode 스크립트 분석 http://www.kahusecurity.com/2013/jjencode-script-leads-to-drive-by/ 웹브라우저 호환성 검증 및 분석결과 제공 http://www.modern.ie/ko-kr/ http://browsershots.org/ html 색상 선택 도구 https://kuler.adobe.com/create/color-wheel/ Windows 메모리 보호 메커니즘 http://resources.infosecinstitute.com/window...

dns2proxy 해킹툴

dns2proxy Offensive DNS server This tools offer a different features for post-explotation once you change the DNS server to a Victim. <Referer to help (-h) to new params options> Feature 1 Traditional DNS Spoof adding to the response the original IP address. Using spoof.cfg file: hostname ip.ip.ip.ip root@kali:~/dns2proxy# echo " www.s21sec.com  1.1.1.1" > spoof.cfg // launch in another terminal dns2proxy.py root@kali:~/dns2proxy# nslookup  www.s21sec.com  127.0.0.1 Server: 127.0.0.1 Address: 127.0.0.1#53 Name:  www.s21sec.com Address: 1.1.1.1 Name:  www.s21sec.com Address: 88.84.64.30 or you can use domains.cfg file to spoof all host of a same domain: root@kali:~/demoBH/dns2proxy# cat dominios.cfg .domain.com 192.168.1.1 root@kali:~/demoBH/dns2proxy# nslookup aaaa.domain.com 127.0.0.1 Server: 127.0.0.1 Address: 127.0.0.1#53 Name: aaaa.domain.com Address: 192.168.1.1 Hostnames at nospoof.cfg will no be spoofed. Featu...

어셈블리어(Assembly) 기초

0x01.  어셈블리 언어란 ? &  배우는 목적 CPU  에는 해당 프로세서에 명령을 내리기 위해 고유의 명령어 세트가 마련되어 있는데 이  명령어 세트를 기계어라고 한다 .  이 기계어는 숫자들의 규칙조합임으로 프로그래밍에 상당 히 난해하다 .  그래서 이 기계 명령어를 좀더 이해하기 쉬운 기호 코드로 나타낸것 ( 기계어와  1:1 로 대응된 명령을 기술하는 언어 ) 이 어셈블리어이다 .  어셈블리 언어는 그 코드가 어떤  일을 할지를 추상적이 아닌 ,  직접적으로 보여준다 .  논리상의 오류나 ,  수행 속도 ,  수행 과정 에 대해 명확히 해준다는 점에서 직관적인 언어이다 .  어셈블리 언어를 사용하면 메모리에 대한 이해도도 높아진다 .  어셈블리를 익히고 ,  배우는데 있어서는 여러 가지 목적이 있을 수 있다 .  컴퓨터 시스템 & 구조를 좀 더 깊게 이해하고 ,  메모리상의 데이터나  I/O 기기를 직접 액 세스 하는등의 고급언어에서는 할 수 없는 조작을위해서이다 .  프로그램의 최적화 및 리버 스 엔지니어링을 위해서도 필요하다 . + 2 줄 요약  + -  어셈블리 언어는 기계어와  1:1  대응을 하는 언어이다 . -  어셈블리 언어를 배우면 시스템을 이해하는데 도움이 된다 . 0x02.  어셈블리를 위한 기본 지식 (1)  기본적인 하드웨어 1) CPU -  메모리에 있는 내용을 읽고 ,  쓰고 데이터를 메모리와 각 레지스터로 보낸다 . 프로그램의 명령을 해석하고 실행한다 . 하나의 프로세서는  12~14 개의 레지스터를 가 지고 있으며 , CPU 의 연산 ,  논리 장치는 숫자와 기호에 관한 연산자를...