Line 60: | Line 60: | ||
As alluded to above, there are three parts to upgrading with FedUp - preparation, execution and cleanup. | As alluded to above, there are three parts to upgrading with FedUp - preparation, execution and cleanup. | ||
Before you start doing anything, be sure to have a look at [[Common F20 bugs#Upgrade_issues]] and read about the most common bugs found. | Before you start doing anything, be sure to have a look at [[Common F20 bugs#Upgrade_issues]] or [[Common F21 bugs#Upgrade_issues]] and read about the most common bugs found. | ||
==Important Changes in the Upgrade process to Fedora 21== | ==Important Changes in the Upgrade process to Fedora 21== |
Revision as of 17:28, 10 December 2014
What is FedUp?
FedUp (FEDora UPgrader) is the name of a new system for upgrading Fedora installs in Fedora 18 and later. It replaces all of the previously recommended upgrade methods (PreUpgrade and DVD) that were been used in previous Fedora releases. Anaconda, the Fedora installer, has no built-in upgrade functionality in Fedora 18 or later. It has been completely delegated to FedUp.
Currently, FedUp is capable of handling upgrades between all still-supported Fedora releases using a network repository or a DVD image as the package source. Upgrades from EOL Fedora releases may work, but are not supported. More methods for upgrade are currently planned and this page will be updated as those features are completed.
What Does FedUp do?
The FedUp system consists of two parts - the client used to download packages and prepare for the upgrade and a pre-boot environment which does the actual upgrade using systemd and yum. More details are available in a blog post written by FedUp's primary author.
Files are downloaded to /var/tmp/system-upgrade (or the specified --cachedir [to be implemented?]) and will be automatically cleaned up after the upgrade process is finished.
The FedUp Client
The FedUp client runs on the system to be upgraded. It gathers the packages needed for upgrade in addition to downloading the required initramfs and kernel needed for the actual upgrade. At this time, only the fedup command-line interface is implemented but a GUI interface is expected...sometime.
The Upgrade
The actual upgrade takes place when the system has been rebooted after running the FedUp client. The filesystems are mounted during boot, the already downloaded packages are installed and some upgrade-related tasks are performed. During the upgrade process, a special plymouth theme is used which has a progress bar to indicate current upgrade progress.
The Aftermath
Once the upgrade is complete, FedUp will reboot the system automatically. This is so you can run this part of the process unattended and return to the upgraded system, but if you leave any bootable media attached to the system during the upgrade process, the system may boot from that medium instead of the hard disk once the upgrade is complete. If you leave your system upgrading, come back, and see the Fedora installer or something similar...that's probably what happened!
Frequently Asked Questions
Why does my upgrade to Fedora 20 fail (immediately reboot to my old Fedora)?
Because we messed up! Sorry about that. FedUp 0.7, which was in the Fedora 18 and 19 stable repositories at the time of Fedora 20's release, cannot successfully upgrade to Fedora 20. FedUp 0.8, though, can do it just fine. You should use FedUp 0.8 to upgrade to Fedora 20. If you're upgrading from Fedora 18, you'll need to pass --nogpgcheck. See the Common Bugs page for all the details.
How do I report issues that I find with upgrades?
First see Common F20 bugs or Common F21 bugs to check if the problem is a very prominent issue we already know of. If it is not there, the component for reporting problems depends on the exact issue that you hit:
Issues with upgrade preparation
If you hit issues when using the FedUp client (
) before reboot, search or file a bug against FedUp using the version you are upgrading from.
fedup
Issues During Upgrade
If you hit issues after upgrade preparation and the initial reboot, search or file a bug against
using the version you are upgrading to.
fedup-dracut
Issues After Upgrade
If you hit issues after upgrade with a specific package, file a bug against the package with which you are having issues.
How do I Debug Issues During Upgrade?
A troubleshooting and debug guide will be written at some point and linked to from here.
Does FedUp verify the software it runs or installs during upgrade?
Since version 0.8, it does so by default. The package signing keys for newer Fedora releases are now sent to older Fedora releases in order to allow FedUp to verify the integrity of the packages it downloads. You can disable this function with the --nogpgcheck parameter if you need to do so for any reason.
Will packages in third party repositories be upgraded?
Yes, if they are set up like regular yum repositories and do not hard code the repository path. Commonly-used third party repositories usually work fine, but if you attempt to upgrade prior to or soon after an official Fedora release, they may not have updated their repository paths yet, and FedUp may be unable to find their packages. This will usually not prevent the upgrade running successfully, though, and you can update the packages from the third-party repository later.
Can I use FedUp to upgrade to a pre-release (e.g. a beta)?
Yes. After a Fedora release has been branched, it should be possible to upgrade to it using FedUp. It should also work after the Alpha and Beta releases. Of course, this function is as subject to temporary breakage as any other aspect of a pre-release.
See this email to the Fedora devel mailing list for more details.
How Can I Upgrade My System with FedUp?
As alluded to above, there are three parts to upgrading with FedUp - preparation, execution and cleanup.
Before you start doing anything, be sure to have a look at Common F20 bugs#Upgrade_issues or Common F21 bugs#Upgrade_issues and read about the most common bugs found.
Important Changes in the Upgrade process to Fedora 21
In order to select one of the new Fedora flavors, FedUp has new option, "--product=<PRODUCT>". To upgrade to the new Fedora Workstation, use --product=workstation
. (This will also install all packages from the default Workstation installation, including the GNOME 3 desktop environment, in addition to upgrading the packages you already had installed.) If you would prefer to remain on the general, custom "track", use --product=nonproduct
.
Here is the explanation given in the source code of fedup (https://github.com/wgwoods/fedup/blob/master/fedup/commandline.py):
This installation of Fedora does not belong to a product, so you must provide the --product=PRODUCTNAME option to specify what product you want to upgrade to. PRODUCTNAME should be one of: workstation: the default Fedora experience for laptops and desktops, powered by GNOME. server: the default Fedora experience for servers cloud: a base image for use on public and private clouds nonproduct: choose this if none of the above apply; in particular, choose this if you are using an alternate-desktop spin of Fedora Selecting a product will also install its standard package-set in addition to upgrading the packages already on your system. If you prefer to maintain your current set of packages, select 'nonproduct'
Preparing for the Upgrade
- Do a full system update and reboot to ensure that any kernel changes are running
- Install
fedup
- Usually, it is best to try first with the latest fedup available in the stable update repository for the release you are running. If you encounter problems with the upgrade, and a newer fedup is available in the updates-testing repository for your current release, you may wish to try with this newer version:
yum --enablerepo=updates-testing install fedup
at the command line)
- Usually, it is best to try first with the latest fedup available in the stable update repository for the release you are running. If you encounter problems with the upgrade, and a newer fedup is available in the updates-testing repository for your current release, you may wish to try with this newer version:
There are three options for sourcing the packages needed for upgrade - using a network repository, a local ISO file or a local device (hard drive, optical disk etc).
Network
Using a network source is the easiest method of upgrading and will pull in updates while upgrading - eliminating the potential issue if your current system has a newer kernel version than the Fedora release to which you are upgrading.
- Start the upgrade prep by executing following commands
sudo yum update fedup fedora-release
- sudo fedup --network 21 --product=[workstation | server| cloud | nonproduct]
- Once the preparations have completed, check the
/var/log/fedup.log
file if any errors show up in the output fromfedup
ISO File
In order to use an ISO file, it needs to exist locally on the filesystem of the system to be upgraded. The documentation is written as if that file is /home/user/fedora-20.iso but you will need to replace all instances of that path with the actual path of the ISO. Updates will be pulled in if you have network access on the machine to be upgraded.
- Download the Fedora 40 ISO appropriate for the arch that you are running
- For the sake of example, we will assume that the ISO exists at
/home/user/fedora-20.iso
but it can be anywhere in the filesystem as long as you alter the path below to reflect the actual location of the ISO. Make sure you have downloaded Fedora DVD ISO image otherwise you will get an error "The given ISO probably isn't an install DVD image" when runfedup
command.
- For the sake of example, we will assume that the ISO exists at
- Start the upgrade prep by executing the following command
sudo fedup --iso /home/user/fedora-20.iso
- Once the preparations have completed, check the
/var/log/fedup.log
file if any errors show up in the output fromfedup
Other Device
Optical drives and other mountable storage can also be used as a package source for upgrade preparations.
- Mount the source material
- For the sake of example, we will assume that this source is mounted at
/mnt/fedora
but you can mount it anywhere as long as you replace/mnt/fedora
in the command below with the actual mounted location of the upgrade source.
- For the sake of example, we will assume that this source is mounted at
- Start the upgrade preparations by executing the following command
sudo fedup --device /mnt/fedora --debuglog=fedupdebug.log
- Once the preparations have completed, check the
fedupdebug.log
file if any errors show up in the output fromfedup
Executing the Upgrade
- Reboot the system if
fedup
has completed without error. - Once the system reboots, there should be a new entry in the GRUB menu titled
System Upgrade
. - Select the
System Upgrade
option from the GRUB menu- Remark: If the
System Upgrade
item is not shown in the grublist at boot, it is most often caused by having a different grub, most often installed by another Linux distribution you may have in multiboot. To correct this quickly: reinstall grub:- grub2-mkconfig -o /boot/grub2/grub.cfg
- grub2-install /dev/sda (replace /dev/sda by any other device you prefer to boot from)
- Remark: If the
- The system should boot into the upgrade process and a plymouth boot screen should be displayed
- There is a root shell on VT2 so you can tinker with the system if something goes wrong. (To disable this, boot with
rd.upgrade.noshell
) - Press 'esc' to see a more detailed log. If you switch back to the graphical progress indicator, it may show 0% for the remainder of the upgrade but that does not mean the upgrade has stopped.
- There is a root shell on VT2 so you can tinker with the system if something goes wrong. (To disable this, boot with
- Once the upgrade process has completed, the system will reboot and an option to boot Fedora 40 will be on the grub menu
Cleaning Up Post Upgrade
It is worth rebuilding the RPM DB to prevent RPMDB checksum error when doing a distribution sync:
sudo rpm --rebuilddb
There are a collection of post-upgrade things to do. Some of which are fixed by doing a distro sync:
sudo yum distro-sync --setopt=deltarpm=0
If you are using google-chrome from the Google repository, you must re-install google-chrome due to a packaging bug on the Google side of things. Make sure to adjust the command to the build type you would like to install:
sudo yum remove google-chrome-\* && sudo yum install google-chrome-[beta,stable,unstable]
Docs TODO
- Write fedup troubleshooting and debug guide
- add note about blob drivers if needed