본문 바로가기

Geek

NDSL에 DSLinux 설치기.

최근에 해킹 관련 세미나에서 NDSL라는 휴대용 게임기를 통해 해킹을 하는 방법(?)에 대한 이야기를 들었다. 물론 휴대용 게임기인 만큼 일반 PC보다는 제약이 많았지만, 다양한 시도가 가능하는 것에 매우 흥미를 느끼게 되었다. 무엇보다 그런 시도를 가능하게 할 수 있는 리눅스를 설치할 수 있다는 점이 내겐 더 큰 매력이었다.

NDSL에 설치할 수 있는 리눅스를 개발하고 있는 사이트는 http://www.dslinux.org/index.html 이다. 이 사이트는 기존의 리눅스 커널 + uClibc 를 이용하여 ARM 칩에 적용 가능한 리눅스 커널을 개발하고 있다. 물론 기존의 프로젝트에 있는 대부분의 소스를 활용하고 있지만, NDSL에 맞게끔 관련 라이브러리나 인터페이스를 수정하는 엄청난 수고(?)를 하고 있는 고마운 사이트이다.
처음에는 http://kineox.free.fr/DS/ 사이트에서 미리 빌드해 놓은 것을 사용해볼까 하다가 역시 리눅스를 컴파일해야 제맛(?)이 나므로 http://dslinux.org/cgi-bin/moin.cgi/CompilingDSLinux 여기에서 설명해준 순서에 따라 컴파일을 진행해보았다.

참고로 아래에서 진행하는 모든 컴파일 과정은 리눅스에서 진행한 과정이다. 일단 2개의 파일을 다운로드 받아야 한다. 하나는 리눅스 커널 + 잡다한 라이브러리 및 프로그램들이 포함된 소스를 받아야 하고 다른 하나는 ARM칩용 크로스컴파일러를 다운받아야 한다. 다운로드는 위쪽 사이트를 참조해도 되고 다음과 같이 다운로드를 진행할 수 있다.
wget http://stsp.spline.de/dslinux/dslinux-snapshot.tar.gz
wget http://stsp.spline.de/dslinux/toolchain/dslinux-toolchain-2007-11-03-i686.tbz

참고로 소스는 svn을 통해 다운받을 수도 있지만, 권장하고 싶지 않다. 저 위쪽 소스가 압축해서 약 275Mbyte이다. 그걸 svn으로 다운 받으려면 대략 몇시간 정도는 잡아먹을 것이다. 솔직히 아무 생각없이 시도했다가 40분이 지나도록 다운받고 있길래 그냥 포기했었다.

나는 위 파일을 HOME 디렉토리에서 NDSL이라는 디렉토리를 생성하고 그 하위 폴더에 생성하였다.
cd ~
mkdir NDSL
mv {다운로드폴더}/dslinux-snapshot.tar.gz NDSL
mv {다운로드폴더}/dslinux-toolchain-2007-11-03-i686.tbz NDSL
cd NDSL
tar xvzf dslinux-snapshot.tar.gz
tar xvjf dslinux-toolchain-2007-11-03-i686.tbz

일단 위와 같이 하고 나면 NDSL 폴더 밑에 dslinux라는 폴더와 dslinux-toolchain-2007-11-03-i686 라는 폴더가 생성되어 있을 것이다. 이 중에서 dslinux-toolchain-2007-11-03-i686는 컴파일을 위한 실행파일들이 존재하므로 하위 디렉토리의 bin 디렉토리를 PATH에 넣어줘야 한다.
export PATH=$PATH:$HOME/NDSL/dslinux-toolchain-2007-11-03-i686/bin

그런 후에 dslinux 디렉토리로 이동하여 폰트설정과 터미널설정을 해준 뒤 컴파일을 하면 된다. 일단 폰트설정하는 방법은,
cd $HOME/NDSL/dslinux
make menuconfig

그런 후에 다음과 같이 선택해야 한다.
Kernel/Library/Defaults Selection ---> [*] Customize Kernel Settings
사용자 삽입 이미지 사용자 삽입 이미지

위 과정을 모두 마치고 Exit하면 이후 설정을 계속 진행할 수 있는데 그 설정은 다음과 같다.
  Device Drivers  --->
    Graphics support  --->
       Console display driver support  ---> [*]   Mini 6x6 font
사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지

위와 같이 폰트 설정을 마무리 하면 터미널을 2개 이상 사용할 수 있는 설정을 해주어야 하는데 그것은 현재 dslinux 디렉토리에서 vendors/Nintendo/DLDI/inittab 파일을 수정(R4의 경우)해줘야 한다.
수정 내용은 다음과 같은 라인을 추가하면 된다.
tty2::linux:/usr/bin/agetty 38400 tty2

그런 후에 dslinux에서 "make" 를 하고 나면 빌드가 시작되고 빌드가 모두 마무리 되고 나면 dslinux 밑에 image라는 폴더가 생겨나고 거기에 몇가지 파일들이 생겨난다. image 폴더안의 파일중 dslinux.nds 파일과 dslinuxm.nds 파일을 닥터에 맞도록 변환해주어야 하는데 http://kineox.free.fr/DS/dslinux-dldi.tgz 파일을 다운로드 받고 위 두 파일을 자신에 맞는 닥터용으로 변환해주면 된다. 압축을 풀어보면 실행파일과 변환 정보 파일이 있는데 적당히 두들겨(RTFM?)보면 손쉽게 변환할 수 있을 것이다. 그리고 http://dslinux.org/cgi-bin/moin.cgi/RunningDSLinux 사이트를 보면 쉽게 알 수 있듯이 플래쉬 메모리 최상위 디렉토리에 아래와 같은 식으로 생성된 파일을 넣어두면 된다.
 CF/SD card
   |--dslinux.nds
   |--dslinuxm.nds
   |
   |--linux/
      |
      |--etc/
      |  |--... <a few files>
      |
      |--home/
      |
      |--lib/
      |  |--... <a few files>
      |
      |...
      .
      .
      .

마치 내가 새롭게 메뉴얼이라도 작성한 듯 싶은데 사실 위에 있는 링크들에 다 있는 내용이고 그대로 진행해본 것 뿐이다. 더군다나 그 과정이 별로 어렵지도 않은데 쓸데없는 짓을 한 것 같기도 하다. -_-;;
일단, 위처럼 진행해서 리눅스를 이미지를 설치했으니 기념샷을 마지막으로 마무리 해야겠다.
사용자 삽입 이미지 사용자 삽입 이미지
일단 DSLinux가 설치되었으므로 앞으로는 DSLinux에 있는 FTP나 텔넷을 이용하여 어떻게 활용될 수 있는지 찾아보고 이에 대한 사용기를 올려보도록 할 예정이다.