solarpowered is a learning and hobby project. My main goal is to better understand OCI images as a concept and in practice, and to eventually end up with the ideal base image for my laptop and future devices.
These images boot and are fully functional for daily operations - further than that, I do not guarantee anything.
Because I like Gawain from Fate/Extra & Fate/Grand Order.
- BlueBuild Template with actions set up. WIthout BlueBuild, I would never have come up with the idea of exploring OCI images.
- silverblue-main as base image for solarpowered and solarpowered-ex. Only the latest Fedora relase is supported. Release versions will be bumped 1-2 months after it is made available for public.
This image supports Lenovo T480(s) and contains:
igt-gpu-tools
python-validity
forked by sneexytlp
andtlp-rdw
tlp.service
is enabled by default with TLP default configs.systemd-rfkill.{service,socket}
is disabled by default.
throttled
throttled
is shipped with the defaults but slightly different configuration structure. I use universal values for AC and battery so there is no[UNDERVOLT.AC]
nor[UNDERVOLT.BATTERY]
, only[UNDERVOLT]
. Documented in thethrottled
README.
zcfan
Before enabling
zcfan
, runrpm-ostree kargs --append=thinkpad_acpi.fan_control=1
and reboot for it to work. If you are running a full Intel T480(s), you can also runujust t480s-set-kargs
to apply it with other kernel parameters to enable GuC a& FBC and reboot. Then, runsudo systemctl enable --now zcfan
.
The following packages are explicitly removed from the base image due to conflicts.
fprintd
fprintd-pam
tuned
andtuned-ppd
thermald
This configuration is intended to support my desktop configuration. Changes to this image is frequent.
Desktop configuration details
Type | Model |
---|---|
Motherboard | ASRock B550M WiFi SE |
CPU | AMD Ryzen 5 5600 |
GPU | Sapphire AMD Navi 23 Radeon RX 6600 |
Wireless adapter | Intel Dual Band Wireless-AC 3168NGW |
Bluetooth adapter | Intel Wireless-AC 3168 Bluetooth |
Storage | Solidigm P41 Plus 1 TB |
Controller | Fantech Nova PRO WGP14V2 recognized as Sony DualShock 4 [CUH-ZCT2x] |
Webcam/Mic | 0c45:636b Microdia Lumi Cam |
This image contains:
goverlay
inxi
lact
from ilya-zlobintsevmangohud
radeontop
The Fedora default kernel is replaced with kernel-fsync.
NOTE: Make sure to enable initramfs regeneration by running
rpm-ostree initramfs
before rebasing to prevent boot failure.
This image includes the fix to B550 boards suspend issue. Enable the fix with the following command:
sudo systemctl enable --now b550-suspend-fix.service
Better writeup planned!
System updates are handled by rpm-ostreed-automatic.service
. To override the timer settings, create /etc/systemd/system/rpm-ostreed-automatic.timer.d/override.conf
.
Other updates are handled by topgrade.service
. Enable with sudo systemctl enable --now topgrade.{timer,service}.
To override the timer settings, create /etc/systemd/system/topgrade.timer/override.conf
.
You can install by rebasing from Silverblue or generating an ISO file yourself. If you decide to give this a go, and would like to provide feedback and/or suggestions, feel free to open a new issue!
To rebase from a Silverblue installation, follow the steps below.
- Rebase to the unsigned image to get the proper signing keys + policies installed and reboot automatically:
rpm-ostree rebase ostree-unverified-registry:ghcr.io/askpng/solarpowered:latest --reboot
- Rebase to the signed image and reboot automatically:
rpm-ostree rebase ostree-image-signed:docker://ghcr.io/askpng/solarpowered:latest --reboot
- Rebase to the unsigned image to get the proper signing keys + policies installed and reboot automatically:
rpm-ostree rebase ostree-unverified-registry:ghcr.io/askpng/solarpowered-ex:latest --reboot
- Rebase to the signed image and reboot automatically:
rpm-ostree rebase ostree-image-signed:docker://ghcr.io/askpng/solarpowered-ex:latest --reboot
An ISO file for a fresh install can be generated using docker
or podman
from a Silverblue system.
mkdir ./iso-output
sudo docker run --rm --privileged --volume ./iso-output:/build-container-installer/build --pull=always \
ghcr.io/jasonn3/build-container-installer:latest \
IMAGE_REPO=ghcr.io/askpng \
IMAGE_NAME=solarpowered \
IMAGE_TAG=latest \
VARIANT=Silverblue
mkdir ./iso-output
sudo docker run --rm --privileged --volume ./iso-output:/build-container-installer/build --pull=always \
ghcr.io/jasonn3/build-container-installer:latest \
IMAGE_REPO=ghcr.io/askpng \
IMAGE_NAME=solarpowered-ex \
IMAGE_TAG=latest \
VARIANT=Silverblue
mkdir ./iso-output
sudo podman run --rm --privileged --volume ./iso-output:/build-container-installer/build --security-opt label=disable --pull=newer \
ghcr.io/jasonn3/build-container-installer:latest \
IMAGE_REPO=ghcr.io/askpng \
IMAGE_NAME=solarpowered \
IMAGE_TAG=latest \
VARIANT=Silverblue
mkdir ./iso-output
sudo podman run --rm --privileged --volume ./iso-output:/build-container-installer/build --security-opt label=disable --pull=newer \
ghcr.io/jasonn3/build-container-installer:latest \
IMAGE_REPO=ghcr.io/askpng \
IMAGE_NAME=solarpowered-ex \
IMAGE_TAG=latest \
VARIANT=Silverblue
These images are signed with Sigstore's cosign.
Download the cosign.pub
file from this repo and run the following command within the same directory:
cosign verify --key cosign.pub ghcr.io/askpng/solarpowered