diff --git a/README.md b/README.md index 421d4db..f4894dd 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,11 @@ of setting up your own Xen server. This release is only intended for use with Qubes OS 4.2. Older Qubes OS releases will not support it. For Qubes OS 4.1, check branch `r4.1`. +**Important note about upgrades**: when you upgrade your system from Qubes OS 4.1 to +Qubes OS 4.2, if you have this package installed in your template, the template will +likely **fail to update**. Please consult [our upgrade instructions](doc/distupgrade.md) +for information on how to proceed. + ## Why? Qubes OS is a magnificent operating system. That said, there are many use cases its networking diff --git a/doc/distupgrade.md b/doc/distupgrade.md new file mode 100644 index 0000000..1fc9519 --- /dev/null +++ b/doc/distupgrade.md @@ -0,0 +1,64 @@ +# How to upgrade a Qubes network server from Qubes OS 4.1 to Qubes OS 4.2 + +The [standard instructions to upgrade Qubes OS systems](https://www.qubes-os.org/doc/upgrade/4.2/) +will fail to work. The instructions tell you to run something to the effect of: + +``` +qubes-dist-upgrade --all-pre-reboot +``` + +then reboot, then run: + +``` +qubes-dist-upgrade --all-post-reboot +``` + +The pre-reboot phase will fail if run without the following precautions. + +## Step by step instructions + +First, build a `qubes-network-server` RPM with the instructions provided +by this package's [README.md](../README.md) file. Then, for each template +where `qubes-network-server` is installed, deposit your build of the +`qubes-network-server` RPM in a folder `/root/update` of the template, +and run the command `createrepo_c /root/update` (you may have to install +package `createrepo_c` via `dnf` to run it). + +Now build a `qubes-core-admin-addon-network-server` package for your dom0, +then copy the file to your profile directory into dom0. Remember this +package has to be built *in the same Fedora release (37)* as the Qubes OS +4.2 dom0 (the `toolbox` command in a disposable qube is handy for this!). + +Now open the file `/etc/dnf/dnf.conf` on every template qube where you +did the above, then add an `exclude=qubes-network-server` setting under +its `[main]` section. + +Remove the currently-installed `qubes-core-admin-addon-network-server` +package from your dom0 (using `dnf remove`). + +Run the pre-reboot phase. + +Install the recently-built `qubes-core-admin-addon-network-server` package +into dom0 (using `dnf install` with the path to the RPM file). + +Reboot. + +Before running the post-reboot phase, remove the setting you added to the +`dnf.conf` file of each template you modified. Finally, add the file +`/etc/yum.repos.d/local.repo` with the following contents: + +``` +[local] +name=Local packages +baseurl=file:///root/update +enabled=1 +gpgcheck=0 +metadata_expire=15 +``` + +Now run the post-reboot phase. The template upgrade should succeed now. + +To finalize, delete folder `/root/update` and file `/etc/yum.repos.d/local.repo` +from every template that has it. + +You are now updated to Qubes OS 4.2 and `qubes-network-server` is ready.