Skip to content

feat: add install.sh for one-command installation#27

Open
rgvxsthi wants to merge 11 commits into
V10lator:masterfrom
rgvxsthi:add-install-script
Open

feat: add install.sh for one-command installation#27
rgvxsthi wants to merge 11 commits into
V10lator:masterfrom
rgvxsthi:add-install-script

Conversation

@rgvxsthi

@rgvxsthi rgvxsthi commented May 30, 2026

Copy link
Copy Markdown

Summary

Adds install.sh and uninstall.sh so users can install or remove Charcoal with a single command — similar to how Decky Loader and Decky plugins are installed.

Install:

curl -L https://github.com/V10lator/linux-charcoal/raw/master/install.sh | bash

Uninstall:

curl -L https://github.com/V10lator/linux-charcoal/raw/master/uninstall.sh | bash

Tested

Fully tested on Asus ROG Ally RC71L (SteamOS neptune-611 → charcoal-616 → neptune-611). Logs here.

  • Install: charcoal-616 boots correctly ✅
  • Uninstall: correctly detects and restores original neptune-611 (not neptune-616) ✅
  • Fallback: if charcoal install fails after neptune removal, original neptune is reinstalled automatically ✅

What the scripts handle

  • steamos-devmode enable --no-prompt — required (not just steamos-readonly disable). The headers package pulls signed repo dependencies (llvm, clang, lld, polly) which need keyring initialisation.
  • Neptune pre-removal — removes all linux-neptune* packages before installing Charcoal using pacman -Qq | grep '^linux-neptune'. Handles any series, avoiding the vmlinuz file conflict.
  • Original neptune saved — install script saves the originally installed neptune package name to /etc/charcoal-original-neptune. Uninstall reads this to restore the exact version the user had, not just the series Charcoal was built against.
  • Install fallback — if charcoal install fails after neptune removal, the script automatically reinstalls the saved original neptune and exits cleanly.
  • grub-mkconfig — runs automatically after install and uninstall. Confirmed working: correctly finds vmlinuz-linux-neptune-616 (charcoal's kernel image name) and writes the right grub entry.
  • README — manual install and uninstall steps updated to match script behavior.

Notes

  • The ata_generic, virtio_* and plymouth errors during install are harmless — documented in the README.
  • Dev mode stays on after install. SteamOS updates reset it anyway.

V10lator and others added 4 commits May 30, 2026 09:48
Signed-off-by: Thomas Rohloff <v10lator@myway.de>
Downloads latest release, removes any existing Neptune kernel packages,
installs Charcoal kernel and headers, updates GRUB, and re-enables
read-only filesystem.

Usage:
  curl -L https://github.com/V10lator/linux-charcoal/raw/master/install.sh | bash
Detects the matching Neptune kernel from Charcoal's Replaces field,
removes all Charcoal packages, reinstalls Neptune, updates GRUB,
and re-enables the read-only filesystem.
radxp added 7 commits May 30, 2026 20:35
- Switch steamos-readonly disable to steamos-devmode enable — headers
  package pulls signed repo deps (llvm, clang, lld, polly) which require
  keyring initialisation
- Fix neptune/charcoal package detection: pacman -Qq glob pattern unreliable,
  use pacman -Qq | grep '^linux-neptune' instead
- steamos-devmode enable needs --no-prompt to run non-interactively
- steamos-devmode disable does not exist; use steamos-readonly enable instead
Dev mode stays on after install. SteamOS updates reset it anyway.
- Confirmed steamos-devmode enable --no-prompt required (headers package
  pulls signed repo deps needing keyring init)
- Fix package detection: use pacman -Qq | grep instead of glob
- Remove steamos-readonly re-enable after install (devmode stays on,
  SteamOS updates reset it anyway)
- Update README manual steps to match script behavior
- Save originally installed neptune package name to /etc/charcoal-original-neptune
  during install so uninstall can restore the exact version the user had
- Add error handling in install: if charcoal install fails, automatically
  reinstall the saved neptune and exit cleanly
- Uninstall falls back to Replaces field if save file not present
awk '/^Replaces/{print $3}' grabbed wrong package (virtualbox-guest-modules-arch).
Use grep + tr to extract linux-neptune specifically from the Replaces line.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants