Dakotaraptor steini
Bluefin's final form.
How dare you.
-- John Bazzite
projectbluefin/dakota is built on GNOME OS. This is a prototype and not ready and may bite.
- Consume GNOME nightly bootc image (done)
- Final assembly in this repo (done)
- Consume GNOME buildstream definitions and apply Bluefin changes:
- Bluefin buildstream definitions @projectbluefin/egg
- Final assembly in this repo
- No dx image, everything in homebrew or sysexts
- Installation
- Ensuring upgrades and rollbacks work
git clone https://github.com/projectbluefin/dakota.git
cd dakota
just show-me-the-future
Will build and run Bluefin in a VM. This image is based on GNOME50 so most of the desktop Bluefin changes don't work. The automation is in place though, just check back often to see progress.
Warning
This is your friendly reminder that this is a very, VERY experimental project! Here be dragons. Read these instructions carefully.
Do note that there is no package layering here. If you have any layered packages with rpm-ostree, you will need to remove them before rebasing.
Bootloader upgrades will not work via this method, as dakota does not have bootupd or grub in its image. You will be able to update the OS with bootc update, but the bootloader will never upgrade to fix security problems and such.
Rebasing from the Fedora or CentOS based Bluefin is currently broken! Until we switch those images off of ublue-os/legacy-rechunk, you will need to perform a manual workaround to fix your groups. See below for more details.
It is possible to switch your existing installation to the new Bluefin. All you need to do is run the following command:
bootc switch ghcr.io/projectbluefin/dakota:latestReboot, and you will have the new Bluefin!
Note
This is a very hacky workaround! It is not guaranteed to work for you.
Fedora Silverblue splits their groups into 2 files: /etc/group and /usr/lib/group. /etc/group contains only your user's groups, and not any of the system groups. dakota does not have a /usr/lib/group, and as a result, things break hard.
Working around this is simple, yet annoying. First, before you boot into Bluefin, hit e on the boot entry in grub, and go to the end of the line that starts with linux. Put a space, then type in init=/bin/bash.
Hit f10, and you will boot into a bash shell. You now need to type the following commands:
rm -f /etc/gshadow
systemd-sysusers
exec initTyping those commands will populate your /etc/group file with the necessary groups. exec init will boot you into Bluefin.
To install Bluefin, you first must build the image locally using just build-containerfile. Downloaded images won't work right now with bootc install, see this issue for more details.
Before you can install Bluefin to your disk, you must first create a partition layout. The layout should be as follows:
/(formatted as whatever you want, BTRFS subvolumes are supported)/boot(FAT32 formatted, ideally 2GiB or greater for kernel storage)
You can add a separate /home partition (or BTRFS subvolume) if you desire.
Mount your partitions to a directory (e.g. /mnt) like so:
sudo mount ROOT_PART /mnt
sudo mount --mkdir BOOT_PART /mnt/bootAnd then run the following command to install Bluefin to /mnt:
sudo podman run \
--rm --privileged --pid=host \
-it \
-v /etc/containers:/etc/containers:Z \
-v /var/lib/containers:/var/lib/containers:Z \
-v /dev:/dev \
-e RUST_LOG=debug \
-v "/mnt:/mnt" \
--security-opt label=type:unconfined_t \
"ghcr.io/projectbluefin/dakota:latest" bootc install to-filesystem /mnt/mnt --composefs-backend --bootloader systemd --karg splash --karg quiet
You will then have to modify the fstab file manually to add any additional partitions post-installation, bootc install does not do it for you.
This Bluefin is represented by the Dakotaraptor:
