IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
메인 컨텐츠로 가기

한국 developerWorks  >  리눅스 | 오픈 소스 | Multicore acceleration  >

PS3에서 리눅스 개발, Part 1: 장난감을 넘어서

모니터 조정하세요

developerWorks
문서 옵션

JavaScript가 필요한 문서 옵션은 디스플레이되지 않습니다.

영어원문

영어원문


제안 및 의견
피드백

난이도 : 중급

Peter Seebach, 자유기고가, Plethora.net

옮긴이: 박재호 이해영 dwkorea@kr.ibm.com

2008 년 6 월 24 일

소니 플레이스테이션 3(PS3)에서 리눅스(Linux®)가 돌아가지만, 제대로 돌리려면 미조정이 필요합니다. 연재물 1번 타자인 이 기사에서는 Peter Seebach가 PS3 리눅스의 기능과 장점을 소개하고, 미조정에서 몇 가지 장점을 얻기 위한 방법을 설명합니다.

소니가 처음으로 플레이스테이션 3에서 특별한 부가 장치 없이 리눅스를 돌릴 수 있다고 발표했을 때, 반응이 뜨거웠다. 초기에 리눅스를 바로 설치하기란 상당히 어려운 작업이었다. 지원 설치 프로그램은 특별히 만든 PS3 커널이 동작하도록 만들기 위해 페도라 코어 5나 6 설치 DVD를 손으로 뜯어고쳐 만든 전용 스크립트를 돌렸다. 사람들은 우분투 같은 여타 시스템을 돌리기 위해 수 많은 시간을 소비했다. PS3에서 돌아가는 전용 그림 사용자 인터페이스 설치 프로그램으로 무장한 테라소프트에서 만든 옐로우 독 리눅스는 단연 돋보였다.

세월이 흐르자 강산도 바뀌었다. 페도라 7은 포장만 뜯으면 PS3에 설치가 가능해졌지만, 설치 DVD를 찾기 위해 PS3 저장 드라이버를 선택하는 부분과 설치 프로그램을 볼 수 있도록 초기 설치 명령행에서 비디오 모드를 잡기 위해 설정값을 기억하는 부분이 가장 큰 난관이었다.

결국 PS3에서 리눅스를 돌릴 수 있게 되었다. 그것도 아주 쉽게 말이다. 문제는 제대로 동작하지 않는다는 점이다. PS3를 저렴한 셀 개발 시스템으로 선택했다면, 기본 설치 과정을 그대로 따르다 보면 셸 프롬프트가 떨어질 무렵에 수백 메가바이트에 이르는 스왑을 탑재한 시스템이 만들어진다는 사실에 당황스러울지도 모르겠다.

이 연재물에 대하여

기사 셋으로 구성된 이번 연재물은 전도 유망한 개발 환경으로서 PS3 리눅스를 살펴본다.

첫 번째 기사인 1부에서는 PS3에 밀접한 기본 환경 설정을 위해 볼트와 너트를 조이는 방법을 소개하고, 효율적으로 활용하는 방법을 보여주며, 성능을 개선하거나 좀 더 쓸만한 화면을 보기 위한 몇 가지 팁을 제안한다.

2부3부는 PS3를 개념 증명 시연 기계에서 실제 동작하는 시스템으로 바꾸도록 특히 성능과 튜닝 문제점을 파고 든다. 물론 이런 기법은 일반 리눅스에도 적용이 가능하다.

시작하기

페도라 7을 구한다(페도라 8도 동작하지만, 이 기사를 작성할 무렵에 페도라 7을 사용했다). 물론 좀 더 PS3에 가깝게 만들어진 배포판이나 작고 효율적인 배포판을 사용할 경우 더 좋은 결과를 얻을지도 모르겠지만, 페도라 7에는 강력한 장점이 있다. 바로 셀/B.E. SDK 지원이다(물론 RHEL 5.1도 지원하지만 페도라 7에서 지원이 훨씬 더 강화되었다).

나는 부하 분산이라는 이유 때문에 비트토렌트 광이 되었다. 이는 다운로드 시간만큼 업로드를 하도록 클라이언트를 동작한 채로 남겨둬야 함을 의미한다. 오픈 소스 소프트웨어는 협력을 바탕으로 하므로 대역폭 절감을 위한 협력도 아주 중요한 출발점이 된다. 전체 DVD 이미지(참고자료 참조)를 내려받는 데 시간이 걸리므로 우선 PS3 리눅스에 대한 배경 지식을 살펴보자.

플레이스테이션 2도 리눅스를 지원하지만 사용하기에 조금 고통스럽다. 소니는 PS2용 전용 키트를 발표했지만, 두껍고 낡은 PS2에 추가 하드 드라이브를 장착해야 했다. 나중에 나온 (좀 더 일반적인) "얇은" PS2 유닛은 지원하지 않았고, 키트는 금세 사라져버렸다. 하지만 사라진 근본 이유는 개념 테스트 용으로 만들어졌기 때문이다. 시스템은 메모리도 적었고, 특수한 컴파일러 도구도 없었고, CPU는 고만고만한 MIPS 코어 기반이었다. 벡터 유닛은 전용 도구가 아니면 지원되지도 문서화되어 있지도 않았다.

반면, PS3는 출시 전부터 리눅스를 지원하고 있었으며, 소니는 지원 코드와 패키지를 광범위하게 퍼트렸다. 시스템 출시 즈음에 페도라 5와 6를 직접 지원하는 "셀 추가" CD가 배포되었으며, PS3 이식을 위해 다른 배포판에 필요한 모든 파일 역시 제공했다. 결과적으로 페도라 7은 별도 CD 없이도 PS3에서 동작했다. 물론 부트로더 설치를 위해서는 소니가 제공하는 프로그램을 사용해야 한다. 추가 소프트웨어 CD(참고자료 참조)는 새로운 커널 버전에 대한 업데이트를 지속적으로 반영하고 있다.

하이퍼바이저 이해하기

PS3의 기본 명세는 주 메모리 256MB, 셀/B.E. 프로세서, 유선 이더넷(몇몇 모델에는 802.11b/g 무선 이더넷 탑재), 그래픽 유닛인 RSX(자체 메모리 256MB), SATA 디스크 드라이브다. USB 포트, 몇몇 모델에 장착된 카드 리더, 블루투스와 같은 주변 장치도 사용이 가능하다. 하지만 이런 물리적인 기계에서는 PS3 리눅스가 동작하지 않는다.

나머지 SPE는 누가 먹었나?

셀/B.E.에는 SPE가 여덟 개 달려있다. PS3 리눅스에는 여섯 개만 보인다. 하나는 하이퍼바이저가 사용한다. 나머지 하나는 어디로 갔을까?

정답을 말하자면, PS3에는 SPE 하나가 비활성 상태로 출시된다. 이렇게 하면 SPE 하나에 결함이 있는 경우에도 칩을 사용할 수 있으므로 칩 수율을 높이고 비용을 떨어뜨린다. 따라서 비록 이론적으로 셀/B.E.에 SPE 코어가 여덟 개 달리지만, PS3 하드웨어에는 단지 일곱 개만 사용 가능하다. 이 중 하나는 하이퍼바이저가 설정한 보안 작업을 맡으므로 리눅스나 게임용으로 여섯 개만 사용 가능하다.

PS3에서 리눅스는 하이퍼바이저 감독 하에 동작한다. 기본적으로 PS3 리눅스는 Xen 가상 기계와 비슷한 가상 기계에서 동작한다. 하이퍼바이저는 PS3 하드웨어 접근을 통제하고 걸러낸다. 예를 들어, 리눅스 코드는 RSX 그래픽 프로세서에 직접 접근하지 않는다. 대신 어느 정도 효율적인 2D 프레임버퍼를 지원하는 특수한 디바이스를 제공해 제한적인 접근만 허용한다.

하이퍼바이저는 다양한 변환 기능을 제공한다. 예를 들어, 앞서 언급했듯이, 하이퍼바이저는 리눅스에 가상 프레임버퍼 디바이스를 제공한다. 하이퍼바이저는 RSX 그래픽 코어를 사용해 이런 디바이스를 구현한다. 비슷하게 리눅스는 SATA 하드 드라이브에 직접 접근하지 못한다. 대신 리눅스는 SCSI 드라이브에 접근하며, SCSI 드라이브로 들어온 요청은 'OtherOS" 파티션에 할당된 내장 드라이브 영역으로 사상된다. PS3 게임 소프트웨어가 디스크 일부를 사용하는 방식처럼 접근하기란 물리적으로 불가능하다.

네트워크 하드웨어는 아마도 가장 흥미로운 구성 요소이지 싶다. PS3 리눅스는 기가비트 유선 이더넷이나 802.11g 무선 이더넷을 접근하지만 한 번에 하나만 가능하다. 네트워크 인터페이스를 설정할 때, SSID로 무선 인터페이스를 설정한다. 하이퍼바이저는 무선을 사용하거나, 그렇지 않다면 유선 인터페이스를 사용한다.

가전 제품 비디오 모드 이해하기

PC 하드웨어에 익숙한 사람이 이 기사를 읽으면, 비디오 모드 소개 부분에서 이상한 용어가 보일 것이다. 전체 해상도("1024x768") 관점이나 암호 같은 이름("XGA", "SXGA" 등) 대신 수평 해상도 관점에서 대다수 비디오 모드를 설명하고 있다. NTSC 표준을 사용하는 미국에서, SDTV(Standard Definition TV)는 480 해상도다. 하지만 잠깐만!

실제로 프레임당 480행을 그리려면 신호에 실리는 대역폭이 충분하지 않으므로, 240행을 번갈아가며 보낸 다음 번갈아가며 화면에 출력하는 방법을 사용한다. 즉 홀수 행을 한 프레임에 실어 보내고 짝수 행을 다음 프레임에 실어 보내는 인터레이스 기법이 쓰인다. 이를 "480i"라고 부르며, i는 인터레이스 해상도를 가리킨다(심지어 몇몇 시스템에서는 480i조차 지원하지 못하며, 240행을 대신 사용한다).

(최신 XBox와 게임 큐브, PS2 같은) 몇몇 게임 콘솔과 많은 DVD 재생기는 컴포넌트 비디오 케이블을 사용할 때만 적용 가능한 "480p"라는 추가 옵션을 지원한다. "p"는 프로그레시브를 가리키며, 전체 480행을 프레임 하나에 넣는다. 몇몇 TV 제조사는 HDTV(High Definition TV)와 비교되도록 EDTV(Enhanced Definition TV)라는 용어로 480p 지원을 표시한다.

좀 더 높은 해상도는 720p(720행, 프로그레시브), 1080i(1080행, 인터레이스, 540행을 번갈아가며), 1080p(1080행, 프로그레시브)가 있다. 각 해상도 사이에 주도권 경쟁이 치열하지만, 비용에 민감한 하드웨어 개발자들은 단지 몇 가지 고해상도만 지원하도록 장비를 설계한다.

각 해상도는 수평 해상도를 명시하지 않지만, 기본적으로 PS3는 16x9 비율에 맞춰 출력을 조정한다고 가정해도 무방하다.

마지막으로 이 모든 해상도는 표준 TV에서 오버스캔을 포함한다. 이미지는 일반적으로 화면 경계를 조금 넘어서 출력되므로, 사용자 시선을 빼앗지 않기 위해 이미지 주변에 검은 영역이 없도록 주의하자. 이런 이유 때문에 기본 리눅스 화면 처리 방식은 이론적인 전체 해상도를 꽉 채우는 대신 단지 화면 일부만 사용한다. 각 비디오 모드마다 모든 공간을 실제로 다 사용하는 "전체 화면" 대응 비디오 모드가 존재한다. 테라소프트는 비디오 모드에 대해 아주 훌륭한 설명을 제공한다(참고자료 참조).

그렇다면 수정한 명세를 살펴보자. PS3 리눅스는 SPE가 여섯 개 달린 셀/B.E. 프로세서, 대략 212MB짜리 주 메모리, 단일 네트워크 인터페이스, SCSI 디스크(카드 리더가 달려있다면 SCSI 디스크가 여러 개 추가된다), DVD-ROM, CD-ROM, 블루레이를 위한 SCSI 디바이스, USB와 블루투스 포트를 탑재한 가상 기계에서 동작한다. 그래픽은 전용 프레임버퍼 디바이스에서 제공하며, 광범위한 비디오 모드를 지원한다(가전 제품 비디오 모드 이해하기 보충 기사 참조).

개발 환경 계획하기

PS3를 개발 용도로 멋지게 사용하려면, 우선 개발 환경에서 필요한 사항이 무엇인지를 결정해야 한다. X를 완전히 버려도 상관없다면 상당한 메모리 절약이 가능하다(Gnome을 기본으로 동작하는 페도라는 메모리 절약 정신을 강조하는 회사와는 거리가 멀다). 상당수 시스템 시작 유틸리티는 대부분 X를 통해 접근이 가능하지만 실행 과정에서 많은 시간을 소비한다. Gnome 아래 GUI 패키지 업데이터를 돌려봤는데, 여러 시간 동안 돌고 있었다. 아마도 프로세스가 차지하는 전체 메모리 사용량이 375MB이므로 물리적인 메모리가 더 필요했던 모양이다. 대다수 시간을 디스크 스왑에 사용했으므로 VAX에서 돌리는 emacs처럼 스레싱이 일어났다.

여기서 배운 교훈은 가용 메모리가 PS3의 아킬레스 건이 되리라는 사실이다. 필요하지 않은 서비스는 가능한 모두 꺼버리자. gnome-terminal 대신에 xterm을 사용하자. 만일 다중 윈도우가 필요하다면, xterm을 여러 개 띄우는 대신에 screen 유틸리티를 고려하자.

화면 출력 옵션

모니터가 없는 환경에서 운영한다면, 화면 출력 옵션은 그다지 신경쓰지 않아도 된다. 하지만 모니터에서 무슨 일이 일어나는지 보기를 원한다면, 화면 출력 옵션을 고려해야 한다. PS3에서 제공하는 HDMI 출력을 사용하면 최고 화질이 나온다. 컴퓨터 모니터가 있다면, HDMI-DVI 변환 케이블이 저렴하지만 모니터가 HDCP(High-bandwidth Digital Content Protection)를 지원하는지부터 확인해야 한다. 만일 모니터가 HDCP를 지원하지 않으면 검은 화면이나 밝은 색상으로 고정된 화면이 나올 것이다. KVM 스위치를 사용한다면 모니터뿐만 아니라 KVM도 HDCP를 지원해야 한다. 불행하게도, 이런 보안 "기능"을 꺼버릴 방법은 없는 듯 보인다. 암호화하지 않은 신호는 사용 자체가 불가능하다. 고해상도 영화를 재생하는 장치 입장에서 경제성을 따지는 모습은 지극히 자연스럽지만, X 데스크톱을 보기 위해 특별한 허가가 필요하다는 사실이 조금 짜증스럽다. HDMI/DVI는 PS3에서 가능한 모든 비디오 모드를 지원한다. 일반 가전 제품에서 사용하는 720p나 PC에서 사용하는 WXGA 모드 둘 다 가능하다.

HDCP가 불가능한 모니터거나 DVI 케이블이 없다면, 다음으로 선택 가능한 방법은 컴포넌트 비디오다. 몇몇 모니터와 대다수 TV가 지원하는 컴포넌트 비디오는 예전에 사용했던 구닥다리 VGA와 아주 흡사한데, RCA 연결 단자 세 개로 RGB 신호가 분리되어 나온다. 컴포넌트 비디오 케이블은 추가 옵션이지만 PS2와 똑같은 컴포넌트 비디오 케이블이므로 PS2 사용자라면 기존에 있던 케이블을 사용하자. 컴포넌트 비디오는 720p와 1080i 출력을 안정적으로 지원하지만 1080p는 지원하지 않을지도 모른다(뭐가 뭔지 잘 모르겠다면 보충 기사인 가전 전자 제품 비디오 모드 이해하기를 참조한다). 컴포넌트 비디오는 다음에 소개할 두 옵션보다 높은 해상도와 또렷한 화면을 제공한다.

컴포넌트로도 연결이 불가능하다면, S-비디오를 지원하는 장비를 찾아보자. S-비디오는 480i를 지원하며, 신호를 휘도와 채도(즉, '밝기'와 '색상')라는 채널 두 개로 나눈다. 마지막 옵션인 컴포지트보다 좀 더 날카로운 이미지를 제공한다. 컴포지트 비디오는 보통 노랑색인 아주 낡은 RCA 잭을 사용하며, 거의 모든 장비와 호환이 가능하다. 가능하다면 컴포지트는 피하자.

페도라 7 설치 프로그램은 720p 아래에서는 거의 사용이 불가능하다는 점을 고려하자. 물론 텍스트 모드로 바꾸면 된다. 실제로 PS3를 개발 시스템으로 사용할 계획이라면, 좀 더 높은 해상도 모드를 선호할 것이다. 리눅스 시스템은 대형 디스플레이 장비와 친하므로, 페도라 윈도우 환경을 저해상도 화면에서 보면 정나미가 떨어진다. 또한 저해상도 화면에서는 특히 컴포지트 케이블로 연결할 경우 화면이 너무 번져 글자를 읽기조차 어렵다.

내 시스템은 DVI를 경유해 XWGA(1280x768)로 설정했는데, 이 정도면 상당히 쓸만하다.




위로


페도라 설치하기

이제 페도라 DVD를 다 내려받았으면, 설치 과정으로 넘어가자. 디스크 파티션과 OtherOS 부트 로드 시동을 위해 일반적인 PS3 절차를 따르자(이렇게 할 경우 모든 자료를 날려버리므로, 백업이 필요하다!). 페도라 DVD를 넣고 부팅하고, linux64 textlinux64 video-720pkboot 프롬프트에서 입력하자. 720p는 최소 설치 가능 비디오 크기다. 컴포넌트나 DVI 출력이 동작하지 않을 경우 text를 사용해야 한다. 기본 옵션으로 부팅할 경우 페도라 로고가 화면에 뜨면서 갑자기 얼어버린다. 실제로 설치 윈도우는 기본 화면 영역보다 좀 더 크므로 PS3 전원을 내리고 다시 시도하는 방법 이외에는 뾰족한 수가 없다.

이런 과정을 통해 계속해서 페도라 업데이트 서버에서 최신 업데이트를 내려받아 설치하자. 초기 설치와 마찬가지로 업데이트 설치에도 시간이 좀 걸린다. 두 경우 모두 일단 시작하면 몇 시간 잡아먹을 각오를 해야 한다.




위로


다음: PS3 애드온 설치하기

이 연재물 두 번째 기사에서는 여러분 시스템에 최신 PS3 애드온을 설치하는 방법과 갱신하는 방법을 설명하고, 숨쉴 공간을 마련하기 위해 기본 메모리 사용량을 줄이기 위한 몇 가지 환경 설정 변경 방법을 다루겠다.



참고자료

교육

제품 및 기술 얻기

토론


필자소개

Peter Seebach 사진

Peter Seebach는 여러 해 동안 컴퓨터를 사용해온 만큼, 컴퓨터 환경에 익숙하다. 하지만 마우스를 왜 그렇게 자주 청소해야 하는지는 아직도 이해하지 못하고 있다.




기사에 대한 평가


보다 나은 서비스를 제공하기 위함이오니 잠시 짬을 내어 이 양식을 제출하여 주십시오.



 


 


 


이 문서 북마킹 하기

mar.gar.in mar.gar.in naver naver eolin eolin del.icio.us del.icio.us





위로


DB2, Lotus, Rational, Tivoli, and WebSphere are trademarks of IBM Corporation in the United States, other countries, or both. Linux is a trademark of Linus Torvalds in the United States, other countries, or both. 기타 회사, 제품, 및 서비스명은 다른 상표나 서비스 마크일 수 있습니다.

developerWorks 콘텐트를 다른 사이트에 전재하기:
developerWorks 콘텐트에 대한 저작권은 IBM에 있습니다. IBM의 서면 허가나 원본 저자의 허락이 없이는 전재를 금합니다. 저희 콘텐트를 전재하시려면 IBM developerWorks 담당자 에게 문의하십시오.
    IBM 소개 개인정보 보호정책 문의