redhat-upgrade-tool - the Red Hat Upgrader
Will Woods <wwoods@redhat.com> :redhat_upgrade_dracut: https://github.com/dashea/redhat-upgrade-dracut/
This is 'redhat-upgrade-tool', the Red Hat 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:
redhat_upgrade_tool/
,redhat_upgrade_tool.py
-
- 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 'redhat-upgrade-dracut', which can be found here: {redhat_upgrade_dracut}
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 {redhat_upgrade_dracut}[the redhat-upgrade-dracut README] for details, but roughly: . Install 'redhat-upgrade-dracut' and its dependencies * deps: 'dracut', 'rpm-devel', 'plymouth-devel', 'glib2-devel' . `make install` . `./make-redhat-upgrade-repo REPODIR` * this requires 'createrepo' . Copy REPODIR somewhere HTTP-accessible Upgrading old system using `redhat-upgrade-tool` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ . Install build requirements * 'python-devel', 'systemd-devel' . Install frontend(s) and systemd support files * `make install` . Run redhat-upgrade-tool to prepare system * `redhat-upgrade-tool --network 7.0 --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` How network upgrades work ------------------------- There's two simple rules that control where `redhat-upgrade-tool` looks for packages when doing network upgrades. Given `redhat-upgrade-tool --network $VERSION`, redhat-upgrade-tool 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 `redhat-upgrade-tool` accepts 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. `redhat-upgrade-tool --network 31337`), redhat-upgrade-tool 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`. // vim: syntax=asciidoc tw=78: