- SOUL.md: full agent identity, operating principles, voice - IDENTITY.md: runtime identity, hosts, boundaries - USER.md: operator context imported from hermes-soul - AGENTS.md: actual operating rules, infrastructure, quick reference - memories/curated/: 5 topics (tailscale, forgejo, agents, projects, vaultwarden) - skills/: 9 cross-harness skills imported from hermes-soul after review - docs/PLAN-CONFIGURE-PRIVATE-REPO.md: configuration plan - Validate: passes clean
75 lines
2.3 KiB
Markdown
75 lines
2.3 KiB
Markdown
# FreeBSD installer-derived live USB: XKB, `/var`, and tmpfs overlays
|
|
|
|
Use this note when a custom FreeBSD live/operator USB boots but the graphical desktop fails with Xorg/XKB errors or a black screen.
|
|
|
|
## Symptom pattern
|
|
|
|
Common visible errors:
|
|
|
|
```text
|
|
Couldn't change directory to "/usr/local/share/X11/xkb"
|
|
Can't find file "xfree86" for keycodes include
|
|
XKB: Failed to compile keymap
|
|
Keyboard initialization failed. This could be a missing or incorrect setup of xkeyboard-config.
|
|
Fatal server error: Failed to activate virtual core keyboard: 2
|
|
```
|
|
|
|
The file may still exist when checked manually:
|
|
|
|
```sh
|
|
ls -l /usr/local/share/X11/xkb/keycodes/xfree86
|
|
```
|
|
|
|
If it exists, do not stop at “missing xkeyboard-config”. Check the live filesystem layout.
|
|
|
|
## Why it happens
|
|
|
|
Stock FreeBSD installer memsticks are installer-oriented and can mount small tmpfs-style overlays on `/tmp` and `/var`. In a desktop/operator USB that has a writable UFS root, those overlays can be harmful:
|
|
|
|
- `/var/lib/xkb` may be hidden or missing at runtime.
|
|
- Xorg/rootless XKB cache generation may fail.
|
|
- `/var` may be too small for desktop services.
|
|
- The resulting errors can misleadingly point at `/usr/local/share/X11/xkb`.
|
|
|
|
## Runtime proof commands
|
|
|
|
Run these on the failing USB:
|
|
|
|
```sh
|
|
mount | egrep ' on / | on /tmp | on /var '
|
|
cat /etc/fstab
|
|
egrep 'root_rw_mount|tmpmfs|varmfs' /etc/rc.conf /etc/rc.conf.local 2>/dev/null
|
|
touch /root/probe 2>&1
|
|
touch /tmp/probe 2>&1
|
|
touch /var/tmp/probe 2>&1
|
|
ls -ld /var/lib/xkb /usr/local/share/X11/xkb /usr/local/share/X11/xkb/keycodes
|
|
```
|
|
|
|
Interpretation:
|
|
|
|
- Desired desktop/operator USB: `/` is writable UFS, and `/tmp` + `/var` are not separate tiny tmpfs mounts.
|
|
- Suspicious: `tmpfs on /var` or tiny `/var`, especially with XKB cache/runtime failures.
|
|
|
|
## Build-time fix pattern
|
|
|
|
For writable live/operator USBs, build scripts should write or validate:
|
|
|
|
```sh
|
|
/dev/ufs/FreeBSD_Install / ufs rw,noatime 1 1
|
|
root_rw_mount="YES"
|
|
tmpmfs="NO"
|
|
varmfs="NO"
|
|
```
|
|
|
|
Also add static checks to fail the build if these entries are absent.
|
|
|
|
## Avoid false leads
|
|
|
|
A user shell profile such as `~/.profile`/`~/.xprofile` that only sets `PATH`, best-effort loads `mac_do`, or launches a bootstrap page is unlikely to explain:
|
|
|
|
- read-only root
|
|
- hidden `/var/lib/xkb`
|
|
- missing XKB runtime/cache paths
|
|
- black screen before desktop startup
|
|
|
|
Check mounts and rc.conf first.
|