GP2X는 2005년 GamePark Holdings에서 출시한 리눅스 기반 휴대용 게임기입니다. 당시로선 드물게 오픈 리눅스 플랫폼을 제공하여 사용자들이 직접 게임, 에뮬레이터, 앱을 개발하고 실행할 수 있었습니다.

아래에 GP2X의 운영체제 구조를 기술적 깊이와 함께 정리해드리겠습니다.

GP2X 운영체제 구조 요약

┌────────────────────────────┐ │ 사용자 애플리케이션 │ ← SDL 게임, 에뮬레이터, 스크립트 └────────────────────────────┘ │ (libSDL, DirectFB, ALSA 등) │ ┌────────────────────────────┐ │ 리눅스 유저랜드 │ ← BusyBox, uClibc, shell 등 └────────────────────────────┘ │ ┌────────────────────────────┐ │ Linux Kernel │ ← 2.4.x 커널 (ARM9용) │ (Framebuffer, input, │ │ USB, I2C, NAND, ALSA) │ └────────────────────────────┘ │ ┌────────────────────────────┐ │ 하드웨어 (SoC: MagicEyes)│ │ - Dual CPU (ARM920T + DSP) │ │ - LCD, NAND, audio, GPIO │ └────────────────────────────┘

세부 구성 요소

1. 커널

Linux 2.4.x 커널 기반

ARM920T용으로 포팅됨 (ARM9TDMI, MMU 지원)

MagicEyes MP2520F 칩셋의 장치 드라이버 포함

Framebuffer 디스플레이

ALSA 오디오

NAND 플래시 드라이버

입력 장치: D-pad, 버튼, USB HID 등

2. 유저랜드

uClibc 기반의 C 라이브러리 (경량)

BusyBox 쉘 및 유틸리티 모음 사용

/bin/sh, /etc, /mnt, /dev, /proc, /sys 등 최소한의 리눅스 파일시스템 구조 유지

FAT 파일시스템으로 SD카드 마운트 지원

3. 그래픽 및 UI

주로 Framebuffer 기반 그래픽

SDL 1.2 또는 DirectFB를 사용한 게임/앱 실행

초기 펌웨어는 기본 GUI 제공 (메뉴에서 앱 실행)

일부 커스텀 펌웨어에서 GMenu2X와 같은 런처 지원

4. 오디오

ALSA (Advanced Linux Sound Architecture) 사용

기본적으로 DAC → 증폭기 → 헤드폰/스피커 경로

믹서 장치 제어는 /dev/mixer 또는 amixer 등으로 가능

5. 입력 장치

/dev/input 기반은 아니고, 초기에는 직접 GPIO 접근

버튼, 볼륨, 조이스틱 등은 메모리 맵 I/O 또는 전용 드라이버로 처리

6. 파일시스템

내부 NAND: cramfs 또는 ext2

외부 SD 카드: FAT16/32

대부분 앱은 SD 카드에 저장 및 실행

애플리케이션 구조

.gpe, .gpu, .sh 파일 실행

.gpe: 실행 가능한 ELF 바이너리 (주로 SDL 앱)

.gpu: 쉘 스크립트

SDL, OpenAL, DirectFB 등 경량 라이브러리를 statically link하여 배포

개발 환경

Toolchain: ARM GCC (arm-linux-gcc)

빌드 방식: 대부분 SDL이나 직접 프레임버퍼 접근 방식

에뮬레이터와 이식된 게임 많음:

SNES9x, PicoDrive, MAME, Duke Nukem 3D, Quake 등

커스텀 펌웨어 확장

커뮤니티에서 만든 다양한 펌웨어:

GMenu2X 런처

ScummVM 통합

libretro 기반 일부 core

비교: GP2X vs OpenDingux

항목GP2XOpenDingux (현대 휴대용)커널Linux 2.4.xLinux 3.x~5.xlibcuClibcglibc/uClibc그래픽FramebufferFramebuffer + SDL2/OpenGL ES사운드ALSAALSA런처 UI기본 GUI / GMenu2XGMenu2X / SimpleMenu 등성능ARM920T (200MHz)MIPS/RK3326 등 (1GHz 이상)OPK 패키지 사용XO (SquashFS 기반 앱 패키지)

결론

GP2X는 리눅스를 비교적 단순하게 구성한 임베디드 플랫폼이며, 당시로서는 매우 유연하고 자유로운 개발 환경을 제공했습니다. 현대 기준에서는 단순하지만, 그 구조는 현재의 OpenDingux나 안드로이드 기반 에뮬레이터 환경의 전신이라 볼 수 있습니다.

원하시면 GP2X에서 실행 가능한 SDL 애플리케이션 예제나, 간단한 프레임버퍼 직접 제어 코드도 제공해드릴 수 있어요. 원하시나요?