20 Upgrading SUSE Linux Enterprise #
SUSE® Linux Enterprise (SLE) allows upgrading an existing system to a later version or service pack. No new installation is needed. Existing data, such as home and data directories and system configuration, is kept intact. You can update from a local CD or DVD drive or from a central network installation source.
This chapter explains how to manually upgrade your SUSE Linux Enterprise system, be it by DVD, network, an automated process, or SUSE Manager.
20.1 Supported Upgrade Paths to SLE 12 SP5 #
Cross-architecture upgrades, such as upgrading from a 32-bit version of SUSE Linux Enterprise Server to the 64-bit version, or upgrading from big endian to little endian are not supported!
Specifically, SLE 11 on POWER (big endian) to SLE 12 SP2 on POWER (new: little endian!), is not supported.
Also, since SUSE Linux Enterprise 12 is 64-bit only, upgrades from any 32-bit SUSE Linux Enterprise 11 systems to SUSE Linux Enterprise 12 and later are not supported.
To make a cross-architecture upgrade, you need to perform a new installation.
The safest upgrade path is to go step by step and to consecutively install all Service Packs. In some cases it is supported to skip 1 or 2 Service Packs when upgrading. For details, see Supported Upgrade Paths per Version and Figure 20.1, “Overview of Supported Upgrade Paths”. However, we recommend to not skip any Service Pack.
We recommend to do a fresh install when upgrading to a new major release.
- Upgrading from SUSE Linux Enterprise 10 (any Service Pack)
There is no supported direct migration path to SUSE Linux Enterprise 12. We recommend a fresh installation in this case.
- Upgrading from SUSE Linux Enterprise 11 GA/SP1/SP2/SP3
There is no supported direct migration path to SUSE Linux Enterprise 12. You need at least SLE 11 SP4 before you can proceed to SLE 12 SP5.
If you cannot do a fresh install, first upgrade your installed SLE 11 Service Pack to SLE 11 SP4. These steps are described in the Deployment Guide for SUSE Linux Enterprise 11: https://documentation.suse.com/sles-11/ .
- Upgrading from SUSE Linux Enterprise 11 SP4
Upgrading from SLE 11 SP4 to SLE 12 SP5 is only supported via an offline upgrade. Refer to Chapter 21, Upgrading Offline for details.
- Upgrading from SUSE Linux Enterprise 12 GA/SP1/SP2/SP3 to SP5
Direct upgrades from SLE 12 GA, SP1, SP2, or SP3 to SP5 are not supported. Upgrade to SLE 12 SP4 first.
- Upgrading from SUSE Linux Enterprise 12 SP4 to SP5
Upgrading from SUSE Linux Enterprise 12 SP4 to SP5 is supported.
- Upgrading from SUSE Linux Enterprise 12 LTSS GA/SP1/SP2 to SP5
Direct upgrades from SUSE Linux Enterprise 12 LTSS GA, SP1, or SP2 to SP5 are not supported. Upgrade to SLE 12 LTSS SP3 or SP4 first.
- Upgrading from SUSE Linux Enterprise 12 LTSS SP3/SP4 to SP5
Upgrading from SUSE Linux Enterprise 12 LTSS SP3, or SP4 to SP5 is supported.
20.2 Online and Offline Upgrade #
SUSE supports two different upgrade and migration methods. For more information about the terminology, see Section 19.1, “Terminology”. The methods are:
- Online
All upgrades that are executed from the running system are considered to be online. Examples: Connected through SUSE Customer Center, Subscription Management Tool (SMT), SUSE Manager using Zypper or YaST.
When migrating between Service Packs of the same major release, we suggest following Section 22.4, “Upgrading with the Online Migration Tool (YaST)” or Section 22.5, “Upgrading with Zypper”.
- Offline
Offline methods usually boot another operating system from which the installed SLE version is upgraded. Examples are: DVD, flash disk, ISO image, AutoYaST, “plain RPM” or PXE boot.
If your machine is managed by SUSE Manager, the upgrade procedure should be started in the management interface. For details, see Section 21.6, “Updating via SUSE Manager”.
20.3 Preparing the System #
Before starting the upgrade procedure, make sure your system is properly prepared. Among others, preparation involves backing up data and checking the release notes.
20.3.1 Make Sure the Current System Is Up-To-Date #
Upgrading the system is only supported from the most recent
patch level. Make sure the latest system updates are installed by either
running zypper patch
or by starting the YaST module
.
20.3.2 Read the Release Notes #
In the release notes you can find additional information on changes since the previous release of SUSE Linux Enterprise Server. Check the release notes to see whether:
your hardware needs special considerations;
any used software packages have changed significantly;
special precautions are necessary for your installation.
The release notes also provide information that could not make it into the manual on time. They also contain notes about known issues.
If you are skipping one or more Service Packs, check the release notes of the skipped Service Packs as well. The release notes usually only contain the changes between two subsequent releases. You can miss important changes if you are only reading the current release notes.
Find the release notes locally in the directory
/usr/share/doc/release-notes
or online at
https://www.suse.com/releasenotes/.
20.3.3 Make a Backup #
Before updating, copy existing configuration files to a separate medium
(such as tape device, removable hard disk, etc.) to back up the data. This
primarily applies to files stored in /etc
and some
directories and files in /var
and
/opt
. You may also want to write the user data in
/home
(the HOME
directories) to a
backup medium. Back up this data as root
. Only root
has read
permissions for all local files.
If you have selected /etc/sysconfig
directory. However, this is
not a complete backup, as all the other important directories mentioned
above are missing. Find the backup in the
/var/adm/backup
directory.
20.3.3.1 Listing Installed Packages and Repositories #
It is often useful to have a list of installed packages, for example when doing a fresh install of a new major SLE release or reverting to the old version.
Be aware that not all installed packages or used repositories are available in newer releases of SUSE Linux Enterprise. Some may have been renamed and others replaced. It is also possible that some packages are still available for legacy purposes while another package is used by default. Therefore some manual editing of the files might be necessary. This can be done with any text editor.
Create a file named repositories.bak
containing a
list of all used repositories:
root #
zypper
lr -e repositories.bak
Also create a file named installed-software.bak
containing a list of all installed packages:
root #
rpm
-qa --queryformat '%{NAME}\n' > installed-software.bak
Back up both files. The repositories and installed packages can be restored with the following commands:
root #
zypper
ar repositories.bakroot #
zypper
install $(cat installed-software.bak)
A system upgraded to a new major version (SLE X+1) may contain more packages than the initial system (SLE X). It will also contain more packages than a fresh installation of SLE X+1 with the same pattern selection. Reasons for this are:
Packages got split to allow a more fine-grained package selection. For example, 37 texlive packages on SLE 11 were split into 422 packages on SLE 12.
When a package got split into other packages all new packages are installed in the upgrade case to retain the same functionality as with the previous version. However, the new default for a fresh installation of SLE X+1 may be to not install all packages.
Legacy packages from SLE X may be kept for compatibility reasons.
Package dependencies and the scope of patterns may have changed.
20.3.4 Disable the LTSS Extension #
If you upgrade a SUSE Linux Enterprise Server system with Long Term Service Pack Support
(LTSS) to a version that is still under general support, the upgrade will
fail with the error No migration available
. This happens
because zypper migration
tries to migrate
all repositories , but there is no LTSS repository for
the new version yet.
To fix this issue, disable the LTSS extension before the upgrade.
Check if the LTSS extension is enabled:
tux >
sudo
SUSEConnect --list-extensions | grep LTSS SUSE Linux Enterprise Server LTSS 12 SP2 x86_64 (Installed) Deactivate with: SUSEConnect -d -p SLES-LTSS/12.2/x86_64Disable the LTSS extension with the command from the
SUSEConnect
output above:tux >
sudo
SUSEConnect -d -p SLES-LTSS/12.2/x86_64 Deregistered SUSE Linux Enterprise Server LTSS 12 SP2 x86_64 To server: https://scc.suse.com/Verify the LTSS repository is no longer present with
zypper lr
.
20.3.5 Migrate your MySQL Database #
As of SUSE Linux Enterprise 12, SUSE switched from MySQL to MariaDB. Before you start any upgrade, it is highly recommended to back up your database.
To perform the database migration, do the following:
Log in to your SUSE Linux Enterprise 11 machine.
Create a dump file:
root #
mysqldump
-u root -p --all-databases > mysql_backup.sqlBy default,
mysqldump
does not dump theINFORMATION_SCHEMA
orperformance_schema
database. For more details refer to https://dev.mysql.com/doc/refman/5.5/en/mysqldump.html.Store your dump file, the configuration file
/etc/my.cnf
, and the directory/etc/mysql/
for later investigation (NOT installation!) in a safe place.Perform your upgrade. After the upgrade, your former configuration file
/etc/my.cnf
is still intact. You can find the new configuration in the file/etc/my.cnf.rpmnew
.Configure your MariaDB database to your needs. Do NOT use the former configuration file and directory, but use it as a reminder and adapt it.
Make sure you start the MariaDB server:
root #
systemctl
start mysqlIf you want to start the MariaDB server on every boot, enable the service:
root #
systemctl
enable mysqlVerify that MariaDB is running properly by connecting to the database:
root #
mysql
-u root -p
20.3.6 Migrate your PostgreSQL Database #
A newer version of the PostgreSQL database is shipped as a maintenance update. Because of the required migration work of the database, there is no automatic upgrade process. As such, the switch from one version to another needs to be done manually.
The migration process is conducted by the pg_upgrade
command which is an alternative method of the classic dump and reload. In
comparison with the “dump & reload” method,
pg_upgrade
makes the migration less time-consuming.
The program files for each PostgreSQL version are stored in different,
version-dependent directories. For example, in /usr/lib/postgresql96/
for version 9.6 and in /usr/lib/postgresql10/
for version 10.
Note that the versioning policy of PostgreSQL has changed between the major
versions 9.6 and 10. For details, see https://www.postgresql.org/support/versioning/.
When upgrading from SLE 11, postgresql94
will
be uninstalled and cannot be used for the database migration to a higher
PostgreSQL version. Therefore in this case make sure to migrate the
PostgreSQL database before you upgrade your system.
The procedure below describes the database migration from version 9.6 to 10. When using a different version as start or target, replace the version numbers accordingly.
To perform the database migration, do the following:
Make sure the following preconditions are fulfilled:
If not already done, upgrade any package of the old PostgreSQL version to the latest release through a maintenance update.
Create a backup of your existing database.
Install the packages of the new PostgreSQL major version. For SLE12 SP5 this means to install postgresql10-server and all the packages it depends on.
Install the package postgresql10-contrib which contains the command
pg_upgrade
.Make sure you have enough free space in your PostgreSQL data area, which is
/var/lib/pgsql/data
by default. If space is tight, try to reduce size with the following SQL command on each database (can take very long!):VACUUM FULL
Stop the PostgreSQL server with either:
root #
/usr/sbin/rcpostgresql
stopor
root #
systemctl stop postgresql.service(depending on the SLE version you use as the starting point for your upgrade).
Rename your old data directory:
root #
mv
/var/lib/pgsql/data /var/lib/pgsql/data.oldInitialize your new database instance either manually with
initdb
or by starting and stopping PostgreSQL, which will do it automatically:root #
/usr/sbin/rcpostgresql
startroot #
/usr/sbin/rcpostgresql
stopor
root #
systemctl start postgresql.serviceroot #
systemctl stop postgresql.service(depending on the SLE version you use as the start version for your upgrade).
If you have changed your configuration files in the old version, consider transferring these changes to the new configuration files. This may affect the files
postgresql.auto.conf
,postgresql.conf
,pg_hba.conf
andpg_ident.conf
. The old versions of these files are located in/var/lib/pgsql/data.old/
, the new versions can be found in/var/lib/pgsql/data
.Note that just copying the old configuration files is not recommended, because this may overwrite new options, new defaults and changed comments.
Start the migration process as user
postgres
:root #
su - postgres postgres >pg_upgrade
\ --old-datadir "/var/lib/pgsql/data.old" \ --new-datadir "/var/lib/pgsql/data" \ --old-bindir "/usr/lib/postgresql96/bin/" \ --new-bindir "/usr/lib/postgresql10/bin/"Start your new database instance with either:
root #
/usr/sbin/rcpostgresql
startor
root #
systemctl start postgresql.service(depending on the SLE version you use as the start version for your upgrade).
Check if the migration was successful. The scope of the test depends on your use case. There is no general tool to automate this step.
Remove any old PostgreSQL packages and your old data directory:
root #
zypper
search -s postgresql96 | xargs zypper rm -uroot #
rm
-rf /var/lib/pgsql/data.old
To connect to PostgreSQL via the unixODBC
driver
the psqlODBC package needs to be installed.
20.3.7 Create Non-MD5 Server Certificates for Java Applications #
During the update from SP1 to SP2, MD5-based certificates were disabled as part of a security fix. If you have certificates created as MD5, re-create your certificates with the following steps:
Open a terminal and log in as
root
.Create a private key:
root #
openssl
genrsa -out server.key 1024If you want a stronger key, replace
1024
with a higher number, for example,4096
.Create a certificate signing request (CSR):
root #
openssl
req -new -key server.key -out server.csrSelf-sign the certificate:
root #
openssl
x509 -req -days 365 -in server.csr -signkey server.key -out server.crtCreate the PEM file:
root #
cat
server.key server.crt > server.pemPlace the files
server.crt
,server.csr
,server.key
, andserver.pem
in the respective directories where the keys can be found. For Tomcat, for example, this directory is/etc/tomcat/ssl/
.
20.3.8 Shut Down Virtual Machine Guests #
If your machine serves as a VM Host Server for KVM or Xen, make sure to properly shut down all running VM Guests prior to the update. Otherwise you may not be able to access the guests after the update.
20.3.9 Adjust Your SMT Client Setup #
If the machine you want to upgrade is registered as a client against an SMT server, take care of the following:
Check if the version of the clientSetup4SMT.sh
script on
your host is up to date. clientSetup4SMT.sh
from older
versions of SMT cannot manage SMT 12 clients. If you apply software
patches regularly on your SMT server, you can always find the latest version
of clientSetup4SMT.sh
at
<SMT_HOSTNAME>/repo/tools/clientSetup4SMT.sh
.
In case upgrading your machine to a higher version of SUSE Linux Enterprise Server fails, de-register the machine from the SMT server as described in Procedure 20.1. Afterward, restart the upgrade process.
Log in to the client machine.
The following step depends on the current operating system of the client:
For SUSE Linux Enterprise 11, execute the following commands:
tux >
sudo
suse_register -Etux >
sudo
rm -f /etc/SUSEConnecttux >
sudo
rm -rf /etc/zypp/credentials.d/*tux >
sudo
rm -rf /etc/zypp/repos.d/*tux >
sudo
rm -f /etc/zypp/services.d/*tux >
sudo
rm -f /var/cache/SuseRegister/*tux >
sudo
rm -f /etc/suseRegister*tux >
sudo
rm -f /var/cache/SuseRegister/lastzmdconfig.cachetux >
sudo
rm -f /etc/zmd/deviceidtux >
sudo
rm -f /etc/zmd/secretFor SUSE Linux Enterprise 12, execute the following commands:
tux >
sudo
SUSEConnect --de-registertux >
sudo
SUSEConnect --cleanuptux >
sudo
rm -f /etc/SUSEConnecttux >
sudo
rm -rf /etc/zypp/credentials.d/*tux >
sudo
rm -rf /etc/zypp/repos.d/*tux >
sudo
rm -f /etc/zypp/services.d/*
Log in to the SMT server.
Check if the client has successfully been de-registered by listing all client registrations:
tux >
sudo
smt-list-registrationsIf the client's host name is still listed in the output of this command, get the client's
Unique ID
from the first column. (The client might be listed with multiple IDs.)Delete the registration for this client:
tux >
sudo
smt-delete-registration -g UNIQUE_IDIf the client is listed with multiple IDs, repeat the step above for each of its unique IDs.
Check if the client has now successfully been de-registered by re-running:
tux >
sudo
smt-list-registrations
20.3.10 Disk Space #
Software tends to grow from version to version. Therefore, take a look at the available partition space before updating. If you suspect you are running short of disk space, back up your data before increasing the available space by resizing partitions, for example. There is no general rule regarding how much space each partition should have. Space requirements depend on your particular partitioning profile and the software selected.
During the update procedure, YaST will check how much free disk space is available and display a warning to the user if the installation may exceed the available amount. In that case, performing the update may lead to an unusable system! Only if you know exactly what you are doing (by testing beforehand), you can skip the warning and continue the update.
20.3.10.1 Checking Disk Space on Non-Btrfs File Systems #
Use the df
command to list available disk space. For
example, in Example 20.1, “List with df -h
”, the root partition is
/dev/sda3
(mounted as /
).
df -h
#Filesystem Size Used Avail Use% Mounted on /dev/sda3 74G 22G 53G 29% / tmpfs 506M 0 506M 0% /dev/shm /dev/sda5 116G 5.8G 111G 5% /home /dev/sda1 44G 4G 40G 9% /data
20.3.10.2 Checking Disk Space on Btrfs Root File Systems #
If you use Btrfs as root file systems on your machine, make sure there is
enough free space. In the worst case, an upgrade needs as much disk space as the current root
file system (without /.snapshot
) for a new snapshot.
To display available disk space use the command:
root #
df
-h /
Check the available space on all other mounted partitions as well. The following recommendations have been proven:
For all file systems including Btrfs you need enough free disk space to download and install big RPMs. The space of old RPMs are only freed after new RPMs are installed.
For Btrfs with snapshots, you need at minimum as much free space as your current installation takes. We recommend to have twice as much free space as the current installation.
If you do not have enough free space, you can try to delete old snapshots with
snapper
:root #
snapper
listroot #
snapper
delete NUMBERHowever, this may not help in all cases. Before migration, most snapshots occupy only little space.
20.3.11 Temporarily Disabling Kernel Multiversion Support #
SUSE Linux Enterprise Server allows installing multiple kernel versions by enabling the
respective settings in /etc/zypp/zypp.conf
. Support
for this feature needs to be temporarily disabled to upgrade to a service
pack. When the update has successfully finished, multiversion support can be
re-enabled. To disable multiversion support, comment the respective
lines in /etc/zypp/zypp.conf
. The result should look
similar to:
#multiversion = provides:multiversion(kernel) #multiversion.kernels = latest,running
To re-activate this feature after a successful update, remove the comment signs. For more information about multiversion support, refer to Section 16.1, “Enabling and Configuring Multiversion Support”.
20.4 Upgrading on IBM IBM Z #
Upgrading a SUSE Linux Enterprise installation on IBM IBM Z requires the
Upgrade=1
kernel parameter, for example via the
parmfile. See Section 4.3, “The parmfile—Automating the System Configuration”.
20.5 IBM POWER: Starting an X Server #
On SLES 12 for IBM POWER the display manager is configured not to start a local X Server by default. This setting was reversed on SLES 12 SP1—the display manager now starts an X Server.
To avoid problems during upgrade, the SUSE Linux Enterprise Server setting is not changed
automatically. If you want the display manager to start an X Server after
the upgrade, change the setting of
DISPLAYMANAGER_STARTS_XSERVER
in
/etc/sysconfig/displaymanager
as follows:
DISPLAYMANAGER_STARTS_XSERVER="yes"