mirror of
https://github.com/BetterCorp/BetterFrame.git
synced 2026-05-26 17:56:34 +00:00
fix(pi-gen+rauc): stop purge from removing cage + fix boot
1. Desktop purge was using wildcard lx* which removed libwlroots and cage as dependency. Now uses specific package names + apt-mark manual cage to protect it from autoremove. 2. Per-user cursor theme for bfkiosk (~/.icons/default/index.theme). 3. Repartition disables auto_initramfs in config.txt (initramfs cant resolve LABEL= roots). Also handles root=/dev/* format in cmdline.txt sed replacement. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
1ff0f9928c
commit
649c64728a
2 changed files with 21 additions and 5 deletions
|
|
@ -144,6 +144,13 @@ for name in ['default','left_ptr','arrow','watch','hand2','text','xterm',
|
||||||
# Set as system default cursor theme
|
# Set as system default cursor theme
|
||||||
update-alternatives --install /usr/share/icons/default/index.theme x-cursor-theme \
|
update-alternatives --install /usr/share/icons/default/index.theme x-cursor-theme \
|
||||||
/usr/share/icons/betterframe-empty/cursor.theme 100 2>/dev/null || true
|
/usr/share/icons/betterframe-empty/cursor.theme 100 2>/dev/null || true
|
||||||
|
# Per-user cursor config for bfkiosk (cage reads user's icon theme)
|
||||||
|
install -d -o bfkiosk -g bfkiosk -m 755 /home/bfkiosk/.icons/default
|
||||||
|
cat > /home/bfkiosk/.icons/default/index.theme <<'CURSOR'
|
||||||
|
[Icon Theme]
|
||||||
|
Inherits=betterframe-empty
|
||||||
|
CURSOR
|
||||||
|
chown bfkiosk:bfkiosk /home/bfkiosk/.icons/default/index.theme
|
||||||
|
|
||||||
# --- Enable services, disable noise ---
|
# --- Enable services, disable noise ---
|
||||||
systemctl enable seatd
|
systemctl enable seatd
|
||||||
|
|
@ -217,11 +224,14 @@ rm -f /etc/systemd/system/getty.target.wants/* 2>/dev/null || true
|
||||||
printf 'BetterFrame Kiosk\n\n' > /etc/issue
|
printf 'BetterFrame Kiosk\n\n' > /etc/issue
|
||||||
rm -f /etc/update-motd.d/* 2>/dev/null || true
|
rm -f /etc/update-motd.d/* 2>/dev/null || true
|
||||||
|
|
||||||
# Nuke entire desktop environment if installed (stage3 leftovers).
|
# Remove desktop packages that could show setup wizards. Be specific —
|
||||||
# This is the nuclear option — piwiz can't run if there's no desktop.
|
# wildcard 'lx*' kills libwlroots which removes cage (our compositor).
|
||||||
apt-get -y purge 'lx*' 'labwc*' 'wayfire*' 'wf-*' lightdm gdm3 sddm \
|
apt-get -y purge piwiz userconf-pi rpi-first-boot-wizard pi-greeter \
|
||||||
xserver-xorg-core xwayland rpd-plym-splash pi-greeter \
|
rpd-plym-splash lightdm gdm3 sddm desktop-base \
|
||||||
desktop-base raspberrypi-ui-mods 2>/dev/null || true
|
raspberrypi-ui-mods lxde lxde-core lxpanel lxsession lxterminal \
|
||||||
|
labwc wayfire 2>/dev/null || true
|
||||||
|
# Mark cage as manually installed so autoremove won't touch it.
|
||||||
|
apt-mark manual cage 2>/dev/null || true
|
||||||
apt-get -y autoremove 2>/dev/null || true
|
apt-get -y autoremove 2>/dev/null || true
|
||||||
|
|
||||||
# Force multi-user via kernel cmdline (overrides any default target)
|
# Force multi-user via kernel cmdline (overrides any default target)
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,11 @@ cp "$WORK/bootfs.vfat" "$WORK/bootfs_A.vfat"
|
||||||
BOOT_A_LOOP="$(losetup -f --show "$WORK/bootfs_A.vfat")"
|
BOOT_A_LOOP="$(losetup -f --show "$WORK/bootfs_A.vfat")"
|
||||||
mkdir -p "$WORK/mnt-ba"
|
mkdir -p "$WORK/mnt-ba"
|
||||||
mount "$BOOT_A_LOOP" "$WORK/mnt-ba"
|
mount "$BOOT_A_LOOP" "$WORK/mnt-ba"
|
||||||
|
# Disable initramfs — it can't resolve LABEL= and we don't need it.
|
||||||
|
# Kernel mounts root directly with rootwait.
|
||||||
|
sed -i 's/^auto_initramfs=1/auto_initramfs=0/' "$WORK/mnt-ba/config.txt" 2>/dev/null || true
|
||||||
sed -i 's|root=PARTUUID=[^ ]*|root=LABEL=BF_ROOT_A|' "$WORK/mnt-ba/cmdline.txt" 2>/dev/null || true
|
sed -i 's|root=PARTUUID=[^ ]*|root=LABEL=BF_ROOT_A|' "$WORK/mnt-ba/cmdline.txt" 2>/dev/null || true
|
||||||
|
sed -i 's|root=/dev/[^ ]*|root=LABEL=BF_ROOT_A|' "$WORK/mnt-ba/cmdline.txt" 2>/dev/null || true
|
||||||
# autoboot.txt: normal boot → partition 1 (this one), tryboot → partition 2
|
# autoboot.txt: normal boot → partition 1 (this one), tryboot → partition 2
|
||||||
cat > "$WORK/mnt-ba/autoboot.txt" <<'AUTOBOOT'
|
cat > "$WORK/mnt-ba/autoboot.txt" <<'AUTOBOOT'
|
||||||
[all]
|
[all]
|
||||||
|
|
@ -115,7 +119,9 @@ cp "$WORK/bootfs.vfat" "$WORK/bootfs_B.vfat"
|
||||||
BOOT_B_LOOP="$(losetup -f --show "$WORK/bootfs_B.vfat")"
|
BOOT_B_LOOP="$(losetup -f --show "$WORK/bootfs_B.vfat")"
|
||||||
mkdir -p "$WORK/mnt-bb"
|
mkdir -p "$WORK/mnt-bb"
|
||||||
mount "$BOOT_B_LOOP" "$WORK/mnt-bb"
|
mount "$BOOT_B_LOOP" "$WORK/mnt-bb"
|
||||||
|
sed -i 's/^auto_initramfs=1/auto_initramfs=0/' "$WORK/mnt-bb/config.txt" 2>/dev/null || true
|
||||||
sed -i 's|root=PARTUUID=[^ ]*|root=LABEL=BF_ROOT_B|' "$WORK/mnt-bb/cmdline.txt" 2>/dev/null || true
|
sed -i 's|root=PARTUUID=[^ ]*|root=LABEL=BF_ROOT_B|' "$WORK/mnt-bb/cmdline.txt" 2>/dev/null || true
|
||||||
|
sed -i 's|root=/dev/[^ ]*|root=LABEL=BF_ROOT_B|' "$WORK/mnt-bb/cmdline.txt" 2>/dev/null || true
|
||||||
cat > "$WORK/mnt-bb/autoboot.txt" <<'AUTOBOOT'
|
cat > "$WORK/mnt-bb/autoboot.txt" <<'AUTOBOOT'
|
||||||
[all]
|
[all]
|
||||||
tryboot_a_b=1
|
tryboot_a_b=1
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue