Downgrading kernel on Silverblue

The TCP security patches in Kernel 5.1.11 broke some networking functions, namely being able to use Steam. Seeing as the patches to fix the bug were only released yesterday with 5.1.14 and Fedora hasn’t yet built the new kernel, I’m wondering if it’s possible to downgrade my kernel on Silverblue until the new version is out.

I imagine downgrading to an older version of Silverblue from last week would do the trick, but I don’t have a ostree deployment saved from back then that I can quickly revert to. How would I go about downgrading my Silverblue system to a commit that I don’t have a saved deployment for in rpm-ostree?

You could try to rpm-ostree override replace <kernel package>

Kernels are here: https://koji.fedoraproject.org/koji/packageinfo?packageID=8

For example, something like this should downgrade the kernel: rpm-ostree override replace https://kojipkgs.fedoraproject.org//packages/kernel/5.1.9/300.fc30/x86_64/kernel-5.1.9-300.fc30.x86_64.rpm

I am not home so I cannot try myself.

Hmm, rpm-ostree doesn’t seem to handle dependencies when replacing packages.

[jlh@citrus ~]$ rpm-ostree override replace https://kojipkgs.fedoraproject.org//packages/kernel/5.1.9/300.fc30/x86_64/kernel-5.1.9-300.fc30.x86_64.rpm
Downloading 'https://kojipkgs.fedoraproject.org//packages/kernel/5.1.9/300.fc30/x86_64/kernel-5.1.9-300.fc30.x86_64.rpm'... done!
Checking out tree d57cc45... done
Enabled rpm-md repositories: enpass fedora updates
rpm-md repo 'enpass' (cached); generated: 2019-05-29T05:51:52Z
rpm-md repo 'fedora' (cached); generated: 2019-04-25T23:49:41Z
rpm-md repo 'updates' (cached); generated: 2019-06-23T01:10:10Z
Importing rpm-md... done
Resolving dependencies... done
error: Could not depsolve transaction; 1 problem detected:
 Problem: conflicting requests
  - nothing provides kernel-core-uname-r = 5.1.9-300.fc30.x86_64 needed by kernel-5.1.9-300.fc30.x86_64
  - nothing provides kernel-modules-uname-r = 5.1.9-300.fc30.x86_64 needed by kernel-5.1.9-300.fc30.x86_64
[jlh@citrus ~]$ 

I tried doing the command with the packages for kernel-core and kernel-modules added too, but that just gives the same error.

I have just tried at home and it worked for me. Maybe you need to download the rpm packages before hand tho

$ rpm-ostree override replace kernel-5.1.9-300.fc30.x86_64.rpm kernel-core-5.1.9-300.fc30.x86_64.rpm kernel-modules-5.1.9-300.fc30.x86_64.rpm kernel-modules-extra-5.1.9-300.fc30.x86_64.rpm
Checking out tree d57cc45... done
Enabled rpm-md repositories: updates rpmfusion-free-updates rpmfusion-free fedora
rpm-md repo 'updates' (cached); generated: 2019-06-23T01:10:10Z
rpm-md repo 'rpmfusion-free-updates' (cached); generated: 2019-06-22T11:50:26Z
rpm-md repo 'rpmfusion-free' (cached); generated: 2019-04-16T20:46:20Z
rpm-md repo 'fedora' (cached); generated: 2019-04-25T23:49:41Z
Importing rpm-md... done
Resolving dependencies... done
Applying 4 overrides and 125 overlays
Processing packages... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Generating initramfs... done
Writing OSTree commit... done
Staging deployment... done
Freed: 498.8 MB (pkgcache branches: 1)
Downgraded:
  kernel 5.1.11-300.fc30 -> 5.1.9-300.fc30
  kernel-core 5.1.11-300.fc30 -> 5.1.9-300.fc30
  kernel-modules 5.1.11-300.fc30 -> 5.1.9-300.fc30
  kernel-modules-extra 5.1.11-300.fc30 -> 5.1.9-300.fc30
Run "systemctl reboot" to start a reboot

After rebooting:

$ rpm-ostree db diff
ostree diff commit old: rollback deployment (2a5d7685339e6d9d8706f21970655a18ad7ca7cb1b325a7e3002a7efc8fdf6b0)
ostree diff commit new: booted deployment (cdf7b25974c618f9e3c7414296ebb5fa305d413108fe0ec3c6499067aeb5e2c4)
Downgraded:
  kernel 5.1.11-300.fc30 -> 5.1.9-300.fc30
  kernel-core 5.1.11-300.fc30 -> 5.1.9-300.fc30
  kernel-modules 5.1.11-300.fc30 -> 5.1.9-300.fc30
  kernel-modules-extra 5.1.11-300.fc30 -> 5.1.9-300.fc30
$ uname -a
Linux hostname 5.1.9-300.fc30.x86_64 #1 SMP Tue Jun 11 16:17:54 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
1 Like

When the new kernel is available (keep an eye on Koji) and you want to remove the override, assuming you have only the kernel override, run: rpm-ostree override reset --all.

At the boot menu you should have still had the option of selecting your previous kernel version. Also, you could just do a rpm-ostree rollback