Monorepo for Aesthetic.Computer
aesthetic.computer
FedAC Kiosk USB — Boot Report#
Date: 2025-02-24 USB: 14.5G (toss piece, EROFS lzma, Fedora 43 live)
Current Status: Black Screen in Firefox#
Firefox boots and runs (F10 opens bookmarks, cursor visible), but all page content is black — including a plain HTML diagnostic page.
Root Cause: firefox.cfg Color Override#
// These two lines together = black text on black background
defaultPref("browser.display.background_color", "#000000");
defaultPref("browser.display.document_color_use", 2);
// document_color_use=2 means "ALWAYS override page colors with user colors"
// We set background to black but never set foreground → defaults to black
// Result: ALL page content invisible (black on black)
Browser chrome (bookmarks, toolbar) still renders because it uses its own color scheme — only web page content is affected by document_color_use.
Fix#
Remove document_color_use = 2 (let pages use their own CSS colors). Keep the black background for flash prevention but don't override page foreground colors.
If Still Black After Fix#
Escalation path:
- Add
LIBGL_ALWAYS_SOFTWARE=1to kiosk-session.sh (force software GL rendering) - Add
gfx.webrender.force-disabled=trueto firefox.cfg (disable WebRender) - Simplify firefox.cfg to absolute minimum (rule out autoconfig parsing errors)
- Enable SSH on kiosk for remote debugging via port 9222
Boot Chain (All Working)#
UEFI POST
└─ GRUB (timeout=0, no Plymouth)
└─ Kernel 6.17.1-300.fc43.x86_64 (loglevel=7)
└─ initrd (dracut + dmsquash-live)
└─ mounts EROFS (lzma, 2.1GB) via overlayfs
└─ systemd → multi-user.target
└─ getty@tty1 autologin → liveuser
└─ .bash_profile → kiosk-session.sh
└─ cage (Wayland kiosk compositor) ✅
└─ Firefox --fullscreen ✅
└─ file:///...piece.html → BLACK ❌
USB Layout#
sda1 (400MB FAT32 "BOOT")
├── EFI/BOOT/grub.cfg
└── loader/{linux, initrd}
sda2 (ext4 "FEDAC-LIVE")
├── LiveOS/squashfs.img (2.1GB EROFS lzma)
└── logs/ (persistent, empty — log services not firing)
Key EROFS Files#
| Path | Purpose |
|---|---|
/usr/local/bin/kiosk-session.sh |
cage + Firefox launch |
/usr/local/share/kiosk/piece.html |
toss bundle (599KB) |
/usr/local/share/kiosk/diag.html |
diagnostic page |
/usr/lib64/firefox/distribution/policies.json |
Firefox admin policies |
/usr/lib64/firefox/firefox.cfg |
Firefox autoconfig prefs |
/usr/lib64/firefox/defaults/pref/autoconfig.js |
Loads firefox.cfg |
/etc/systemd/system/getty@tty1.service.d/autologin.conf |
liveuser autologin |
/home/liveuser/.bash_profile |
Runs kiosk-session.sh on tty1 |
/usr/bin/cage |
Wayland kiosk compositor |
Current kiosk-session.sh#
#!/bin/bash
export XDG_SESSION_TYPE=wayland
export XDG_RUNTIME_DIR="/run/user/$(id -u)"
export MOZ_ENABLE_WAYLAND=1
exec > /tmp/kiosk.log 2>&1
exec cage -- \
firefox --fullscreen --no-remote \
--remote-debugging-port=9222 \
--profile /home/liveuser/.mozilla/firefox/kiosk \
file:///usr/local/share/kiosk/piece.html
Resolved Issues#
| Issue | Cause | Fix |
|---|---|---|
| Boot shuts down | GRUB gfxmode=auto + terminal_output gfxterm |
Switched to terminal_output console |
| Plymouth holds VT | Masked plymouth-quit.service |
Unmasked + drop-in with --retain-splash |
| HTTPServer crash | __new__ bypassed BaseServer.__init__ |
PreBoundHTTPServer subclass |
| Firefox loads wrong URL | policies.json hardcoded http://127.0.0.1:8080 |
Changed to file:/// |
| PALS logo missing | Watermark in rootfs Plymouth, but initrd shows Fedora logo | Needs initrd rebuild (deferred) |
| Log services empty | kiosk-log-dump at shutdown.target — may not fire on crash | Needs early debug service |
Roadmap#
Immediate#
- Fix
document_color_useblack-on-black issue - Verify piece.html renders in Firefox on kiosk
- Enable SSH on kiosk for remote debugging
Short Term#
- Re-enable Plymouth with PALS logo
- Pre-warm Firefox profile (startup cache)
- Fix log dump services (early boot + shutdown)
- Switch EROFS to zstd compression (faster decompression)
Long Term#
- initrd framebuffer hook (PALS logo before Plymouth)
- Custom minimal initrd (strip unused dracut modules)
- Piece server in Rust (replace Python, <10ms startup)