Monorepo for Aesthetic.Computer
aesthetic.computer
1# FedAC Kiosk USB — Boot Report
2
3**Date:** 2025-02-24
4**USB:** 14.5G (toss piece, EROFS lzma, Fedora 43 live)
5
6---
7
8## Current Status: Black Screen in Firefox
9
10Firefox boots and runs (F10 opens bookmarks, cursor visible), but **all page content is black** — including a plain HTML diagnostic page.
11
12### Root Cause: `firefox.cfg` Color Override
13
14```js
15// These two lines together = black text on black background
16defaultPref("browser.display.background_color", "#000000");
17defaultPref("browser.display.document_color_use", 2);
18// document_color_use=2 means "ALWAYS override page colors with user colors"
19// We set background to black but never set foreground → defaults to black
20// Result: ALL page content invisible (black on black)
21```
22
23Browser chrome (bookmarks, toolbar) still renders because it uses its own color scheme — only web page content is affected by `document_color_use`.
24
25### Fix
26
27Remove `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.
28
29### If Still Black After Fix
30
31Escalation path:
321. Add `LIBGL_ALWAYS_SOFTWARE=1` to kiosk-session.sh (force software GL rendering)
332. Add `gfx.webrender.force-disabled=true` to firefox.cfg (disable WebRender)
343. Simplify firefox.cfg to absolute minimum (rule out autoconfig parsing errors)
354. Enable SSH on kiosk for remote debugging via port 9222
36
37---
38
39## Boot Chain (All Working)
40
41```
42UEFI POST
43└─ GRUB (timeout=0, no Plymouth)
44 └─ Kernel 6.17.1-300.fc43.x86_64 (loglevel=7)
45 └─ initrd (dracut + dmsquash-live)
46 └─ mounts EROFS (lzma, 2.1GB) via overlayfs
47 └─ systemd → multi-user.target
48 └─ getty@tty1 autologin → liveuser
49 └─ .bash_profile → kiosk-session.sh
50 └─ cage (Wayland kiosk compositor) ✅
51 └─ Firefox --fullscreen ✅
52 └─ file:///...piece.html → BLACK ❌
53```
54
55---
56
57## USB Layout
58
59```
60sda1 (400MB FAT32 "BOOT")
61├── EFI/BOOT/grub.cfg
62└── loader/{linux, initrd}
63
64sda2 (ext4 "FEDAC-LIVE")
65├── LiveOS/squashfs.img (2.1GB EROFS lzma)
66└── logs/ (persistent, empty — log services not firing)
67```
68
69## Key EROFS Files
70
71| Path | Purpose |
72|------|---------|
73| `/usr/local/bin/kiosk-session.sh` | cage + Firefox launch |
74| `/usr/local/share/kiosk/piece.html` | toss bundle (599KB) |
75| `/usr/local/share/kiosk/diag.html` | diagnostic page |
76| `/usr/lib64/firefox/distribution/policies.json` | Firefox admin policies |
77| `/usr/lib64/firefox/firefox.cfg` | Firefox autoconfig prefs |
78| `/usr/lib64/firefox/defaults/pref/autoconfig.js` | Loads firefox.cfg |
79| `/etc/systemd/system/getty@tty1.service.d/autologin.conf` | liveuser autologin |
80| `/home/liveuser/.bash_profile` | Runs kiosk-session.sh on tty1 |
81| `/usr/bin/cage` | Wayland kiosk compositor |
82
83## Current kiosk-session.sh
84
85```bash
86#!/bin/bash
87export XDG_SESSION_TYPE=wayland
88export XDG_RUNTIME_DIR="/run/user/$(id -u)"
89export MOZ_ENABLE_WAYLAND=1
90exec > /tmp/kiosk.log 2>&1
91exec cage -- \
92 firefox --fullscreen --no-remote \
93 --remote-debugging-port=9222 \
94 --profile /home/liveuser/.mozilla/firefox/kiosk \
95 file:///usr/local/share/kiosk/piece.html
96```
97
98---
99
100## Resolved Issues
101
102| Issue | Cause | Fix |
103|-------|-------|-----|
104| Boot shuts down | GRUB `gfxmode=auto` + `terminal_output gfxterm` | Switched to `terminal_output console` |
105| Plymouth holds VT | Masked `plymouth-quit.service` | Unmasked + drop-in with `--retain-splash` |
106| HTTPServer crash | `__new__` bypassed `BaseServer.__init__` | `PreBoundHTTPServer` subclass |
107| Firefox loads wrong URL | policies.json hardcoded `http://127.0.0.1:8080` | Changed to `file:///` |
108| PALS logo missing | Watermark in rootfs Plymouth, but initrd shows Fedora logo | Needs initrd rebuild (deferred) |
109| Log services empty | kiosk-log-dump at shutdown.target — may not fire on crash | Needs early debug service |
110
111---
112
113## Roadmap
114
115### Immediate
116- [ ] Fix `document_color_use` black-on-black issue
117- [ ] Verify piece.html renders in Firefox on kiosk
118- [ ] Enable SSH on kiosk for remote debugging
119
120### Short Term
121- [ ] Re-enable Plymouth with PALS logo
122- [ ] Pre-warm Firefox profile (startup cache)
123- [ ] Fix log dump services (early boot + shutdown)
124- [ ] Switch EROFS to zstd compression (faster decompression)
125
126### Long Term
127- [ ] initrd framebuffer hook (PALS logo before Plymouth)
128- [ ] Custom minimal initrd (strip unused dracut modules)
129- [ ] Piece server in Rust (replace Python, <10ms startup)