From Fedora Project Wiki

Description

A simple validation test case for rebasing to other versions of an rpm-ostree-based Fedora install.

Setup

This testcase can be run on either an image or installation, on hardware or in virtualization. Just ensure you have an rpm-ostree-based Fedora system installed (e.g. IoT, CoreOS, Silverblue or Kinoite).

How to test

List available branches. On IoT, it will look something like this:

$ sudo ostree remote refs fedora-iot

fedora-iot:fedora/devel/aarch64/iot
fedora-iot:fedora/devel/armhfp/iot
fedora-iot:fedora/devel/x86_64/iot
fedora-iot:fedora/rawhide/aarch64/iot
fedora-iot:fedora/rawhide/armhfp/iot
fedora-iot:fedora/rawhide/x86_64/iot
fedora-iot:fedora/stable/aarch64/iot
fedora-iot:fedora/stable/armhfp/iot
fedora-iot:fedora/stable/x86_64/iot

On other flavors, do sudo ostree remote refs fedora instead. The list will be much longer. Now, pick a target to rebase to. For IoT, if you currently on fedora/devel/(arch)/iot, you might want to rebase to fedora/stable/(arch)/iot; if you are on stable, you might test rebasing to devel. For CoreOS, if you are currently on fedora/(arch)/coreos/stable, you might want to rebase to fedora/(arch)/coreos/testing, and vice versa. For Silverblue or Kinoite, you will be on fedora/(version)/(arch)/silverblue or fedora/(version)/(arch)/kinoite; rebase to a different version number. We will use the IoT "rebase-to-stable" case as an example; adjust the instructions as appropriate for other cases. The instructions use $(uname -m) to determine the correct architecture - put that text whereever the architecture should appear, or just enter the correct architecture manually instead.

$ sudo rpm-ostree rebase fedora/stable/$(uname -m)/iot

Once completed, reboot into the branch:

$ sudo systemctl reboot

Verify that the rebase was successful - the first listed deployment should be the target you chose, in this case fedora/stable:

$ rpm-ostree status
State: idle
AutomaticUpdates: disabled
Deployments:
● ostree://fedora-iot:fedora/stable/x86_64/iot
                   Version: 30.20190921.0 (2019-09-21T18:44:54Z)
                    Commit: ff81204a37c34999f9e19c05e29a23c076fb3c1dc394cc2b6a3a3f0f32af158e
              GPGSignature: Valid signature by C2A3FA9DC67F68B98BB543F47BB90722DBBDCF7C

  ostree://fedora-iot:fedora/devel/x86_64/iot
                   Version: 31.20190925.0 (2019-09-25T14:30:38Z)
                    Commit: 8f28d65fa990add14ccf56c00c458e9d6a4af478bbeb4cc566903ad0c14a443f
              GPGSignature: Valid signature by 7D22D5867F2A4236474BF7B850CB390B3C3359C4

Rollback to the previous branch:

$ sudo rpm-ostree rollback
Moving '8f28d65fa990add14ccf56c00c458e9d6a4af478bbeb4cc566903ad0c14a443f.0' to be first deployment
...
systemctl reboot

Verify rollback was successful - now the first listed deployment should be what you started with, in this case fedora/devel:

$ sudo rpm-ostree status
...
State: idle
AutomaticUpdates: disabled
Deployments:
● ostree://fedora-iot:fedora/devel/x86_64/iot
                   Version: 31.20190925.0 (2019-09-25T14:30:38Z)
                    Commit: 8f28d65fa990add14ccf56c00c458e9d6a4af478bbeb4cc566903ad0c14a443f
              GPGSignature: Valid signature by 7D22D5867F2A4236474BF7B850CB390B3C3359C4

  ostree://fedora-iot:fedora/stable/x86_64/iot
                   Version: 30.20190921.0 (2019-09-21T18:44:54Z)
                    Commit: ff81204a37c34999f9e19c05e29a23c076fb3c1dc394cc2b6a3a3f0f32af158e
              GPGSignature: Valid signature by C2A3FA9DC67F68B98BB543F47BB90722DBBDCF7C

Results

  1. Rebase to target branch successful.
  2. Rollback to original branch successful.