@@ -116,6 +116,57 @@ docker run --rm -it \
116116docker compose up
117117```
118118
119+ ### Run without X11 (Direct Framebuffer)
120+
121+ For embedded systems or headless setups without X11 (e.g., Raspberry Pi, embedded Linux):
122+
123+ ** Using KMS/DRM (recommended for modern systems):**
124+
125+ ``` bash
126+ # Requires access to DRI and input devices
127+ docker run --rm -it \
128+ --privileged \
129+ -v /dev/dri:/dev/dri \
130+ -v /dev/input:/dev/input \
131+ -e SDL_VIDEODRIVER=kmsdrm \
132+ -e SDL_AUDIODRIVER=alsa \
133+ ghcr.io/kernelkit/demo:latest
134+ ```
135+
136+ ** Using legacy framebuffer:**
137+
138+ ``` bash
139+ docker run --rm -it \
140+ --privileged \
141+ -v /dev/fb0:/dev/fb0 \
142+ -v /dev/input:/dev/input \
143+ -e SDL_VIDEODRIVER=fbcon \
144+ -e SDL_FBDEV=/dev/fb0 \
145+ -e SDL_AUDIODRIVER=alsa \
146+ ghcr.io/kernelkit/demo:latest
147+ ```
148+
149+ ** On Raspberry Pi 4:**
150+
151+ ``` bash
152+ # KMS/DRM mode (best performance)
153+ docker run --rm -it \
154+ --privileged \
155+ -v /dev/dri:/dev/dri \
156+ -v /dev/input:/dev/input \
157+ -e SDL_VIDEODRIVER=kmsdrm \
158+ -e SDL_AUDIODRIVER=alsa \
159+ ghcr.io/kernelkit/demo:latest \
160+ ./demo -f
161+ ```
162+
163+ ** Notes:**
164+ - ` SDL_VIDEODRIVER=kmsdrm ` uses kernel mode setting (modern, hardware accelerated)
165+ - ` SDL_VIDEODRIVER=fbcon ` uses legacy framebuffer (fallback)
166+ - ` --privileged ` gives access to GPU and input devices
167+ - ` -f ` flag runs in fullscreen mode (recommended for framebuffer)
168+ - For audio without PulseAudio, use ` SDL_AUDIODRIVER=alsa ` or omit for no audio
169+
119170## Building from Source
120171
121172### Dependencies
0 commit comments