라즈베리파이나 오래된 PC를 에뮬레이터 머신으로 만들어줄 수 있는 Lakka란 프로젝트가 있습니다. RetroArch란 온갖 게임콘솔과 아케이드를 에뮬레이터 해주는 프로그램을 이용한 것인데요. 다른 것은 모두 배제하고 최소한의 OS(Libreelec 기반)와 RetroArch만 올려서 만든 배포판입니다.



http://www.lakka.tv/


2017년 현재 RetroArch는 상당한 수준의 인터페이스와 엄청난 지원 범위를 자랑하고 있어서 오래된 PC나 저렴한 라즈베리파이에 게임패드를 연결한 다음 Lakka만 올려서 게임기로 만드는 경우가 늘고 있습니다.




그런데말입니다.

RetroArch의 PSP코어(통칭 lr-ppsspp라고 합니다.)가 옵션이 상당히 부실합니다. PPSSPP의 소스코드를 이용해서 에뮬레이팅은 상당수준이지만 PPSSPP자체가 아직 완전하지 않아서 게임마다 설정을 다르게 줘야하고 이런 저런 삽질을 동원해야하는데 RetroArch는 다른 콘솔머신도 지원해야하다보니 크게 신경을 못 쓰는 것이 현실입니다.


즉, 통합 에뮬레이터로는 훌륭하지만 특정 기기의 성능은 그리 좋지 못하다는 의미지요. 특히 PSP의 명작이라 할 수 있는 DJMAX시리즈의 경우에는 링크디스크나 IO문제로 PPSSPP의 많은 설정과 기능을 요구합니다. 하지만 RetroArch의 PSP코어에는 이런 기능이 없습니다. 그래서 RetroArch의 PSP게임을 굴리면 완벽하게 돌아가지가 않지요. 게다가 RetroArch는 Adhoc을 이용한 온라인 기능도 부실합니다.


그래서 생각한것이 아에 RetroArch같은 통합에뮬레이터 시스템이 아닌 PPSSPP만 올려서 PSP 전용콘솔머신을 하나 만들자!라고 생각했습니다. 그래서 삽질을 시작했습니다. PSP게임외에 다른 콘솔은 Lakka에서도 아무 문제없이 굴러가니까 그 쪽은 그냥 Lakka를 쓰면 될테니까요.


PPSSPP 그 자체도 인터페이스는 상당히 편리하게 되어있고 패드만으로도 모든 옵션을 선택할 수 있게 잘 만들어져 있습니다.


다른 에뮬레이터와 다르게 상당히 예쁘게 잘 만들어져 있다. 디자인이 현대적이라고 해야할까.


그래서 이참에 백라이트 나간 노트북을 부셔서(!) 콘솔머신을 하나 만들기로 했습니다.

그래서 다음과 같은 계획을 하나 짰습니다.



1. 하드웨어는 백라이트 나간 오래된 노트북으로 하고 이것을 TV에 연결해서 쓸 수 있도록 한다.


2. 게임은 PPSSPP만을 올려서 PSP게임만 지원하게 한다.


3. 컨트롤러는 오로지 게임패드로 (다행히 PPSSPP가 게임패드만으로 굴릴 수 있다.)


4. FTP서버를 하나 만들어서 게임을 FTP로 전송할 수 있게 한다. (SMB도 생각했지만 FTP가 더 안정적이었습니다.


5. 라이브모드만 지원하되 Persistent모드로 만들어서 넣자. (설정 저장을 위해)


6. 어차피 나만 쓸 거 보안은 신경 끄자.



여기서 제일 중요하게 여긴것은 1번과 6번입니다. 사실 보안까지 신경쓰기 시작하면 취미로 하는 것이 일거리가 되기 때문에 처음부터 신경을 껐습니다.


세로로 세우기 위해서 다이소 도마꽂이에 꽂았는데 딱 맞는다. 도마꽂이가 랩톱 세우는데 최고였다.


그렇게 오늘 저의 게임기가 되어주실 노트북은 인텔 코어2듀오 콘로 2.4GHz 메모리 2GB 저장용량 250GB의 제품입니다. GPU는 자그마치 인텔 내장 그래픽. 백라이트가 나가서 액정을 그냥 떼버렸고 안테나는 외부에 노출 시켰습니다.


어차피 TV뒤쪽 공간에 밀어넣을 예정이니 모양은 상관없습니다.


그리고 상세한 제작 과정은 다음과 같습니다.


1. OS는 Customize(https://github.com/kamilion/customizer) 로 우분투 Mini-remix(http://www.ubuntu-mini-remix.org/)를 기반으로 한다.


1.1 Customizer를 리눅스 PC에 설치한다. (따로 설명하지 않겠습니다.)

1.2 Customizer-gui에서 ISO선택을 누르고 우분투 Mini-remix이미지를 선택한다.


1.3 소스 수정버튼을 누르고 한국서버를 선택한 다음 multiverse와 universe를 추가한다.


1.4 세팅 탭에서 위치(?)를 ko_KR.UTF8을 선택해서 한국어기반을 갖출 수 있도록 한다.

1.5 나머지는 터미널 버튼을 누른다음 명령으로 때운다. (sudo apt-get update 등등)


2. Customizer에서의 터미널 창에서 최대한 다른 것은 배제해야 하므로 다음 명령으로 기반만 갖춘다.


sudo apt-get install xorg alsa alsa-utils mesa-utils jstest-gtk fonts-nanum

sudo apt-get install --no-install-recommeds pulseaudio pulseaudio-utils slim wicd networkmanager openbox


이렇게 함으로서

소리가 나고(pulseaudio, alsa)

그래픽가속을 하고(xorg mesa)

네트워크에 접속을하며(wicd networkmanager)

최소한의 GUI세션에 접속을 할 수 있게 됩니다.(slim openbox)


물론 기반만 갖추었고 설정은 하나~~~도 안 했기 때문에 건드릴 것이 많지요.


3. PPSSPP는 그냥 PPA를 등록한다음 설치

sudo add-apt-repository ppa:ppsspp/stable
sudo apt-get update

sudo apt-get install ppsspp-qt


add-apt-repository에서 에러가 날 텐데요. PPA등록전에

sudo apt-get install python-software-properties software-properties-common


이 명령을 먼저 내려서 PPA등록용 스크립트들을 설치하도록 합시다. 왠지 쓸데없는 것이 설치된 듯하지만 귀찮은 것보단 이게 더 낫습니다.


4. 게임 이미지 전송용 FTP서버를 설치한다. 어떤 것을 설치해도 상관은 없지만 vsFTPD를 설치하겠습니다.


sudo apt-get install vsftpd


4.1 vsFTPd 설정

 sudo nano /etc/vsftpd.conf


다른 것은 기본값 혹은 마음대로 해도 되는데


write_enable=YES


이 옵션 만큼은 무조건 이렇게 해놓는다.


4.2 자신 있으면 SAMBA를 설치해도 되는데 나는 귀찮으니 PASS


5. slim을 설정해서 자동 로그온이 되도록 하자. slim은 데스크톱 관리자로 우분투의 lightdm보다 더 가볍고 세션 관리가 쉽기 때문에 선택


sudo nano /etc/slim.conf


제일 아래줄에 이렇게 적는다.

auto_login    yes
default_user  ubuntu


여기서 defulat_user는 Customizer에서 설정한 라이브유저 이름이다.(기본이 ubuntu라 그냥 여기서도 ubuntu)


6. openbox의 autostart를 만들어서 PPSSPP와 네트워크 관리자 등이 자동으로 실행되게 만들자.


sudo nano /etc/skel/.config/openbox/autostart


여기에 쉘스크립트 형태로 만들면 로그온 할때마다 자동으로 스크립트 형태로 실행된다.

sudo usermod -a -G audio $USER
sudo usermod -a -G video $USER
wicd-gtk &
start-pulse-audio-x11 &
xterm &
ppsspp --fullscreen
sudo shutdown -h now


다른 프로그램은 뒤에 &이 붙어있는데 (wicd-gtk는 무선랜 접속을 위함 만약 무선랜이 필요없으면 지워도 됨) ppsspp --fullscreen 뒤엔 없는 이유는 그 아래 명령어가 ppsspp가 종료될 때까지 실행되지 않도록 하기 위함이다.


보면 알겠지만 sudo shutdown -h now는 시스템 종료 명령어이다. 즉, PPSSPP의 실행이 끝나면 자동으로 시스템이 꺼진다는 것! 물론 xterm이나 wicd-gtk가 같이 실행되고 있으므로 Alt-Tab키를 눌러서 빠져 나올 수는 있다. 하지만 PPSSPP가 꺼지면 시스템 종료로 이어진다는 것!


7. 이제 라이브 ISO파일을 만들자!

터미널에 exit를 쳐서 빠져나오고

Customizer에서 ISO다시빌드 버튼을 누르면 시간이 지난뒤에 /home 폴더에 Ubuntu~~.iso파일이 하나 만들어졌을 것이다. 일단 궁금하니 VirtualBox나 Qemu같은 가상머신으로 테스트해보자. 부팅후에 PPSSPP가 실행되고 PPSSPP를 끄면 시스템이 꺼질 것이다. 이것이 잘 만들어졌다면 큰 그림은 완성


8. 이제 디스크를 준비합니다.

머신에 넣을 HDD를 USB to HDD기기로 USB장치로 인식되게 하셔야 합니다. (즉, 노트북에서 HDD를 꺼낸다음 연결합니다.) USB to SATA장비는 2만원에서 4만원 정도 합니다.


대충 이런형태의 물건이다. 저기 있는 SATA포트에 HDD를 연결하고 전원을 넣은다음 USB를 연결하면 PC가 외장하드로 인식한다.

Gparted를 실행!


보통은 /dev/sdb 혹은 제일 뒤쪽에 있는 것이 USB-HDD이니 해당 디스크를 선택한다.


그리고 파티션을 3개로 쪼개는데 포맷은 모두 ext4로 한다. 첫번째 파티션을 호환성을 위해 FAT32로 해도 상관은 없지만 ext4가 안정성은 더 높다.


예시로 든 것이므로 굳이 똑같이 따라할 필요는 없다. 다만 home-rw 파티션을 넉넉히 해주는 것이 중요하다. 게임 이미지가 저장될 공간이기 때문.


이 때 제일 처음 파티션은 ISO크기보다 약간 큰 정도면 되고(즉, ISO내의 내용물이 들어갈 자리) 두번째 파티션은 레이블을 casper-rw로 하고 40GB이상으로 잡는다. 나머지 파티션은 레이블을 home-rw로 하고 모든 용량을 투입하도록 하자.


2017. 5. 29 추가

파티션을 나눌 때 약 메모리 용량의 2배 크기 정도의 스왑파티션을 만들어두자. 가끔 메모리 부족으로 PPSSPP가 튕기는 경우가 있는데 PPSSPP가 종료되면 autostart 스크립트가 작동하면서 시스템이 종료되어버린다. 스왑을 잡아두면 이런 경우가 현저히 줄어들게 된다. 즉, 일종의 보험인 셈.


9. Unetbootin설치 및 실행


sudo apt-get install unetbootin

위 명령으로 unetbootin을 설치하고 실행하자. 아직 USB-HDD는 연결을 끊었다가 다시 연결하도록 하자.


위 스크린샷 처럼 Diskimage 라디오 버튼을 누르고 오른쪽의 ...버튼을 누른다음 아까 만든 ISO를 선택한다. 아래의 Drive는 제일 오른쪽 숫자가 1이 되는 장치를 선택한다.

(/dev/sdb1 혹은 /dev/sdc1 같이)


왜냐하면 아까 편집한 파티션의 제일 처음(아무런 레이블도 안 붙였던 ISO크기 정도의 파티션)이 바로 시스템 파티션이기 때문


그리고 Space used to preserve files across reboots라고 있는데 이것을 1MB라고 해 놓는다. 이 옵션이 바로 Persistent Live옵션의 필수다.


10. 아직 끝나지 않았다! 부트 옵션 수정!!!!!


USB-HDD내용물을 보면 1번 파티션에 ISO의 내용물이 거의 그대로 들어갔음을 알 수 있을 것이다. 여기서 몇가지 작업을 더 하도록 하자.


syslinux.cfg 파일을 관리자 권한으로 열자.


제일 위에 Timeout 100 이라고 쓰인 부분이 있다. 확 줄이자. 100초는 너무 길다. 한 5초?


그리고 부트옵션 중 Default 아래에

append  file=/cdrom/preseed/ubuntu.seed boot=casper

요렇게 써있는 부분이 있다.

여기에 몇가지 내용을 더 붙이자.


append  file=/cdrom/preseed/ubuntu.seed boot=casper lang=ko_KR keymap=kr net.ifnames=0 biosdevname=0

이렇게 해주면 무조건 한국어로케일로 부팅하게 된다. 그리고 무선랜의 인터페이스 이름이 wlan0로 만들어져서 다른 시스템에서도 wicd가 똑같이 작동 할 수 있게 된다.


그리고 casper-rw란 1MB짜리 파일이 보일 텐데 이건 그냥 삭제한다.


권한이 어쩌고 하면그냥 관리자 권한으로 밀어버리면 된다.


11. HDD를 다시 PC에 넣고 부팅


가상머신에서처럼 똑같이 작동한다면 시스템 구축에 성공한것이다. 이제 게임생활을 시작하자...가 아니라 네트워크 접속을 해서 게임 이미지를 밀어넣어야 할 시간이다.




12. 키보드를 이용해서 Alt-Tab키를 눌러 wicd-gtk를 띄우자. 일단 네트워크에 접속을 해야 뭘 밀어넣던지 말던지 할 것이 아닌가. (유선랜의 경우에는 별다른 문제없이 그냥 바로 접속 될것이다.)


네트워크에 접속이 완료되면 아래에 Wicd 창 아래에 IP주소가 뜬다. 이것을 가지고 다른 PC를 이용해서 FTP로 밀어넣으면 된다.


FTP프로그램은 파일질라가 제일 좋은데 다른 클라이언트들이 접속이 끊어지면 파일 전송도 같이 끊어버리는 반면 파일질라는 재접속을 해서라도 파일 전송을 끝내주기 때문에 굉장히 안정적입니다.


호스트에 게임머신의 IP를 넣고 사용자명에 아까 라이브 유저(기본값: ubuntu)를 적고 연결을 하면 그냥 연결이 됩니다. 왼쪽 로컬 사이트에서 PSP게임 이미지를 찾은 다음 그냥 업로드를 하면 끝입니다. 업로드 되는 곳은 /home/ubuntu(라이브유저이름)입니다.


13. 이제 실행해 볼까?


아쉽지만 소리 문제가 있을 수 있습니다. 난 HDMI를 통해 소리가 나오길 원했는데 엉뚱하게 노트북 스피커로 나오면(...)


Alt-Tab을 눌러서 xterm창을 띄웁시다.

pacmd set-card-profile 0 output:hdmi-stereo


이렇게 치면 HDMI로 소리가 나오게 될 겁니다. 우분투는 HDMI연결 여부를 확인하고 알아서 스위칭을 해주는데 이쪽은 그런 기능따윈 만들어 넣지도 않았으니 그냥 수동으로 해주는 것입니다.


게임패드를 USB포트에 연결하면 알아서 연결이 될 것이고 PPSSPP상에서 설정을 약간 하면 이후로는 키보드가 필요없을 것입니다. 가끔 게임 이미지 밀어넣을때정도?


이제 마음껏 게임을 해볼까요??후후...


개인적으로 XBOX패드보다는 PS패드가 이 시스템에는 더 잘 어울린다고 생각합니다.

PSP말고 다른 콘솔도 하고 싶으시다고요? 그럼 그냥 LAKKA쓰세요.

,