OpenDingux는 주로 휴대용 게임기(예: Anbernic, GCW Zero 등)에서 사용되는 리눅스 기반의 임베디드 운영체제입니다. 경량화된 리눅스 + SDL 기반 UI + libretro 호환 게임 실행 환경으로 구성되어 있으며, 휴대용 게임 에뮬레이터 환경 구축에 최적화되어 있습니다.

OpenDingux의 전체 구조

┌─────────────────────────────────────┐ │ 사용자 앱 / 에뮬레이터 │ │ (libretro cores, SDL 게임 등) │ └─────────────────────────────────────┘ │ (SDL2 / OpenGL ES / libretro API) │ ┌─────────────────────────────────────┐ │ 유저랜드 라이브러리 │ │ glibc/uClibc, libSDL, libdrm, ALSA │ └─────────────────────────────────────┘ │ ┌─────────────────────────────────────┐ │ OpenDingux 커널 │ │ Linux 커널 + Dingux-specific │ │ 패치 및 드라이버 (framebuffer, │ │ keypad, battery, audio 등) │ └─────────────────────────────────────┘ │ ┌─────────────────────────────────────┐ │ 하드웨어 (SoC, LCD 등) │ └─────────────────────────────────────┘

핵심 구성 요소 상세

1. Linux Kernel (OpenDingux 커널)

주로 MIPS 아키텍처 기반

특화된 커널 모듈:

Framebuffer (fbdev)

키 입력 (input driver)

오디오 (ALSA)

배터리 상태, 전원 관리

Real-time 처리를 위한 커널 옵션 포함

2. C 라이브러리

uClibc 또는 glibc 기반

정적 링크 및 공간 효율성 고려

3. 그래픽 시스템

보통 fbdev (프레임버퍼 직접 사용) 기반

SDL1/SDL2 지원

OpenGL ES는 기기에 따라 다름 (대부분은 없음)

4. 오디오 시스템

ALSA (Advanced Linux Sound Architecture) 사용

저지연 오디오 처리 가능

5. 입력 시스템

/dev/input/event* 경로 기반

사용자 정의 키맵 제공 (핸드헬드 기기의 물리 버튼)

6. 런처 / UI

gmenu2x 또는 SimpleMenu, JZ-Launcher 같은 런처 UI

앱 선택 및 실행 기능 제공

.opk 포맷 사용 (애플리케이션 패키지)

7. 패키징 시스템: OPK (Open Package)

SquashFS로 만든 일종의 앱 컨테이너

.opk 파일은 앱, 아이콘, 메타데이터 포함

외부 SD카드에서 직접 실행 가능

OpenDingux vs 일반 Linux

항목OpenDingux일반 Linux 배포판목적휴대용 게임기 전용범용GUI없음 (경량 런처 UI)X11, Wayland 등 사용 가능그래픽Framebuffer 직접 접근DRM, OpenGL, Vulkan패키징.opk 파일.deb, .rpm, .apk 등리소스 사용량매우 적음 (수 MB 수준)상대적으로 높음성능 최적화게임 실행 위주로 최적화일반 용도

활용 예

Anbernic, GCW Zero, TrimUI Mini, Miyoo Mini 등에서 사용

libretro core (SNES9x, Genesis Plus GX 등) 실행

SDL 기반 인디 게임, Doom 포트, DOSBox 등 구동

참고용: 디렉터리 예시 (rootfs 기준)

/media/data/ ├── apps/ ← OPK 앱 위치 ├── config/ ← 런처 및 앱 설정 ├── local/ ← 공유 라이브러리 ├── roms/ ← 게임 ROM 디렉터리 └