Table of Contents
We suggest that before upgrading you also read the information in Kapitel 5, Ting man skal være opmærksom på i forbindelse med squeeze. That chapter covers potential issues not directly related to the upgrade process but which could still be important to know about before you begin.
Before upgrading your system, it is strongly recommended that you make a full backup, or at least back up any data or configuration information you can't afford to lose. The upgrade tools and process are quite reliable, but a hardware failure in the middle of an upgrade could result in a severely damaged system.
The main things you'll want to back up are the contents of
/etc, /var/lib/dpkg,
/var/lib/apt/extended_states and the output of
dpkg --get-selections "*" (the quotes are important). If
you use aptitude to manage packages on your system, you
will also want to back up /var/lib/aptitude/pkgstates.
The upgrade process itself does not modify anything in the
/home directory. However, some applications (e.g.
parts of the Mozilla suite, and the GNOME and KDE desktop environments) are
known to overwrite existing user settings with new defaults when a new
version of the application is first started by a user. As a precaution, you
may want to make a backup of the hidden files and directories
(“dotfiles”) in users' home directories. This backup may help
to restore or recreate the old settings. You may also want to inform users
about this.
Any package installation operation must be run with superuser privileges, so
either log in as root or use su or
sudo to gain the necessary access rights.
The upgrade has a few preconditions; you should check them before actually executing the upgrade.
It's wise to inform all users in advance of any upgrades you're planning, although users accessing your system via an ssh connection should notice little during the upgrade, and should be able to continue working.
If you wish to take extra precautions, back up or unmount the
/home partition before upgrading.
You will have to do a kernel upgrade when upgrading to squeeze, so a reboot will be necessary.
There might be services that are offered by the system which are associated with packages that will be included in the upgrade. If this is the case, please note that, during the upgrade, these services will be stopped while their associated packages are being replaced and configured. During this time, these services will not be available.
The precise downtime for these services will vary depending on the number of packages being upgraded in the system, and it also includes the time the system administrator answers the configuration questions from different package upgrades (if any). Notice that if the upgrade process is left unattended and the system requests input throughout the upgrade there is a high possibility of services being unavailable[4] for a significant period of time.
If the system being upgraded provides critical services for your users or the network[5], you can reduce the downtime if you do a minimal system upgrade, as described in Section 4.4.4, “Minimal system upgrade”, followed by a kernel upgrade and reboot (see Section 4.4.5, “Upgrading the kernel and udev”), and then upgrade the packages associated with your critical services. Upgrade these packages prior to doing the full upgrade described in Section 4.4.6, “Upgrading the system”. This way you can ensure that these critical services are running and available through the full upgrade process, and their downtime is reduced.
Because of the many changes in the kernel between lenny and squeeze regarding drivers, hardware discovery and the naming and ordering of device files, there is a real risk that you may experience problems rebooting your system after the upgrade. A lot of known potential issues are documented in this and the next chapters of these Release Notes.
For that reason it makes sense to ensure that you will be able to recover if your system should fail to reboot or, for remotely managed systems, fail to bring up networking.
If you are upgrading remotely via an ssh link it is highly recommended that you take the necessary precautions to be able to access the server through a remote serial terminal. There is a chance that, after upgrading the kernel and rebooting, some devices will be renamed (as described in Section 4.6.2, “Device enumeration reordering” ) and you will have to fix the system configuration through a local console. Also, if the system is rebooted accidentally in the middle of an upgrade there is a chance you will need to recover using a local console.
The most obvious thing to try first is to reboot with your old kernel. However, for various reasons documented elsewhere in this document, this is not guaranteed to work.
If that fails, you will need an alternative way to boot your system so you
can access and repair it. One option is to use a special rescue image or a
Linux live CD. After booting from that, you should be able to mount your
root file system and chroot into it to investigate and
fix the problem.
Another option we'd like to recommend is to use the rescue mode of the squeeze Debian Installer. The advantage of using the installer is that you can choose between its many installation methods for one that best suits your situation. For more information, please consult the section “Recovering a Broken System” in chapter 8 of the Installation Guide and the Debian Installer FAQ.
The initramfs-tools includes a debug
shell[6] in the initrds it generates. If for example the initrd is
unable to mount your root file system, you will be dropped into this debug
shell which has basic commands available to help trace the problem and
possibly fix it.
Basic things to check are: presence of correct device files in
/dev; what modules are loaded (cat
/proc/modules); output of dmesg for errors
loading drivers. The output of dmesg will also show what
device files have been assigned to which disks; you should check that
against the output of echo $ROOT to make sure that the
root file system is on the expected device.
If you do manage to fix the problem, typing exit will
quit the debug shell and continue the boot process at the point it failed.
Of course you will also need to fix the underlying problem and regenerate
the initrd so the next boot won't fail again.
The distribution upgrade should be done either locally from a textmode virtual console (or a directly connected serial terminal), or remotely via an ssh link.
![]() | Important |
|---|---|
If you are using some VPN services (such as |
In order to gain extra safety margin when upgrading remotely, we suggest that you run upgrade processes in the virtual console provided by the screen program, which enables safe reconnection and ensures the upgrade process is not interrupted even if the remote connection process fails.
![]() | Important |
|---|---|
You should not upgrade using telnet, rlogin, rsh, or from an X session managed by xdm, gdm or kdm etc on the machine you are upgrading. That is because each of those services may well be terminated during the upgrade, which can result in an inaccessible system that is only half-upgraded. Use of the GNOME application update-manager is strongly discouraged for upgrades to new releases, as this tool relies on the desktop session remaining active. |
Due to bug #512951, the splashy package needs to be purged prior to the
upgrade.
# apt-get purge splashy
The upgrade process described in this chapter has been designed for upgrades from “pure” lenny systems without third-party packages. For the greatest reliability of the upgrade process, you may wish to remove third-party packages from your system before you begin upgrading.
Direct upgrades from Debian releases older than 5.0 (lenny) are not supported. Please follow the instructions in the Release Notes for Debian GNU/Linux 5.0 to upgrade to 5.0 first.
This procedure also assumes your system has been updated to the latest point release of lenny. If you have not done this or are unsure, follow the instructions in Afsnit A.1, “Opgradering af dit lenny-system”.
In some cases, the use of apt-get for installing packages instead of aptitude might make aptitude consider a package as “unused” and schedule it for removal. In general, you should make sure the system is fully up-to-date and “clean” before proceeding with the upgrade.
Because of this you should review if there are any pending actions in the
package manager aptitude. If a package is scheduled for
removal or update in the package manager, it might negatively impact the
upgrade procedure. Note that correcting this is only possible if your
sources.list still points to
lenny and not to stable
or squeeze; see Afsnit A.2, “Kontroller din kildeliste”.
To perform this review, launch aptitude in “visual mode” and press g (“Go”). If it shows any actions, you should review them and either fix them or implement the suggested actions. If no actions are suggested you will be presented with a message saying “No packages are scheduled to be installed, removed, or upgraded”.
If you have configured APT to install certain packages from a distribution
other than stable (e.g. from testing), you may have to change your APT
pinning configuration (stored in /etc/apt/preferences)
to allow the upgrade of packages to the versions in the new stable release.
Further information on APT pinning can be found in apt_preferences(5).
Regardless of the method used for upgrading, it is recommended that you check the status of all packages first, and verify that all packages are in an upgradable state. The following command will show any packages which have a status of Half-Installed or Failed-Config, and those with any error status.
# dpkg --audit
You could also inspect the state of all packages on your system using dselect, aptitude, or with commands such as
# dpkg -l | pager
or
# dpkg --get-selections "*" > ~/curr-pkgs.txt
It is desirable to remove any holds before upgrading. If any package that is essential for the upgrade is on hold, the upgrade will fail.
Note that aptitude uses a different method for registering packages that are on hold than apt-get and dselect. You can identify packages on hold for aptitude with
# aptitude search "~ahold"
If you want to check which packages you had on hold for apt-get, you should use
# dpkg --get-selections | grep hold
If you changed and recompiled a package locally, and didn't rename it or put an epoch in the version, you must put it on hold to prevent it from being upgraded.
The “hold” package state for apt-get can be changed using:
# echo package_name hold | dpkg --set-selections
Replace hold with install to unset the
“hold” state.
If there is anything you need to fix, it is best to make sure your
sources.list still refers to lenny as
explained in Afsnit A.2, “Kontroller din kildeliste”.
If you have listed the proposed-updates section in your
/etc/apt/sources.list file, you should remove it from
that file before attempting to upgrade your system. This is a precaution to
reduce the likelihood of conflicts.
If you have any non-Debian packages on your system, you should be aware that
these may be removed during the upgrade because of conflicting
dependencies. If these packages were installed by adding an extra package
archive in your /etc/apt/sources.list, you should check
if that archive also offers packages compiled for squeeze and change
the source line accordingly at the same time as your source lines for Debian
packages.
Some users may have unofficial backported “newer” versions of packages that are in Debian installed on their lenny system. Such packages are most likely to cause problems during an upgrade as they may result in file conflicts[7]. Section 4.5, “Possible issues during upgrade” has some information on how to deal with file conflicts if they should occur.
Before starting the upgrade you must set up apt's configuration file for package lists,
/etc/apt/sources.list.
apt will consider all packages that
can be found via any “deb” line, and install
the package with the highest version number, giving priority to the first
line in the file (thus where you have multiple mirror locations, you'd
typically first name a local hard disk, then CD-ROMs, and
then HTTP/FTP mirrors).
A release can often be referred to both by its codename (e.g.
lenny, squeeze) and
by its status name (i.e. oldstable,
stable, testing,
unstable). Referring to a release by its codename has
the advantage that you will never be surprised by a new release and for this
reason is the approach taken here. It does of course mean that you will
have to watch out for release announcements yourself. If you use the status
name instead, you will just see loads of updates for packages available as
soon as a release has happened.
The default configuration is set up for installation from main Debian
Internet servers, but you may wish to modify
/etc/apt/sources.list to use other mirrors, preferably
a mirror that is network-wise closest to you.
Debian HTTP or FTP mirror addresses can be found at http://www.debian.org/distrib/ftplist (look at the “list of Debian mirrors” section). HTTP mirrors are generally speedier than FTP mirrors.
For example, suppose your closest Debian mirror is
http://mirrors.kernel.org. When inspecting that mirror with
a web browser or FTP program, you will notice that the main directories are
organized like this:
http://mirrors.kernel.org/debian/dists/squeeze/main/binary-i386/... http://mirrors.kernel.org/debian/dists/squeeze/contrib/binary-i386/...
To use this mirror with apt, you add
this line to your sources.list file:
deb http://mirrors.kernel.org/debian squeeze main contrib
Note that the `dists' is added implicitly, and the
arguments after the release name are used to expand the path into multiple
directories.
After adding your new sources, disable the previously existing
“deb” lines in
sources.list by placing a hash sign
(#) in front of them.
Instead of using HTTP or FTP package mirrors, you may wish to modify
/etc/apt/sources.list to use a mirror on a local disk
(possibly mounted over NFS).
For example, your package mirror may be under
/var/ftp/debian/, and have main directories like this:
/var/ftp/debian/dists/squeeze/main/binary-i386/... /var/ftp/debian/dists/squeeze/contrib/binary-i386/...
To use this with apt, add this line
to your sources.list file:
deb file:/var/ftp/debian squeeze main contrib
Note that the `dists' is added implicitly, and the
arguments after the release name are used to expand the path into multiple
directories.
After adding your new sources, disable the previously existing
“deb” lines in
sources.list by placing a hash sign
(#) in front of them.
If you want to use CDs only, comment out the existing
“deb” lines in
/etc/apt/sources.list by placing a hash sign
(#) in front of them.
Make sure there is a line in /etc/fstab that enables
mounting your CD-ROM drive at the /cdrom mount point
(the exact /cdrom mount point is required for
apt-cdrom). For example, if
/dev/hdc is your CD-ROM drive,
/etc/fstab should contain a line like:
/dev/hdc /cdrom auto defaults,noauto,ro 0 0
Note that there must be no spaces between the words
defaults,noauto,ro in the fourth field.
To verify it works, insert a CD and try running
# mount /cdrom # this will mount the CD to the mount point # ls -alF /cdrom # this should show the CD's root directory # umount /cdrom # this will unmount the CD
Next, run:
# apt-cdrom add
for each Debian Binary CD-ROM you have, to add the data about each CD to APT's database.
The recommended way to upgrade from previous Debian GNU/Linux releases is to use the package management tool apt-get. In previous releases, aptitude was recommended for this purpose, but recent versions of apt-get provide equivalent functionality and also have shown to more consistently give the desired upgrade results.
Don't forget to mount all needed partitions (notably the root and
/usr partitions) read-write, with a command like:
# mount -o remount,rw /mountpoint
Next you should double-check that the APT source entries (in
/etc/apt/sources.list) refer either to
“squeeze” or to
“stable”. There should not be any sources
entries pointing to lenny.
![]() | Note |
|---|---|
Source lines for a CD-ROM might sometimes refer to
“ |
It is strongly recommended that you use the /usr/bin/script program to record a transcript of the upgrade session. Then if a problem occurs, you will have a log of what happened, and if needed, can provide exact information in a bug report. To start the recording, type:
# script -t 2>~/upgrade-squeezestep.time -a ~/upgrade-squeezestep.script
or similar. If you have to rerun the typescript (e.g. if you have to reboot
the system) use different step values to indicate
which step of the upgrade you are logging. Do not put the typescript file in
a temporary directory such as /tmp or
/var/tmp (files in those directories may be deleted
during the upgrade or during any restart).
The typescript will also allow you to review information that has scrolled
off-screen. If you are at the system's console, just switch to VT2 (using
Alt+F2)
and, after logging in, use less -R
~root/upgrade-squeeze.script to view the file.
After you have completed the upgrade, you can stop script
by typing exit at the prompt.
If you have used the -t switch for script you can use the scriptreplay program to replay the whole session:
# scriptreplay ~/upgrade-squeeze.time ~/upgrade-squeeze.script
First the list of available packages for the new release needs to be fetched. This is done by executing:
# apt-get update
You have to make sure before upgrading your system that you have sufficient
hard disk space when you start the full system upgrade described in Section 4.4.6, “Upgrading the system”. First, any package needed for installation that
is fetched from the network is stored in
/var/cache/apt/archives (and the
partial/ subdirectory, during download), so you must
make sure you have enough space on the file system partition that holds
/var/ to temporarily download the packages that will be
installed in your system. After the download, you will probably need more
space in other file system partitions in order to both install upgraded
packages (which might contain bigger binaries or more data) and new packages
that will be pulled in for the upgrade. If your system does not have
sufficient space you might end up with an incomplete upgrade that might be
difficult to recover from.
apt-get can show you detailed information of the disk space needed for the installation. Before executing the upgrade, you can see this estimate by running:
# apt-get -o APT::Get::Trivial-Only=true dist-upgrade [ ... ] XXX upgraded, XXX newly installed, XXX to remove and XXX not upgraded. Need to get xx.xMB of archives. After this operation, AAAMB of additional disk space will be used.
![]() | Note |
|---|---|
Running this command at the beginning of the upgrade process may give an error, for the reasons described in the next sections. In that case you will need to wait until you've done the minimal system upgrade as in Section 4.4.4, “Minimal system upgrade” and upgraded your kernel before running this command to estimate the disk space. |
If you do not have enough space for the upgrade, apt-get will warn you with a message like this:
E: You don't have enough free space in /var/cache/apt/archives/.
In this situation, make sure you free up space beforehand. You can:
Remove packages that have been previously downloaded for installation (at
/var/cache/apt/archives). Cleaning up the package
cache by running apt-get clean will remove all previously
downloaded package files.
Remove forgotten packages. If you have popularity-contest installed, you can use
popcon-largest-unused to list the packages you do not use
that occupy the most space. You can also use deborphan or
debfoster to find obsolete packages (see Section 4.9, “Obsolete packages” ). Alternatively you can start
aptitude in “visual mode” and find obsolete
packages under “Obsolete and Locally Created Packages”.
Remove packages that take up too much space and are not currently needed
(you can always reinstall them after the upgrade). You can list the
packages that take up the most disk space with dpigs
(available in the debian-goodies
package) or with wajig (running wajig
size).
You can list packages that take up most of the disk space with aptitude. Start aptitude in
“visual mode”, select
→ , press l and enter
~i, press S and enter
~installsize, then it will give you nice list to work
with.
Remove translations and localization files from the system if they are not
needed. You can install the localepurge package and configure it so that
only a few selected locales are kept in the system. This will reduce the
disk space consumed at /usr/share/locale.
Temporarily move to another system, or permanently remove, system logs
residing under /var/log/.
Use a temporary /var/cache/apt/archives: You can use a
temporary cache directory from another filesystem (USB
storage device, temporary hard disk, filesystem already in use, ...)
![]() | Note |
|---|---|
Do not use an NFS mount as the network connection could be interrupted during the upgrade. |
For example, if you have a USB drive mounted on
/media/usbkey:
remove the packages that have been previously downloaded for installation:
# apt-get clean
copy the directory /var/cache/apt/archives to the
USB drive:
# cp -ax /var/cache/apt/archives /media/usbkey/
mount the temporary cache directory on the current one:
# mount --bind /media/usbkey/archives /var/cache/apt/archives
after the upgrade, restore the original
/var/cache/apt/archives directory:
# umount /media/usbkey/archives
remove the remaining /media/usbkey/archives.
You can create the temporary cache directory on whatever filesystem is mounted on your system.
Do a minimal upgrade of the system (see Section 4.4.4, “Minimal system upgrade”) or partial upgrades of the system followed by a full upgrade. This will make it possible to upgrade the system partially, and allow you to clean the package cache before the full upgrade.
Note that in order to safely remove packages, it is advisable to switch your
sources.list back to lenny as described in
Afsnit A.2, “Kontroller din kildeliste”.
In some cases, doing the full upgrade (as described below) directly might remove large numbers of packages that you will want to keep. We therefore recommend a two-part upgrade process, first a minimal upgrade to overcome these conflicts, then a full upgrade as described in Section 4.4.6, “Upgrading the system”.
To do this first, run:
# apt-get upgrade
This has the effect of upgrading those packages which can be upgraded without requiring any other packages to be removed or installed.
The minimal system upgrade can also be useful when the system is tight on space and a full upgrade cannot be run due to space constrains.
The udev version in squeeze
requires a kernel of version 2.6.26 or newer with the
CONFIG_SYSFS_DEPRECATED option disabled and the
CONFIG_INOTIFY_USER and
CONFIG_SIGNALFD options enabled. Because the standard
Debian kernels in lenny (version 2.6.26) have
CONFIG_SYSFS_DEPRECATED enabled, and the udev version in lenny will not
provide all the functionality expected by the latest kernels, special care
must be taken when upgrading to avoid putting your system in an unbootable
state.
Booting the 2.6.26 kernel from lenny with the udev from squeeze may result in a failure
to correctly assign names to network devices, and will also fail to apply
certain additional permissions to block devices (such as access by the
disk group). The software itself will appear to be
working, but some rules (for example, network-based rules) will not be
loaded properly. It is therefore strongly recommended that you upgrade the
kernel on its own at this point, to ensure a compatible kernel is available
before upgrading udev.
To proceed with this kernel upgrade, run:
# apt-get install linux-image-2.6-flavor
See Section 4.6.1, “Installing the kernel metapackage” for help in determining which flavor of kernel package you should install.
The move of some firmware to separate packages in the non-free archive (see Afsnit 2.1.2, “Firmware er flyttet til sektionen non-free”) means that it may be necessary to install additional firmware packages after upgrading to the new kernel to support some hardware. Some hardware that was operating correctly before the upgrade might fail to work once the kernel is upgraded. Look out for warning messages from the kernel install or initramfs generation scripts, and make sure the necessary firmware packages are installed.
Users of the grub bootloader should
make sure that update-grub is run as part of the kernel
upgrade, or run it manually.
Immediately after upgrading the kernel, you should also install the new
udev to minimize the risk of other
incompatibilities caused by using the old udev with a new kernel [8]. You can do this by running:
# apt-get install udev
You should reboot the system [9] once you have upgraded both the kernel and udev.
Once you have taken the previous steps, you are now ready to continue with the main part of the upgrade. Execute:
# apt-get dist-upgrade
![]() | Note |
|---|---|
The upgrade process for other releases recommended the use of aptitude for the upgrade. This tool is not recommended for upgrades from lenny to squeeze. |
This will perform a complete upgrade of the system, i.e. install the newest available versions of all packages, and resolve all possible dependency changes between packages in different releases. If necessary, it will install some new packages (usually new library versions, or renamed packages), and remove any conflicting obsoleted packages.
When upgrading from a set of CD-ROMs (or DVDs), you will be asked to insert specific CDs at several points during the upgrade. You might have to insert the same CD multiple times; this is due to inter-related packages that have been spread out over the CDs.
New versions of currently installed packages that cannot be upgraded without
changing the install status of another package will be left at their current
version (displayed as “held back”). This can be resolved by
either using aptitude to choose these packages for
installation or by trying apt-get -f install
.
package
The following sections describe known issues that might appear during an upgrade to squeeze.
Support for cryptoloop has been dropped from the Linux kernel packages included in Debian 6.0. Existing installations using cryptoloop need to be transitioned to dm-crypt before the upgrade.
The upgrade process to squeeze might ask for removal of packages in the system. The precise list of packages will vary depending on the set of packages that you have installed. These release notes give general advice on these removals, but if in doubt, it is recommended that you examine the package removals proposed by each method before proceeding.
Some common packages that are expected to be removed include: autofs (replaced by autofs5), dhcp3 (replaced by isc-dhcp), madwifi-source and python2.4 (replaced by python2.6). For more information about packages
obsoleted in squeeze, see Section 4.9, “Obsolete packages”.
If an operation using aptitude, apt-get, or dpkg fails with the error
E: Dynamic MMap ran out of room
the default cache space is insufficient. You can solve this by either
removing or commenting lines you don't need in
/etc/apt/sources.list or increasing the cache size.
The cache size can be increased by setting
APT::Cache-Limit in
/etc/apt/apt.conf. The following command will set it
to a value that should be sufficient for the upgrade:
# echo 'APT::Cache-Limit "12500000";' >> /etc/apt/apt.conf
This assumes that you do not yet have this variable set in that file.
Sometimes it's necessary to enable the
APT::Force-LoopBreak option in APT to be able to
temporarily remove an essential package due to a Conflicts/Pre-Depends
loop. apt-get will alert you of this and abort the
upgrade. You can work around this by specifying the option -o
APT::Force-LoopBreak=1 on the apt-get command
line.
It is possible that a system's dependency structure can be so corrupt as to require manual intervention. Usually this means using apt-get or
# dpkg --remove package_name
to eliminate some of the offending packages, or
# apt-get -f install # dpkg --configure --pending
In extreme cases you might have to force re-installation with a command like
# dpkg --install /path/to/package_name.deb
File conflicts should not occur if you upgrade from a “pure” lenny system, but can occur if you have unofficial backports installed. A file conflict will result in an error like:
Unpacking<package-foo>(from<package-foo-file>) ... dpkg: error processing<package-foo>(--install): trying to overwrite `<some-file-name>', which is also in package<package-bar>dpkg-deb: subprocess paste killed by signal (Broken pipe) Errors were encountered while processing:<package-foo>
You can try to solve a file conflict by forcibly removing the package mentioned on the last line of the error message:
# dpkg -r --force-depends package_name
After fixing things up, you should be able to resume the upgrade by repeating the previously described apt-get commands.
During the upgrade, you will be asked questions regarding the configuration
or re-configuration of several packages. When you are asked if any file in
the /etc/init.d directory, or the
/etc/manpath.config file should be replaced by the
package maintainer's version, it's usually necessary to answer `yes' to
ensure system consistency. You can always revert to the old versions, since
they will be saved with a .dpkg-old extension.
If you're not sure what to do, write down the name of the package or file and sort things out at a later time. You can search in the typescript file to review the information that was on the screen during the upgrade.
If you are running the upgrade using the system's local console you might find that at some points during the upgrade the console is shifted over to a different view and you lose visibility of the upgrade process. For example, this will happen in desktop systems when gdm is restarted.
To recover the console where the upgrade was running you will have to use Ctrl+Alt+F1 to switch back to the virtual terminal 1 if in the graphical startup screen or use Alt+F1 if in the local text-mode console. Replace F1 with the function key with the same number of the virtual terminal the upgrade was running in. You can also use Alt+Left Arrow or Alt+Right Arrow to switch between the different text-mode terminals.
In most cases, packages should upgrade smoothly between lenny and squeeze. There are a small number of cases where some intervention may be required, either before or during the upgrade; these are detailed below on a per-package basis.
Evolution (the GNOME Desktop mail client) has been updated from version
2.22 to 2.30. This changes the storage
format used by the package for local data and there is a possibility of data
loss if the upgrade is performed whilst evolution is running. Exiting the application
itself may not be sufficient, as various related components will continue to
run in the background. To avoid any potential issues, it is recommended that
you completely exit your desktop environment before beginning the upgrade to
squeeze.
As part of the upgrade process, evolution will check whether any related
processes are running and will recommend that they be closed. A secondary
check for processes will then be performed; if necessary, a choice will be
offered between allowing the remaining processes to be killed or aborting
the upgrade in order to resolve the situation by hand.
This section explains how to upgrade your kernel and identifies potential
issues related to this upgrade. You can either install one of the
linux-image-* packages provided by
Debian, or compile a customized kernel from source.
Note that a lot of information in this section is based on the assumption
that you will be using one of the modular Debian kernels, together with
initramfs-tools and udev. If you choose to use a custom kernel that
does not require an initrd or if you use a different initrd generator, some
of the information may not be relevant for you.
When you dist-upgrade from lenny to squeeze, it is strongly recommended that you install a new linux-image-2.6-* metapackage. This package may be installed automatically by the dist-upgrade process. You can verify this by running:
# dpkg -l "linux-image*" | grep ^ii
If you do not see any output, then you will need to install a new linux-image package by hand. To see a list of available linux-image-2.6 metapackages, run:
# apt-cache search linux-image-2.6- | grep -v transition
If you are unsure about which package to select, run uname
-r and look for a package with a similar name. For example, if
you see '2.6.26-2-686', it is recommended that you
install linux-image-2.6-686. You
may also use apt-cache to see a long description of each
package in order to help choose the best one available. For example:
# apt-cache show linux-image-2.6-686
You should then use apt-get install to install it. Once
this new kernel is installed you should reboot at the next available
opportunity to get the benefits provided by the new kernel version.
For the more adventurous there is an easy way to compile your own custom
kernel on Debian GNU/Linux. Install the kernel-package tool and read the documentation
in /usr/share/doc/kernel-package. Alternatively, you
can also use the kernel sources, provided in the linux-source-2.6 package. You can make use of
the deb-pkg target available in the sources' makefile for
building a binary package. There are some differences in these two
approaches, please consult the respective package's documentation.
If possible, it is to your advantage to upgrade the kernel package
separately from the main dist-upgrade to reduce the
chances of a temporarily non-bootable system. Note that this should only be
done after the minimal upgrade process described in Section 4.4.4, “Minimal system upgrade”.
In lenny and later, a new kernel mechanism for hardware discovery may change the order in which devices are discovered on your system on each boot, affecting the device names assigned to them. For example, if you have two network adapters that are associated with two different drivers, the devices eth0 and eth1 refer to may be swapped.
For network devices, this reordering is normally avoided by the definitions
at /etc/udev/rules.d/70-persistent-net.rules for
udev. Since these rules were
already in place in lenny, no additional action should be
required when upgrading to squeeze to get the benefit of stable
network device names. Please note, however, that this udev mechanism means
that a given network device name is tied to a particular piece of hardware;
if you, for instance, exchange ethernet adapters in a deployed squeeze
system, the new adapter will get a new interface name instead of using the
existing one. To reuse an existing device name for new hardware, you will
need to delete the associated entry from
/etc/udev/rules.d/70-persistent-net.rules.
For storage devices, you may be able to avoid this reordering by using
initramfs-tools and configuring it
to load storage device driver modules in the same order they are currently
loaded. However, in light of other changes to the storage subsystem of the
Linux kernel as described at Afsnit 5.1.1, “Migrering af disk-drivere fra IDE- til PATA-delsystemet”, this is
usually not worth the effort and it is recommended instead to use device
names that are guaranteed to be stable over time, such as the UUID aliases
[10] in the /dev/disk/by-uuid/ directory or LVM
device names in /dev/mapper/.
If an initrd created with initramfs-tools is used to boot the system, in
some cases the creation of device files by udev can happen too late for the boot scripts to
act on.
The usual symptoms are that the boot will fail because the root file system cannot be mounted and you are dropped into a debug shell:
Gave up waiting for root device. Common problems:
- Boot args (cat /proc/cmdline)
- Check rootdelay= (did the system wait long enough?)
- Check root= (did the system wait for the right device?)
- Missing modules (cat /proc/modules; ls /dev)
ALERT! /dev/something does not exist. Dropping to a shell!
(initramfs)
But if you check afterwards, all devices that are needed are present in
/dev. This has been observed in cases where the root
file system is on a USB disk or on
RAID, especially if
LILO is
used.
A workaround for this issue is to use the boot parameter
rootdelay=. The value for
the timeout (in seconds) may need to be adjusted.
9
After the upgrade there are several things you can do to prepare for the next release.
Remove obsolete and unused packages as described in Section 4.9, “Obsolete packages”. You should review which configuration files they use and consider purging the packages to remove their configuration files.
During the upgrade, you will normally have been offered the option to "chainload" GRUB 2: that is, to keep GRUB Legacy as the primary boot loader but to add an option to it to load GRUB 2 and then start your Debian GNU/Linux system from that. This allows you to verify that GRUB 2 works on your system before committing to use it permanently.
Once you have confirmed that GRUB 2 works, you should switch to using it properly: the chainloading setup is only intended to be used temporarily. You can do this by running upgrade-from-grub-legacy.
The GRUB Manual has more information on the changes between GRUB Legacy and GRUB 2, some of which may require changes to complex configurations. If you have not modified your boot loader configuration, you should not need to do anything further.
With the next release of Debian GNU/Linux 7.0 (codenamed wheezy) some features will be deprecated. Users will need to migrate to other alternatives to prevent trouble when updating to 7.0.
This includes the following features:
OpenVZ and Linux-Vserver: Debian GNU/Linux 6.0 will be the last release to include Linux kernel virtualization featuresets outside of mainline. This means that the OpenVZ and Linux-Vserver featuresets should be considered deprecated, and users should migrate to linux-2.6 upstream merged virtualization solutions like KVM, Linux Containers or Xen.
The gdm package (GNOME Display
Manager version 2.20) will be obsoleted by gdm3, a rewritten version. See Afsnit 5.6, “Ændringer i og understøttelse af GNOME-skrivebordet” for more information.
Introducing several thousand new packages, squeeze also retires and omits more than four thousand old packages that were in lenny. It provides no upgrade path for these obsolete packages. While nothing prevents you from continuing to use an obsolete package where desired, the Debian project will usually discontinue security support for it a year after squeeze's release[11], and will not normally provide other support in the meantime. Replacing them with available alternatives, if any, is recommended.
There are many reasons why packages might have been removed from the distribution: they are no longer maintained upstream; there is no longer a Debian Developer interested in maintaining the packages; the functionality they provide has been superseded by different software (or a new version); or they are no longer considered suitable for squeeze due to bugs in them. In the latter case, packages might still be present in the “unstable” distribution.
Detecting which packages in an updated system are “obsolete” is easy since the package management front-ends will mark them as such. If you are using aptitude, you will see a listing of these packages in the “Obsolete and Locally Created Packages” entry. dselect provides a similar section but the listing it presents might differ.
Also, if you have used aptitude or
apt-get to manually install packages in lenny
it will have kept track of those packages you manually installed and will be
able to mark as obsolete those packages pulled in by dependencies alone
which are no longer needed if a package has been removed.
aptitude and apt,
unlike deborphan, will not mark for removal packages that
you manually installed, as opposed to those that were automatically
installed through dependencies. To remove automatically installed packages
that are no longer used, run:
# apt-get autoremove
There are additional tools you can use to find obsolete packages such as
deborphan, debfoster or
cruft. deborphan is highly
recommended, although it will (in default mode) only report obsolete
libraries: packages in the “libs” or
“oldlibs” sections that are not used by any
other packages. Do not blindly remove the packages these tools present,
especially if you are using aggressive non-default options that are prone to
produce false positives. It is highly recommended that you manually review
the packages suggested for removal (i.e. their contents, size and
description) before you remove them.
The Debian Bug Tracking System often provides additional information on why the package was removed. You should review both the archived bug reports for the package itself and the archived bug reports for the ftp.debian.org pseudo-package.
The list of obsolete packages includes:
The plone content management
suite. This has been done on request by the developers to use the Unified
Installer for Linux, which they consider their only supported deployment
platform. The recommended tool for installing Plone on a Debian GNU/Linux system is
the Unified Installer, available for download from http://plone.org/
nessus, the vulnerability scanning
server and its associated libraries and other software. It has been
deprecated in favor of the software provided by OpenVAS which includes
openvas-server and openvas-client. As there is no automatic upgrade
path you will have to install OpenVAS and manually move over your Nessus
service configuration (users, certificates, etc.) to OpenVAS.
Java 5 software including the packages sun-java5-jre and sun-java5-bin, successor is Java 6: sun-java6-jre and associated packages.
apt-proxy is no longer provided,
alternatives to this tool include apt-cacher-ng, apt-cacher and approx. Although no automatic upgrade path
exists, user of apt-proxy can switch
to these alternatives by manually installing any of these packages.
Some of Xorg's video drivers are no longer available in squeeze and
are obsolete. This includes xserver-xorg-video-cyrix, xserver-xorg-video-i810, xserver-xorg-video-imstt, xserver-xorg-video-nsc, xserver-xorg-video-sunbw2, and xserver-xorg-video-vga. They might be removed
through the upgrade. Users should install xserver-xorg-video-all instead.
The utility used in lenny to display a splash image at boot time,
usplash, is no longer available. It
has been replaced by plymouth.
Some packages from lenny have been split into several packages in squeeze, often to improve system maintainability. To ease the upgrade path in such cases, squeeze often provides “dummy” packages: empty packages that have the same name as the old package in lenny with dependencies that cause the new packages to be installed. These “dummy” packages are considered obsolete packages after the upgrade and can be safely removed.
Most (but not all) dummy packages' descriptions indicate their purpose.
Package descriptions for dummy packages are not uniform, however, so you
might also find deborphan with the
--guess- options (e.g.
*--guess-dummy) useful to detect them in your system.
Note that some dummy packages are not intended to be removed after an
upgrade but are, instead, used to keep track of the current available
version of a program over time.
[4] If the debconf priority is set to a very high level you might prevent configuration prompts, but services that rely on default answers that are not applicable to your system will fail to start.
[5] For example: DNS or DHCP services, specially when there is no redundancy or failover. In the DHCP case end-users might be disconnected from the network if the lease time is lower than the time it takes for the upgrade process to complete.
[6] This feature can be disabled by adding the parameter
panic=0 to your boot parameters.
[7] Debian's package management system normally does not allow a package to remove or replace a file owned by another package unless it has been defined to replace that package.
[8] There are also known incompatibilities between the old kernel and the new
udev. If you find issues after the
reboot with the new kernel you will have to downgrade the udev in order to use the old one.
[9] If you are logging the upgrade as described in Section 4.4, “Upgrading packages”, please, use script again to log the next steps of the upgrade after the reboot in order to log the result of the actions described in Section 4.4.6, “Upgrading the system”.
[10] Some devices, such as those used by crypt, RAID or LVM have stable non-UUID identifiers. In these cases you should use the name of the devices, which are already unambiguous and stable.
[11] Or for as long as there is not another release in that time frame. Typically only two stable releases are supported at any given time.