리눅스에서 게임을 하기위해서 제일 좋은 것은 역시 리눅스 지원 게임을 하는 것입니다. 스팀OS가 세상에 나온 이후 정말 많은 리눅스용 게임들이 나오게 되었는데요. 걔중에는 하프라이프2나 세인츠로우 같은 AAA 게임도 있습니다. 다크 소울도 리눅스로 포팅된다는 이야기가 있군요.


세인츠 로우가 스팀OS와 리눅스로 컨버팅되었다는 뉴스. 이거보고 엄청 좋아했었다.(미리 사두길 잘했어 흑)



하지만 아직도 상당한 게임들은 윈도우 용으로만 나오고 있습니다. 그 이유라고 하면 이미 Direct3D(이하 D3D)로 개발되어져서 OpenGL로 포팅하기 힘들다는 것이 이유라고 합니다. 하지만 D3D로만 만들어졌지만 OpenGL로 포팅된 사례가 상당하기 때문에 이건 귀찮아서 그렇다고 밖에는 생각이 들지 않습니다. (하프라이프2를 비롯한 소스엔진 게임들이 가장 대표적입니다.)


스팀상점의 수많은 리눅스용 게임들. 하지만 아직 갯수가 부족하다.



하지만 이렇게 떠들어봐야 어쩌겠습니까 그냥 까라면 까야 하는 것이 마이너의 비애입니다. 이런 리눅스 게이밍을 위해서 그동안 Wine이 이 쪽으로 상당히 발전한 것도 사실은 이런 배경이 있었던 겁니다. Wine은 처음에는 윈도API 호환성을 위해 만들어졌지만 2006년 이후 DirectX호환성이 상당히 개선되며 리눅스에서의 게임을 상당히 도와줬습니다. 이때 사용된 것이 wined3d 라이브러리인데 이 녀석은 사실 D3D를 OpenGL로 번역해주는 중간 녀석이라고 할 수 있습니다. 그래서 윈도우용 게임이라도 Wine에서 굴릴 때 OpenGL로 렌더링하는 것이 D3D렌더링보다 더 빠른 이유입니다. (WoW같은 경우 OpenGL로 돌아가게 해야 쾌적해집니다.)


이 wined3d는 리눅스에서만 쓰는 것이 아니라 윈도우로도 포팅되어서 OpenGL성능이 막강한 녀석을 도와주거나 (Nvidia가 대체적으로 OpenGL 성능이 좋습니다.) VirtualBox같이 OpenGL만 되는데 D3D가 필요할 때 등등에서 쓰였습니다. 하지만 wined3d는 중요한 맹점이 하나 있었는데 그건 CPU를 엄청 사용한다는 것이었습니다. 그 이유라고 하면 가장 대표적인 것이 좌표계가 달라서 이를 일일이 변환해야 하는 것과 DirectX9이후로 Shader가 발달했는데 DirectX의 쉐이더를 GLSL(OpenGL Shader)로 번역을 해야했던 것 등등 이유가 많습니다. 이런 것을 전부 소프트로 처리했으니 CPU가 무지막지하게 쓰인 것입니다.


이런 CPU의 낭비는 결국 성능 저하로 나타나게 되었습니다. 하지만 그 때까지만 해도 어쩔 수 없었습니다. 그 당시 그래픽 가속은 오픈소스 OpenGL 라이브러리인 Mesa를 써야만 가능했으니 이를 써야 그래도 게임이 굴러갔으니까요. 하지만 이후 리눅스에서 2008년 Gallium 프로젝트가 시작되면서 상황이 갑자기 변하기 시작했습니다.


Gallium 프로젝트는 VGA에 하드웨어 레벨로 접근하는 라이브러리로 그동안 Classic Mesa가 X를 거쳐서 VGA에 접근하던 것과 달리 OpenGL API가 커널을 통해 그래픽카드에 직접 접근해서 VGA를 제어하는 방식이었습니다. 덕분에 OpenGL 렌더링 속도가 상당히 빨라졌습니다.

그런데 Nvidia는 이전부터 커널에서 하드웨어 제어를 하고 있었고 안정성이 상당했었기에 Nvidia에 한해서 Gallium 프로젝트는 무시 당하고 있었다고 해도 과언은 아닙니다. 하지만 AMD(당시ATI)는 거지같은 드라이버대신 오픈소스 드라이버를 사용하고 있었고 AMD에서 드라이버관련 문서를 커뮤니티에 제공하면서 이 Gallium 프로젝트의 혜택을 제일 많이 본 하드웨어로 손 꼽히게 됩니다. 인텔도 Gallium프로젝트의 혜택을 봤지만 기본적인 하드웨어 성능이 낮아서 큰 성능 향상은 없었다고 합니다.


2008년 Freedesktop.org에 의하면 Gallium 프로젝트는 하드웨어 레벨로 커널이 직접 접근하기 때문에 그래픽 카드를 사용하는 다른 기능도 이를 통해 접근이 가능하다는 이야기가 있었습니다. 사실 저는 그냥 그러려니 하고 있었습니다. 그래픽카드를 써봐야 3D가속하고 VIVO기능이 있다면 화면 입력 정도? 이렇게만 생각했었습니다. 그런데 세월이 지나니 진짜 Gallium프로젝트가 먼 미래를 보고 시작한 프로젝트라는 것이 실감되더군요.

바로 Gallium 덕에 VDPAU(동영상 가속)를 리눅스에서 쓸 수 있게 되었고 OpenCL과 CUDA를 사용할 수 있게 되었습니다.(Nvidia는 독점 드라이버를 설치하면 CUDA가 가능하기는 했었습니다. 오픈소스 드라이버는 불가능 했었지만)


이런 Gallium 프로젝트도 한 가지 문제가 있었는데요. 바로 wined3d가 계속 병목현상을 일으켰다는 겁니다. 아무리 렌더링 속도가 빨라봐야 중간에 D3D를 OpenGL로 바꾸는 중간에 CPU성능을 잡아먹고 또 GPU대신 CPU가 개입하니 느려져서 Windows 네이티브에 비해 상당히 성능 하락이 심했던 것입니다.


그래서 나온 것이 Wine-Staging의 CSMT 패치입니다. wined3d를 처리하는 것을 멀티코어 를 사용해서 최대한 병목을 줄이는 것에 초점을 맞춘 패치입니다. 덕분에 CSMT기능을 켜면 CPU가 사용률이 90%이상으로 치솟는 것을 볼 수 있습니다. 하지만 멀티코어이기 때문에 효율이 상당히 좋아서 기본 wined3d에 비해 30%성능 향상이 되는 것을 볼 수 있습니다.


여기에 Gallium프로젝트는 하드웨어 레벨이라는 특성을 써서 리눅스에서 D3D를 굴리는 것을 시작하게 되었습니다. 통칭 Gallium nine이라고 부릅니다. 현재는 D3D9c 까지만 지원이 되지만 프로젝트가 진행되면 D3D10도 가능할 것으로 생각됩니다. XP의 지원이 끝나면서 D3D9을 사용하는 경우가 이제는 철지난 게임들 뿐이지만 리눅스에서 성능이 더 나온다는 말도 안되는 일도 벌어지는 중입니다.


게다가 Gallium Nine 개발자 인터뷰에서는 https://www.gamingonlinux.com/articles/an-interview-with-gallium-nine-project-developer-axel-davy.4949

리눅스 네이티브 프로그램이 D3D9을 사용 할 수도 있다고 나옵니다. 이렇게 되면 말이 안 되는 수준이 아니라 MS가 황당해 할 수준입니다. 물론 실제로 프로그램이 나올 지는 두고봐야 겠습니다.


실제로 지금 CSMT기능으로 게임을 굴려본 결과 상당한 성능 향상을 경험했고 쿼드 코어를 쓰고 있기에 상당히 만족스러운 수준입니다. 그런데 Gallium-nine을 쓴다면 이야기가 또 달라지겠지요. 실제로 게임을 해보고 성능 향상을 알아보도록 하겠습니다.





Gallium Nine은 드라이버를 업데이트하는 수고가 필요하지만 CSMT는 PlayonLinux를 쓰신다면 바로 경험해 보실 수 있습니다.


도구-Wine버전 관리에서 Wine을 추가하실 때 staging이 붙은 녀석을 다운로드 받으시면 됩니다.

staging이라 써있는것을 선택해서 설치하자

Wine설정에서 위와 같이 체크하면 CSMT 설정 끝


gallium-nine은 이전에 소개했던 Oibaf PPA에서 제공합니다.

https://launchpad.net/~oibaf/+archive/ubuntu/graphics-drivers



명령은 이렇게 내리면 되겠지요.


sudo add-apt-repository ppa:oibaf/graphics-drivers

sudo apt-get update

sudo apt-get dist-upgrade


sudo apt-get install libxcb-xfixes0 libxcb-xfixes0:i386 libegl1-mesa libegl1-mesa:i386 libasound2-plugins:i386 libgstreamer-plugins-base1.0-0:i386


여기에서 제공하는 드라이버가 Gallium nine패치가 적용된 드라이버입니다.


그리고 여기 있는 Wine을 사용합니다.

https://launchpad.net/~commendsarnex/+archive/ubuntu/winedri3

PlayonLinux를 쓰시지 않으신다면 여기있는 Wine을 쓰시면 됩니다. 하지만 시스템 Wine을 바꾸는 것은 별로 추천되지 않습니다.


PlayonLinux를 쓰신다면 Deb을 설치하는 것이 아니라 ~/.PlayonLinux/wine/linux-x86 혹은 linux-amd64 에다가 각 비트수에 맞는 패키지를 풀어주셔야 편리합니다.


이것을 다시 설명하면


https://launchpad.net/~commendsarnex/+archive/ubuntu/winedri3/+packages

여기로 접속합니다.



우분투 버전에 맞는 부분을 클릭합니다.



보통 게임용은 32비트이므로 i386을 쓰는 것이 좋다. 물론 amd64를 쓴다고 문제 되는 일은 없다.(lib32가 존재하기 때문)


보통 게임은 32비트 버전을 사용하기 때문에 i386버전을 다운로드 받는 것이 좋습니다. 만약 64비트 지원 프로그램이라면 amd64로 다운로드 받으시는 것이 좋습니다.



그 다음 동그라미 쳐 놓은 두 deb 파일을 받아주시면 됩니다. 위 스크린샷에서는


wine1.9_1.9.15-1+gallium-nine~x_i386.deb

wine1.9-i386_1.9.15-1+gallium-nine~x_i386.deb


두 가지 이군요. 이 글을 보시는 시기와 우분투 버전에 따라 파일명은 달라질 수 있습니다.

그러니까 dbg와 dev 가 붙지 않은 패키지 중에서 크기가 작은 한 패키지를 제외하고 나머지 두 개란 의미 입니다.


그 다음 DEB파일을 압축을 풀어서 PlayonLinux에서 사용하게 하면 됩니다.


우선 i386패키지를 다운로드 받으셨다면

~/.PlayonLinux/wine/linux-x86

여기로

amd64패키지를 다운로드 받으셨다면

~/.PlayonLinux/wine/linux-amd64

여기로 들어가신 다음 wine-gallium-nine이라는 이름의 폴더를 하나 만듭시다.


이걸 단순 명령으로 처리한다면

cd ~/.PlayonLinux/wine/linux-x8

mkdir wine-gallium-nine (i386)


~/.PlayonLinux/wine/linux-amd64

mkdir wine-gallium-nine


이렇게 하면 wine-gallium-nine 이라는 아까 다운로드 받은 DEB의 압축을 풀어버리는 겁니다. 단 deb을 그냥 풀면 control.tar.gz과 data.tar.xz 두가지가 나오는데 data.tar.xz파일 열고 또 그안에서 /usr 폴더에 있는 내용만 풀어야 합니다. 


그냥 압축프로그램에서 data.tar.gz까지 열어버린 뒤에 /usr내의 내용만 아래 그림처럼 드래그 해주시면 됩니다.



그러고 PlayonLinux의 Wine버전 관리 메뉴에 들어가면 여러분이 만드신 폴더명으로 Wine이 추가 되어있는 것을 알 수 있습니다.


그 다음 Gallium-nine을 사용하기 위해서는 약간의 삽질이 더 필요한데 이는 아치위키와 포럼에 설명 되어있습니다. 우분투 사용자들도 애용하는 위키이니 아치 포럼의 https://bbs.archlinux.org/viewtopic.php?id=192761부분을 보도록 하겠습니다.


다른 부분은 필요없고 프로그램 실행을 다음과 같이 하라고 나와있습니다.


$ env WINEARCH=win32 DRI_PRIME=1 thread_submit=true wine program.exe


여기서 제일 중요한 부분이 바로 이 thread_submit=true 부분입니다.


이 옵션을 켜야 정상적으로 DX9으로 작동됩니다. 만약 멀티스레드가 아닌 게임이라면 저 부분이 없어도 되는데 요즘에 나온 프로그램치고 멀티스레드가 아닌 경우가 거의 없으므로 저 옵션은 필수입니다.


PlayonLinux를 쓰신다면



여기에 이렇게 적어주시면 편리합니다.


그리고 Wine 설정에서 Staging 탭에서 Enable Gallium nine에 체크해주시면 됩니다.




한번 성능을 비교해 볼까요? 테스트 게임은 DirectX 9게임 중에서 발적화로 유명한 Dead or Alive입니다. 같은 DX9라도 심하게 발적화라 상당한 성능을 요구합니다. 


TEST기기는

AMD APU 6410 BEEMA

DDR3 8GB

HDD 7200rpm


꽤나 극한 환경입니다. 일반적인 하드웨어에서는 성능으로 씹어먹기 일수라서 하드웨어 제약을 좀 심하게 걸었습니다. (사실 제가 사용하는 시스템입니다. 리눅스를 쓰는 이유 중 하나입니다.)


우선 기본 wine상태 입니다. wined3d를 사용하는 것이고 OpenGL변환을 사용합니다.

18프레임~20프레임가량 나옵니다. 버벅 거리는 것이 눈에 보입니다. CPU사용율은 그렇게 높지는 않습니다. (CPU0만 갈구는 것은 이 게임 특징입니다.)




wine-csmt를 사용하는 형태입니다. wined3d를 사용 OpenGL변환을 하지만 멀티 스레드를 사용하기 때문에 코어수가 많으면 효율이 좋아집니다.

CPU사용율이 굉장히 높습니다. 평균 프레임은 30프레임입니다. 물론 이 정도면 게임하는데 크게 지장은 없습니다.


galllium-nine을 사용하는 경우입니다. OpenGL변환을 하지 않고 리눅스 드라이버에서 DirectX 렌더링을 직접 합니다.

CPU사용율은 발적화 게임 특성상 cpu0만 심하게 갈구는데 사실 이건 이 게임 특징입니다.평균 프레임은 40~45프레임 정도 입니다. 상당히 할 만한 수준입니다.


CSMT나 Gallium-Nine은 D3D 게임에서 성능 향상을 노리는 솔루션입니다. 만약 해당 게임이 OpenGL을 지원한다면 그냥 조용히 OpenGL을 쓰는 것을 추천드립니다.


하지만 D3D 게임은 성능 향상 폭이 상당하니 좀 시기가 많이 지나기는 했지만 D3D9 게임을 리눅스에서 하신다면 Gallium-nine 설정을 하시거나 드라이버를 PPA에서 설치하는 것이 조심스럽다면 CSMT기능을 사용 하시는 것을 추천합니다.



,

Avidemux는 옛날 VirtualDub을 대체하는 대표적인 오픈소스 프로그램입니다. 실제로 성공적으로 안착했고 지금은 VirtualDub이 뭐였는지도 모르는 사람이 많을 정도입니다.


그런데 그동안 우분투에서 공식적으로 제공해주던 Avidemux가 16.04에서 제공이 되지 않습니다. 새로바뀐 libx264때문이라는데요. 호환문제가 있다면 어딘가에서는 호환문제를 해결했을 겁니다.


역시나 호환문제가 해결된 PPA가 있었습니다.


설정-소프트웨어 & 업데이트를 선택합니다.

기타소프트웨어 탭


추가버튼을 누르고


deb http://archive.getdeb.net/ubuntu xenial-getdeb apps  


위 내용을 추가합니다.

그리고 확인 후 터미널을 열고

wget -q -O- http://archive.getdeb.net/getdeb-archive.key | sudo apt-key add -

위 명령을 칩니다.


그 다음


sudo apt-get update

sudo apt-get install avidemux2.6-qt


이제 Avidemux를 설치할 수 있게 되었습니다.


우분투 16.04에서 Avidemux를 쓸 수 있다.


,

으음...ghap님께서 동방을 갑자기 들고 오시는 바람에 근 10년만에 생각나서 동방 게임을 잠깐 굴려봤습니다. 간만에 보니 한글 패치도 엄청 굴러나왔더군요.http://blog.naver.com/PostList.nhn?blogId=chlehd0509 한글패치를 약 10년전에 시도했다가 망해서 때려친 기억이 있는데 새롭네요.


일단 본편인 슈팅은 왠만 하면 그냥 Wine1.6 버전으로도 잘 굴러갑니다. 그도 그럴 것이 딱히 복잡한 쉐이더를 쓴 것도 아니고 그냥 D3D 기본API를 이용한 정도라 그렇게 어렵지도 않습니다. D3D to OpenGL의 문제가 그렇게 많이 드러나지 않습니다. AA를 넣어도 될 정도입니다.(AA를 적용해야 할 정도인지는 둘째 칩시다.


보통 이쪽 계열(탄막슈팅) 입문작으로 추천되는 동방영야초. 그나마 쉬운 편이라 초보자(?)에게 추천된다.

물론 10년간 이 게임을 안 한 죄로 죽기 직전..(그래도 Hard다.)

 

본편은 Wine 실행에 어려움이 전혀 없으니 이야기는 이 정도로 하고 본편과 함께 열심히 했던 외전 격투게임인 비상천을 굴려 보기로 했으나...


오늘 리눅스에서 굴려볼 게임은 이거. 그런데 본인은 전작까지만 해보고 이걸 해 본 적이 없다.


비상천칙이 언제 나왔더군요. 일단 해보지 뭐 하면서 한글 패치를 적용했는데...

Wine 1.9.5에서 에러 납니다. 그것도 게임 중에 까만 화면에 진행 불가.


터미널에 뜬 문구는 다음과 같았습니다.

"FXLC is not support"

??? 이게 뭐지? 하면서 검색을 했더니 2016년 3월에 이에 관한 패치가 적용되었습니다. (https://www.winehq.org/pipermail/wine-devel/2016-March/112061.html)


그래서 최신 버전인 1.9.13에서 구동 시도 PlayOnLinux를 쓰면 이런 것은 어렵지도 않지요.

PlayOnLinux에서 Wine 버전관리 기능을 사용하고 Configure에서 버전을 선택하면 얼마든지 버전을 바꿀 수 있다.


흐음..일단 게임을 굴려봤습니다. 그런데...

텍스쳐가 깨지고 화면이 흐려집니다!

아니 다른 건 상관없는데 날씨 관련 효과가 나올 때 마다 화면이 흐리멍텅 해집니다. 날씨가 돌아오면 정상적으로 돌아오기도 하는데 문제의 FXLC가 동작 할 때마다 이 모양이 되는 듯 합니다. FXLC가 그냥 안 되게 막아버려야 하나?


아무래도 1.9버전은 개발 버전이라 문제가 있을 것이라고 판단. 1.8버전으로 회귀하고 아에 의심가는 D3D9_XX.dll로 나오는 라이브러리를 네이티브로 넣었습니다. 


PlayOnLinux에서 제공하는 것은 이거 밖에 없더군요.

d3dx9_29

d3dx9_35

d3dx9_36

d3dx9_40

d3dx9_42

d3dx9_43


PlayOnLinux의 삽질을 줄여주는 고마운 기능. 그런데 winetricks보다도 못 할 때가 많다.


그냥 다 설치했습니다.


그러고 실행하니...


으음...계속 쳐 맞는다. 역시 격투게임은 별로인가 나?


깨끗합니다. 역시 개발 버전에 의한 버그 문제였습니다. 다만 네트워크 플레이가 안 되는 것 같은데 알 게 뭔가요. 어차피 네트워크 하면 이기는게 거의 불가능하니(...)


일단 동방비상천칙도 잘 되네요. 10년전만 하더라도 실행조차 불가능 했던 것으로 기억하는데 Wine의 발전은 정말 눈부십니다.

,

저는 주력 OS를 우분투로 사용하고 있지만 당연히 Windows도 사용하고 있습니다. 몇몇 작업의 경우는 꼭 Windows가 필요하기도 하고 가끔 IE도 필요한 경우가 있어서 VirtualBox를 써서 가상으로 Windows를 이용하지요.


리눅스에서는 대부분 가상 머신 프로그램으로 VirtualBox를 사용하실 겁니다. VMware는 약간 배포판을 가리는 면이 있어서 간혹 에러가 나기도 하고 VirtualBox에 비해 메모리를 많이 먹는 편입니다. 대신 속도는 VMware가 이러나 저러나 훨씬 낫지요.


저는 VirtualBox를 쓸 때 설치 후에 어느정도 정리를 하고 스냅샷으로 일단 얼려둡니다. 이래야 나중에 가상머신이 병X이 되어도 그때의 스냅샷으로 돌아올 수 있으니까요. Windows내의 시스템 복원 기능이 있지만 가상머신에서는 쓰레기일 뿐입니다.


VirtualBox의 스냅샷 기능 이렇게 순차적으로 할 수도 있고 분기도 가능하다.

그런데 Windows란 녀석은 캐시 메모리를 많이 사용하는 편입니다. 2000시절에 추가된 기능이었던 Prefetch(Superfetch) 기능이 발전해서 사용자가 많이 사용하는 프로그램을 미리 메모리에 올려둔다던가 프로세스 우선순위를 자동으로 설정해 주는 등의 기능이 있습니다. 그래서 프로그램을 많이 설치하면 설치 할 수록 디스크의 공간을 예상 외로 많이 먹어버리고 메모리 사용량도 은근히 올라갑니다. 제가 스냅샷을 걸어두는 이유 중 하나가 바로 이것인데요. Windows의 Prefetch는 쓰면 쓸 수록 디스크에 각종 캐시 들을 쌓아둡니다. 프로그램의 각종 데이터나 라이브러리 등을 올려두는 것인데요. 문제는 이 기능이 일반적인 디스크에서 돌아갔다면 문제가 없었을 겁니다. 그런데 가상 머신은 가상 디스크 이미지를 만들고 이 안에 파일을 넣어두는 방식을 취합니다. 보통 디스크 이미지는 동적 할당 방식을 사용해서 200GB짜리 이미지를 만들어도 200GB를 사용하지 않습니다. 디스크의 내용이 변동 되었으면 변동 된 만큼을 그냥 추가합니다. 나중에는 썼다 지웠다를 반복하면서 200GB를 넘기기도 합니다. 이러면 정작 호스트인 우분투의 디스크 용량이 나중에는 당연히 부족해 집니다.


그래서 VirtualBox에서는 VBOXManage -compact 명령을 준비해 두었지만 완벽하지는 않습니다. 그냥 뱃속 편하게 고정 할당을 하는게 이 문제에서 벗어 날 수 있는 방법이지만 스냅샷을 걸 때마다 고정 할당량 X 스냅샷 갯수 만큼 먹어버리는 문제가 또 있습니다. (어쩌라고...)


솔직히 Prefetch는 굉장히 좋은 기능입니다. 이 기능 덕에 지금의 Windows10이 Windows7보다도 저 사양의 PC에서 더 쌩쌩하게 돌아갈 수 있는 것 입니다. 하지만 지금은 그냥 혹 덩어리 입니다. 문제아일 뿐입니다. 이것을 해결하는 가장 쉬운 방법으로 게스트 OS가 Win7이상이라면 SSD 옵션을 걸어두면 됩니다. (자동으로 Prefetch를 안 씁니다.)이러면 한방에 해결이 됩니다. 혹은 

http://www.technipages.com/windows-enable-disable-superfetch


여기에 나온 것처럼 Superfetch와 Prefetch를 꺼버리면 됩니다. 그러면 VirtualBox의 문제가 약간은 해결될 것입니다.



,

보통 우분투 사용자 분들은 PPA를 통해서 설치하는 것에 익숙합니다. 소스 컴파일 설치 같은 것은 정 PPA 이용이 안 될 경우나 본인만의 패치를 적용해야 할 경우(예: 3D 프린팅 프로그램 : Curahttp://moordev.tistory.com/111) 뿐이며 대부분은 누군가의 봉사로 제공되는 PPA를 적극적으로 이용하고 계실 겁니다.

2016.6월 오늘 PSP 에뮬레이터인 PPSSPP를 우분투에서 PPA를 통해 설치 중 에러가 나서 이를 해결하기 위해 한 삽질을 간단하게 적고자 합니다.


PPSSPP 공식 홈페이지에서는 리눅스용 바이너리 외에도 PPA를 따로 제공중이다.


PPSSPP 공식 홈페이지에서는 Linux 버전의 배포를 Builds 버전과 PPA를 통해 배포하고 있습니다. PPA 버전은 메뉴에 자동으로 등록되는 등 설치시에 편한 것이 많습니다.저야 당연히 PPA를 통해 설치 하였고 게임을 구동중에 ESC 키가 전혀 먹히지 않는 버그를 발견했습니다. 즉 게임 설정을 못하는 문제가 생긴 것이지요.

바로 버그 리포트를 날리려고 했는데 혹시나 하고 찾아보니 이미 누가 리포트를 한 상태였습니다. 그래서 unstable 버전으로 바꾸면 해당 패치가 적용된 버전으로 설치 되나 했더니 여전히 상태가 안 좋습니다.

그래서 살펴본 결과 이러한 내용을 알게 되었습니다.

- PPA 버전은 Dev 버전보다 늦게 올라옵니다. 즉 Dev-latest 버전을 다운로드 받아야 해당 패치가 적용되는 상황이었던 것이지요. 그래서 Linux Builds 항목에서 Dev-latest 버전을 다운로드 받아서 해보니(http://build.ppsspp.org/builds/) 버그 없이 깔끔합니다.

하지만 이렇게 써먹으면 메뉴에 등록된 PPSSPP를 못 쓰게 됩니다. 그렇다고 방법이 없는 것은 아닙니다. PPA버전을 설치하고 실행 파일을 Dev 버전으로 갈아치우면 됩니다. 

일단 PPA를 통해 PPSSPP를 설치합니다.

sudo add-apt-repository ppa:ppsspp/stable

sudo apt-get update

sudo apt-get install ppsspp-sdl


이렇게 PPA버전을 설치하고 Dev-latest버전을 다운로드 받습니다.

http://build.ppsspp.org/builds/Linux-Generic/amd64/ppssppbuildbot-org.ppsspp.ppsspp-dev-latest-linux-amd64-generic.tar.gz

(64비트)

http://build.ppsspp.org/builds/Linux-Generic/i386/ppssppbuildbot-org.ppsspp.ppsspp-dev-latest-linux-i386-generic.tar.gz

(32비트)


그리고 관리자 권한으로 탐색기 프로그램을 하나 열어둡시다.

sudo pcmanfm /usr/games

sudo nautilus /usr/games

sudo thunar /usr/games

sudo dolphin /usr/games

기타 등등... 자신의 배포판에 맞는 명령을 사용하세요.

그러면 ppsspp-sdl이란 실행파일이 있습니다. 이것을 우선 이름을 바꿔 .bak파일을 붙여줍니다.

그리고 아까 다운로드 받은 Dev버전에서 PPSSPPSDL 파일만 빼놓고 여기에 복사합니다.

/usr/games 내에 있는 ppsspp-sdl 파일을 이름을 바꿔 버리자

다른 것은 버리고 이것만 빼내면 된다.

그리고 PPSSPPSDL 이 파일의 이름을 ppsspp-sdl로 바꿔주시면 작업 끝


이제 버그 없이 게임이 돌아갑니다.

,

저는 이런저런 에디션을 넘어다니다가 Xubuntu에 정착했습니다. LXDE도 괜찮았지만 Compositing과 새로운 데스크탑 환경이 경험해보고 싶어서 그냥 점프해 버렸습니다. 그랬더니 PCmanFM대신 Thunar를 쓰더군요. 이전에 써본 적이 있었지만 PCManFM과 비교해서 그리 무겁지도 그렇다고 모자라지도 않았습니다.


그런데 Thunar는 nautilus 확장이 안 먹히는 것인지 PCManFM에서 쓰던 filename-repairer를 쓸 수 없었습니다. (여기 참조 : http://moordev.tistory.com/5그래서 thunar용으로 포팅된 것은 없나 찾아보던 도중 누군가가 작업을 하고 있다는 것을 알게 되었습니다. https://github.com/LinuxMatt/thunar-repairer-plugin


그런데 소스만 봐서는 이걸 어디에 써먹어야 할 지 감이 안 옵니다. 그래서 소스를 다운로드 받은 뒤에 이리 저리 작업한 삽질기를 적습니다.


우선 Thunar는 Xfce의 일부이므로 Xfce4-develop-tool이 있어야 합니다. 그러니까 우선 


sudo apt-get install xfce4-dev-tools libthunarx-2-dev libexo-1-dev


위 명령어로 개발 툴을 설치합니다.


그리고 Thunar-filename-repairer 소스코드를 git clone을 하셔도 되고 그냥 ZIP으로 다운로드 받으셔도 됩니다. 저는 그냥 zip으로 다운로드 받겠습니다.


https://github.com/LinuxMatt/thunar-repairer-plugin/archive/master.zip


위의 것을 다운로드 받으신 뒤 압축을 풀어버리시면 됩니다.


그리고 터미널에서 컴파일을 시도해야 하므로 터미널을 열고 압축을 풀어버린 곳으로 들어갑니다. 당연히 cd 명령을 사용하면 되겠지요.


cd thunar-repairer-plugin-master


그 다음 autogen 스크립트를 실행합니다. 이는 컴파일을 위해 사용자 환경에 맞게 끔 파일을 만들어줍니다.


정확히 make로 컴파일을 하란다. 시키는대로 하자.


여기서 컴파일을 위해 다음과 같이 명령을 내립시다. 이제는 익숙해져야하는 그 명령어


make


이제 컴파일일 다 되었다고 할 것입니다. 설치만 하면 되는데 make install을 해도 되지만 이러면 관리하기가 어려우니 시냅틱등의 패키지기반 관리로 하는 것이 좋을 것이다. 바로 그게 checkinstall 입니다..


sudo apt-get install checkinstall


우선 checkinstall을 설치하고 make가 완료된 시점에서 다음과 같이 명령을 내립니다.


sudo checkinstall


중간에 버전에서 에러가 날 수 있으니 버전을 숫자로 바꿔야 합니다. 기본으로 하면 master란 버전이 되는데 그런 것은 없습니다.

0.1정도면 될 것입니다.(alpha니까요.)


이 화면에서 3으로 들어가서 0.1내지는 숫자로 바꿔준다. 그래야 패키지 빌드가 된다.


자동으로 인스톨까지 끝내고 패키지도 같이 만들어줍니다. 필요하면 이를 배포할 수도 있습니다.


Xubuntu 16.04 amd64로 내가 빌드한 것입니다. 필요하면 이것을 이용해도 문제는 없을 것입니다.

thunar-repairer-plugin_0.1-1_amd64.deb


으음... 패키지를 만들면서 뭔가 잘못 된 것 같습니다.

다음 명령을 써서 후속 작업을 임시로 해둬야 할 것 같은데요.왜 그런지는 잘 모르겠습니다. (내가 패키지를 잘 못 다루기 때문이기도 할 것입니다.)


cd /usr/lib/x86_64-linux-gnu/thunarx-2/

sudo ln -s /usr/local/lib/thunarx-2/thunar-fnr.la
sudo ln -s /usr/local/lib/thunarx-2/thunar-fnr.so


일단 작동은 잘 되네요. 다음 스크린샷을 보시면 아시겠지만. 박살 난 한글도 잘 읽어들이고 웹코드로 뿌려진 형태도 복구해줍니다.


%20%80 등 웹용으로 뿌려진 파일명도 UTF-8로 정상적으로 복구 되고

CP949로 박살난 한글도 UTF-8로 잘 복구해준다. 정말 좋은 프로그램이다.


nautilus확장보다 설치는 조금 복잡하지만 Thunar에 파일명 복구플러그인을 쓸 수 있는 것 만으로도 좋군요.

,

어찌된 영문인지는 모르겠습니다만 MATLAB 2016a버전과 그 이하의 모든 MATLAB이 모두 Ubuntu 16.04에서 실행이 안 되는 현상이 발생하고 있습니다. 일단 MATLAB의 실행시 스플래시는 뜨지만 그 이후에 그대로 실행이 안되고 튕겨버립니다. 터미널에서 열어보면 Segmentation 오류가 나는데 그 전에도 간혹 있었던 libstdc++에러입니다.


우분투14.04~15.10까지와 libstdc++이 우분투 16.04의 libstdc++이 다른 것으로 생각됩니다. libstdc++은 시스템과 전반적으로 연관이 깊다 보니 시스템과 맞지 않을 경우 당연히 에러를 뿜게 되는 것입니다.


그럼 방법은 간단합니다. 그냥 시스템에 맞는 libstdc++을 사용하게 하면 됩니다. 기본적으로 MATLAB은 "/usr/local/MATLAB/R2016a/sys/os/glnxa64/libstdc++.so.6" 이 라이브러리를 사용하게 되어있습니다. 여기는 경로를 보시면 아시겠지만 MATLAB에서 제공하는 라이브러리입니다. 그런데 이 라이브러리가 시스템하고 안 맞는 부분이 있을 경우 에러가 나는 것입니다. 이럴 경우 우분투에서 제공하는 라이브러리를 사용하게 하면 되는 겁니다. 방법은 아주 간단하게도 MATLAB에서 제공한 라이브러리를 삭제하면 됩니다. 그러면 MATLAB은 시스템에 설치된 libstdc++파일을 사용하게 되고 시스템과 안 맞는 부분이 사라지게 되는 것이지요. 


이전에 Steam에서 우분투 16.04에 대응이 되지 않았을 때에도 써먹었던 방법인데 이게 MATLAB에서도 쓰이네요.


일단 삭제는 좀 어려울 수 있으니 파일명을 바꿔 버리는 것으로 해결합시다.


cd /usr/local/MATLAB/R2016a/sys/os/glnxa64/

sudo mv libstdc++.so.6 libstdc++.so.6.old


이렇게 해주시면 MATLAB은 해당 라이브러리가 아닌 우분투에서 사용하는 라이브러리를 사용하게 됩니다. 이제 사용하기만 하면 됩니다.깔끔하지요?

,

무슨 이유인지 스팀이 실행이 안된다. 14.04는 잘 되었는데...


자세히 찾아보니 Nvidia는 잘 되는데 AMD는 안 된다고 한다. 역시 망할 AMD로군.

하지만 방법은 있었다.


http://askubuntu.com/questions/635851/error-in-installing-steam-on-ubuntu-15-04

 

혹시 다음과 같은 명령을 쓰면 스팀이 실행되는지 확인해보자

LD_PRELOAD='/usr/$LIB/libstdc++.so.6 /$LIB/libgcc_s.so.1 /usr/$LIB/libxcb.so.1' DISPLAY=:0 steam


만약 실행이 된다면 드라이버 문제다. 하지만 이는 쉽게 해결이 가능하다.


터미널에서 그냥 steam이라고 명령을 쳤을 때 X관련 에러가 나온다면 거의 100%다.



그럼 스팀 실행을 위한 약간의 작업을 한 번 해보자.


터미널을 열고 다음과 같이 명령을 쳐보자.


sudo leafpad /usr/games/steam


leafpad가 아닌 gedit이나 pluma도 상관없다. nano를 써도 된다. 그냥 텍스트에디터 아무거나 쓰자.


그러면 Bash 스크립트가 나오는데 이걸 살짝 수정하는 것이다.

보이는가? 위 부분에 2줄을 추가해 넣었다. 이로써 스팀 실행이 된다.

이 Bash 스크립트에서 2번째 줄에 (그러니까 #!/usr/bin/env bash 아래에)


이 두 줄을 붙여 넣으면 된다.

export LD_PRELOAD='/usr/$LIB/libstdc++.so.6'
export DISPLAY=:0


이제 실행해보면 잘 된다.

,


리눅스를 쓴다면 가장 흔하게 보게 될 Bash의 모습. 그 위상은 Windows의 cmd와 비슷하다.


리눅스를 쓰신다면 명령 창, 터미널에 익숙해져야 한다는 것을 많이 들어보셨을 겁니다. 과거의 DOS를 쓰셨던 분들이라면 이러한 명령에 익숙하겠지만 GUI로 컴퓨터를 처음 쓰셨던 분들은 막막하기만 하지요. 하지만 Power User라면 Windows든 Unix든 이러한 CLI에 익숙해져야 난데없는 일이 일어났을 때 그나마 복구 할 수 있는 여력이 생깁니다.


그 중 쉘(Shell)이라는 표현을 들어 보셨을텐데요. CLI나 GUI나 이 쉘이 곧 UI의 역할을 해줍니다. Windows는 GUI 쉘로 Explorer를 Linux/Unix는 Gnome, KDE, Xfce, LXDE 등등...이 있는 셈이고(wayland용은 별개로 합시다.) CLI용 쉘로는 Windows는 cmd, Linux는 bash(가장 많이 쓰임), tsh, zsh 등이 있습니다. 흔히 bash가 일반적입니다.


과거의 Dos는 command.com 이 커널이자 쉘의 역할을 해 주었습니다. Linux/Unix/OSX는 보통 Bash를 CLI로 사용하고 있고 bash를 기본으로 스크립트를 사용합니다. bash가 나쁘지는 않지만 zsh가 더 편리한 기능이 더 많고 알아보기가 편합니다.


대표적인 것이 Tab 키의 기능인데 우분투는 각종 스크립트로 bash에 이와 비슷한 기능을 넣었지만 zsh에 비할 바는 못 됩니다.




bash의 경우 Tab을 누르면 현재 파일 리스트 중에서 찾아주지만(심지어 두 번 눌러야 하지요)zsh는 명령어 중에서 해당 명령어로 시작되는 것들을 바로 리스트로 뽑아내 줍니다.


그 외에도 vi와 vim의 관계처럼 약간의 색상을 통한 강조 비슷한 효과도 부여합니다.


그러면 한번 zsh를 사용해봅시다.


그러면 zsh를 설치해봐야겠지요?

sudo apt-get install zsh


그러면 아래와 같은 것이 나오는데 2번을 추천하므로 (추천하는 .zshrc 파일을 만들어서 관리 및 설정) 2번을 누르도록 합시다.



솔직히 설정하기 귀찮으니까 2번을 누르자. 0번을 누르면 뭘 잔뜩 물어본다고...


그리고 임시로 zsh 명령을 쳐서 zsh로 


chsh -s `which zsh`


chsh는 쉘 선택 명령어이고 which zsh는 zsh가 설치된 위치, /usr/bin/zsh를 말합니다. 이제 로그아웃 했다가 다시 로그온 하면 터미널의 쉘이 zsh로 변했을 겁니다.


하지만 oh-my-zsh!를 사용하면 이 강력한 zsh를 더 편리하게 만들어 줍니다. Firefox의 확장같이 zsh를 확장해주는 것이지요.

우선 curl을 설치하고 oh-my-zsh를 설치하는 스크립트를 사용하면 됩니다.


sudo apt-get install curl

curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh


위 명령어를 사용하면 아래와 같이 나오는데요. 이제 zsh의 확장인 Oh my zsh!도 설치되었습니다. 여기서 몇 가지 기능을 사용하면 되는데요. 일단 쉘의 확장이기 때문에 로그아웃 했다가 다시 로그온 해주셔야 합니다.



Oh my zsh가 설치되었습니다! 짝짝짝


대표적인 것이 테마 기능인데요. 커맨드창에 무슨 테마냐 하시는 분들은

https://github.com/robbyrussell/oh-my-zsh/wiki/Themes


여기에서 나름 필요한 것이 있다는 것을 알게 될 겁니다. 시간이 뜨는 것은 유용할 것 같습니다.


일단 디폴트 테마는 robbyrusshell입니다.



굉장히 심플합니다. 하지만 저는 이게 별로 마음에 안 들더군요. 그래서 찾던 중에 agnosterzak이란 테마가 마음에 들어서 이를 설치했습니다.


http://raw.github.com/zakaziko99/agnosterzak-ohmyzsh-theme/master/agnosterzak.zsh-theme


위의 파일을 다운로드 받으신 다음에 ~/.oh-my-zsh/themes/ 에 복사해 넣으세요. 아니면


cd ~/.oh-my-zsh/themes/

wget http://raw.github.com/zakaziko99/agnosterzak-ohmyzsh-theme/master/agnosterzak.zsh-theme


위 명령어를 쓰시면 일단 테마가 추가됩니다. 그리고 ~/.zshrc 파일을 텍스트 에디터로 열고


ZSH_THEME="agnosterzak"


이렇게 바꿔주시면 그냥 터미널에서 배터리 잔량이나 시간 확인이 가능한 무시무시한 능력을 얻게 됩니다. 일단 스크린샷을 보시면 알게 될 겁니다.



...실수로 내 개인파일 리스트가 떠 있어서 지웠다.....

폰트 문제로 약간 문제가 있군요. 하지만 CLI 치고는 나름 예쁩니다. 저 깨지는 부분만 없애도 예쁠 것 같은데 어떻게 없애는 지는 모르겠네요.


~/.oh-my-zsh/themes/agnosterzak.zsh-theme


파일을 수정하면 될 듯한데 일단

SEGMENT_SEPARATOR=$'\ue0b0' # 


여기에서 e0b0을 25b6으로 수정해보겠습니다.


 기호를 ▶ 로 바꾸는 겁니다. 나름 괜찮겠지요.


..그럭저럭...그래도 이 정도면 뭐..


그럭저럭 볼 만은 하네요. 일단 여기서 그만둬야 할 것 같습니다. 저 날짜 순서도 마음에 안드는데 더 건드렸다가는 끝이 없을 것 같습니다. 일단 298번째 줄


  prompt_segment blue white "$fg_bold[white]%D{%a %e %b - %H:%M}$fg_no_bold[white]"


여기를 이렇게 바꾸면 될 것 같은데...


  prompt_segment blue white "$fg_bold[white]%D{%b %e %a - %H:%M}$fg_no_bold[white]"


이렇게는 한도 끝도 없을 것 같네요. 우선 저의 잠을 위해...


이상 zsh와 oh-my-zsh였습니다.

,

아시다시피 리눅스는 굴림체를 쓰지 않습니다. 당연하게도 굴림체는 Microsoft의 물건이기 때문입니다. 하지만 굴림체가 워낙에 흔하기 때문에 쓸데없이 굴림체를 사용하는 사람들이 적지 않습니다. 여기서 끝나면 다행인데 한글 폰트는 Bold폰트를 따로 가지고 있지 않아서 겹쳐서 굵은 것처럼 표현하는 일명 FakeBold 기술을 사용하는데 FakeBold의 기능이 Windows의 것과 FreeType(리눅스와 기타 등등의 OS에서 사용하는 라이브러리)의 것이 좀 많이 다릅니다.


덕분에 다음과 같은 일이 일어나곤 합니다.


이렇게 보면 모르겠지만 실제로 보면 참 글씨가 더럽다.


그림에서 잘은 안 보이시겠지만 네이버 메인화면에서 Bold 처리된 글씨의 가독성이 현저히 떨어집니다. 사실 네이버만 그런 것이 아니라 다른 사이트들이 다 이 모양입니다. 아무래도 백묵 폰트처럼 힌팅이 없는 폰트로 설정이 된 것 같은데 이를 쉽게 해결하는 방법을 이야기 해 보겠습니다.


우선 미리 이야기 하자면 우리가 원하는 것은 아래와 같은 화면입니다.


그나마 깔끔해진 외관. 나눔고딕 특유의 힌팅이 적용되어 미려해진 느낌이다


위의 이미지와 비교해보시면 글씨의 가독성이 좋아졌음을 알 수 있습니다. 사실 이건 아주 간단한 확장 하나로 처리하는 겁니다. 이름은 직설적으로 Font Changer 입니다.



여기까지 알려줬는데도 못 찾는 사람들이 있다. 그럴 때는 그림을 보도록!



크롬 웹스토어 http://chrome.google.com/webstore/ 에서 "Font Changer"라고 검색만 해도 쉽게 찾을 수 있습니다. 구글의 웹 폰트를 이용하지만 원하는 폰트를 추가가 가능합니다. 물론 너무 무거운 폰트는 사용 불가능합니다. 저는 가볍고 Bold폰트가 이미 들어가 있어서 FakeBold에 따른 문제가 전혀 없는 나눔 고딕을 사용하기로 했습니다. 나눔 고딕은 우분투에서 /usr/share/fonts/truetype/nanum/ 여기에 있으니 여기서 복사해서 미리 빼놓으시는 것이 편합니다. (단순히 복사해서 두는 것이기 떄문에 관리자 권한 없어도 됩니다.)



나눔고딕이 요기잉네?


설치 이후에 주소 줄 옆에 FC라는 아이콘이 추가 되는데 이를 클릭하면 폰트를 선택할 수 있게 됩니다.



 

일단 모든 사이트에서 같은 폰트로 뜨게 하는 것이 좋으니 Use Global Settings로 맞춰 놓고 Edit Custom Fonts를 누릅시다.




그 다음 나오는 페이지에서 파일 선택을 눌러 아까 빼 놓았던 나눔고딕.TTF 파일을 선택합시다. 그리고 Save Font를 클릭해주시면 ABeeZee 폰트 대신 나눔고딕을 선택할 수 있게 됩니다. 같은 방법으로 다른 폰트를 쓸 수 있는데 크기가 너무 큰 폰트는 인터넷 서핑을 힘들게 하기 때문에 별로 추천하지 않습니다. 나눔고딕이 약 2.4MB 정도입니다. 대략 이 정도면 괜찮다고 생각해주시면 됩니다.


사이트마다 다른 폰트를 적용 가능하니 이럴 때 애용해주시면 굴림체 같이 애매한 글씨체보다 더 쓸 만한 한글 글꼴로 인터넷이 가능해집니다. Firefox는 이런 것이 없는지 찾아봐도 안 나오네요. 물론 크롬보다 글씨체가 꽤 정돈되어 있어서 굳이 이 작업을 할 필요는 없습니다.

,