Skip to content

yumsuresht/fedup

 
 

Repository files navigation

fedup - the Fedora Upgrader

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 (and ui/)

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/

How to test (for Fedora users)

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.

Building it yourself

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.

Building upgrade images

You’ll need a system running the new release for this.

See the fedup-dracut README for details, but roughly:

  1. Install fedup-dracut and its dependencies

    • deps: dracut, rpm-devel, plymouth-devel, glib2-devel

  2. make install

  3. ./makefeduprepo REPODIR

    • this requires createrepo

  4. Copy REPODIR somewhere HTTP-accessible

Upgrading old system using fedup

  1. Install build requirements

    • python-devel, systemd-devel

  2. Install frontend(s) and systemd support files

    • make install

  3. 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.

  4. Reboot

    • System Upgrade boot menu item will be chosen automatically

  5. Wait 60-90 minutes for the upgrade to complete

  6. Enjoy your newly-upgraded system

    • upgrade logs are in /var/log/upgrade.log

How network upgrades work

There’s two simple rules that control where fedup looks for packages when doing network upgrades.

Given fedup --network $VERSION, fedup will:

  1. Use the existing repo configuration, with $releasever set to $VERSION

  2. 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.

For repo maintainers

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.

About

Fedora Upgrade tool

Resources

License

Stars

Watchers

Forks

Packages

No packages published