This is fedup, the Fedora Upgrade tool. This repo/package has the following contents:
- Frontend / pre-upgrade
-
This is the GUI/CLI frontend. It’s responsible for setting up the system to be upgraded: downloading packages, modifying the bootloader, etc.
-
Files:
fedup/
,fedup.py
,fedup-gtk.py
(andui/
)
-
- Upgrade services
-
Part of a distro-neutral framework for performing major system upgrades using systemd and dracut, with a plymouth progress screen. This part lets your system switch back to the upgrade initramfs after setting up your disks.
-
Files:
systemd/
-
The actual upgrade is handled inside the initramfs by fedup-dracut, which can be found here: https://github.com/wgwoods/fedup-dracut/
fedup
is packaged in Fedora 17 and later; to upgrade to the most recent
released version of Fedora 18 over the network, do:
fedup --network 18
If you want to use upgrade images from a test tree that’s not in the Fedora mirror system, do:
fedup --network 18 --instrepo TEST-TREE-URL
The URL should be the directory that contains .treeinfo
(usually the /os/
dir.)
If you want to install from media, make sure it’s mounted and then run
fedup --device
More information for Fedora users and testers can be found on the Fedora wiki.
For you brave pioneers who want to do it all yourselves, you will need at least two systems: one with the new release (to build upgrade images), and then any old systems you want to upgrade.
You’ll need a system running the new release for this.
See the fedup-dracut README for details, but roughly:
-
Install fedup-dracut and its dependencies
-
deps: dracut, rpm-devel, plymouth-devel, glib2-devel
-
-
make install
-
./makefeduprepo REPODIR
-
this requires createrepo
-
-
Copy REPODIR somewhere HTTP-accessible
-
Install build requirements
-
python-devel, systemd-devel
-
-
Install frontend(s) and systemd support files
-
make install
-
-
Run fedup to prepare system
-
fedup --network 18 --instrepo http://your-repo.host/REPODIR
-
This will take a while. Be patient.
-
You can cancel it and it’ll resume downloading where it left off.
-
-
-
Reboot
-
System Upgrade boot menu item will be chosen automatically
-
-
Wait 60-90 minutes for the upgrade to complete
-
Enjoy your newly-upgraded system
-
upgrade logs are in
/var/log/upgrade.log
-
There’s two simple rules that control where fedup
looks for packages when
doing network upgrades.
Given fedup --network $VERSION
, fedup will:
-
Use the existing repo configuration, with
$releasever
set to$VERSION
-
Add an extra instrepo for fetching boot images; this repo defaults to https://mirrors.fedoraproject.org/metalink/repo=fedora-install-$releasever&arch=$basearch
$VERSION
could be any string; currently fedup
accepts "rawhide" or numbers
greater than the current system version. No explicit validation of $VERSION
is done beyond that.
If the user gives an invalid version (e.g. fedup --network 31337
), fedup
will still set up repos and attempt to contact them, but they won’t be found,
which will cause the upgrade to fail. So invalid versions are implicitly
rejected.
If you are a repo maintainer and you want upgrades to work, you should ensure
that the URLs in your .repo
file will work for any valid $releasever
,
including "rawhide".
If you change the layout of your repos, set up symlinks/redirects for the old URL schemes.
Conversely, you should also ensure that the URLs don’t work for invalid
versions. So you should avoid wildcard redirects or URLs without
$releasever
.