3.1 KiB
EcoOS Project Hints
Build & Test Commands (package.json)
# Build the Docker image (do this after config changes)
npm run build:docker
# Build the ISO (requires Docker image)
npm run build
# Test ISO in QEMU
npm run test
# Take screenshot
npm run test:screenshot
# Stop QEMU VM
npm run test:stop
# Clean build artifacts
npm run clean
# Daemon development (watch mode)
npm run daemon:dev
# Start daemon directly
npm run daemon:start
# Bundle daemon to binary
npm run daemon:bundle
Current Network Configuration
Using systemd-networkd (NOT NetworkManager) with DHCP:
- Config file:
/etc/systemd/network/10-wired.network - Matches:
ens*,enp*,eth* - Uses DHCP (QEMU user networking provides DHCP)
The installer (install.sh) creates this config explicitly during installation.
Browser: Google Chrome (not Firefox)
The project uses Google Chrome for the kiosk browser, NOT Firefox.
Key Files
isobuild/config/hooks/normal/0060-install-chrome.hook.chroot- Installs Google Chromeecoos_daemon/ts/daemon/process-manager.ts- Launches Chrome with Wayland support
Sway Configuration
Sway config is generated dynamically by the daemon at runtime, NOT from a static file.
The daemon writes the config to ~/.config/sway/config before starting Sway with -c flag.
Chrome Kiosk Flags
--ozone-platform=wayland
--kiosk
--no-first-run
--disable-infobars
--disable-session-crashed-bubble
--disable-restore-session-state
Chrome app_id on Wayland
Chrome identifies as google-chrome or Google-chrome in Sway.
eco-daemon Binary
The binary at isobuild/config/includes.chroot/opt/eco/bin/eco-daemon is compiled from ecoos_daemon/ using Deno.
After changing daemon code, rebuild with:
npm run daemon:bundle
cp ecoos_daemon/bundle/eco-daemon isobuild/config/includes.chroot/opt/eco/bin/
ISO Boot Menu
- Install EcoOS (auto-selects in 10s) - Default
- EcoOS Live (Try without installing)
- EcoOS Live (Safe Mode)
CRITICAL: Sway + QEMU Display Fix
ISSUE: Sway shows gray/black screen with windows not rendering properly in QEMU.
FIX: In isotest/run-test.sh, use -vga qxl instead of -device virtio-vga
Source: ArchWiki Sway page, GitHub issue swaywm/sway#6210
CRITICAL: Hook Permissions
ISSUE: Chrome not installed in ISO.
FIX: All hook files must be chmod +x:
chmod +x isobuild/config/hooks/normal/*.hook.chroot
If hooks aren't executable, live-build SKIPS them silently!
Serial Console Debugging
Use socat to connect to QEMU serial console:
socat - UNIX-CONNECT:isotest/serial.sock
Login: ecouser/ecouser, then sudo -i for root.
Lesson: ALWAYS RESEARCH BEFORE FIXING
When encountering issues:
- DO NOT assume the same fix will work repeatedly
- DO research the issue online first
- Check ArchWiki, GitHub issues, official docs
- Understand WHY the fix works
- Document findings in readme.hints.md
Testing Protocol
- Take screenshots every 10 seconds during testing, NOT 45+ seconds
- Use serial console for debugging network/service issues
- Check
ip addron guest to verify network interface has IP