Kernel/Removal

From Gentoo Wiki
< Kernel
Jump to:navigation Jump to:search
This page contains changes which are not marked for translation.
Other languages:
Deutsch • ‎English • ‎Türkçe • ‎español • ‎français • ‎italiano • ‎português do Brasil • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어

This article describes the removal of old kernels.

Removing kernel sources

After a new kernel is installed and if it works satisfactorily, the old kernel can be removed. To remove the old kernel sources, emerge's --depclean option (short form -c) can be used to remove all old or unused versions of a slotted package, e.g. for sys-kernel/gentoo-sources.

root #emerge --ask --depclean gentoo-sources

Be sure to verify that it is not removing the sources for the currently running kernel (See kernel upgrade article on how to upgrade.)

Protecting kernel sources

If newer kernel sources has been merged and you run --depclean before switching to the newer sources, the current sources will be removed. But if you want to stay with the current sources, this removal is not wanted, because you may need the sources e.g. for updating external kernel modules. It's therefore good practice to add the specific kernel version to your world file to protect it from --depclean operations.

root #emerge --ask --noreplace gentoo-sources:3.3.8

Note the slot notation, using a colon instead of a dash. Every kernel version is its own slot.

Removing kernel leftovers

Using eclean-kernel

app-admin/eclean-kernel is a simple tool for old kernel cleanup/removal. It removes both built kernel files and build directories if they're no longer reference by any preserved kernel.

See eclean-kernel --help post-installation for usage instructions:

user $eclean-kernel --help
usage: eclean-kernel [-h] [-V] [-A] [-l] [-p] [-b BOOTLOADER] [-L LAYOUT] [-r ROOT] [-a] [-d] [-n NUM] [-s SORT_ORDER]
                     [-D] [-M] [--no-bootloader-update] [--no-kernel-install] [-x EXCLUDE]

Remove old kernel versions, keeping either N newest kernels (with -n) or only those which are referenced by a bootloader
(with -a).

optional arguments:
  -h, --help            show this help message and exit
  -V, --version         show program's version number and exit

action control:
  -A, --ask             Ask before removing each kernel
  -l, --list-kernels    List kernel files and exit
  -p, --pretend         Print the list of kernels to be removed and exit

system configuration:
  -b BOOTLOADER, --bootloader BOOTLOADER
                        Bootloader used (auto, lilo, grub2, grub, yaboot, symlinks)
  -L LAYOUT, --layout LAYOUT
                        Layout used (auto, blspec, std)
  -r ROOT, --root ROOT  Alternate filesystem root to use

kernel selection:
  -a, --all             Remove all kernels unless used by bootloader
  -d, --destructive     Destructive mode: remove kernels even when referenced by bootloader
  -n NUM, --num NUM     Leave only newest NUM kernels (see also: --sort-order)
  -s SORT_ORDER, --sort-order SORT_ORDER
                        Kernel sort order (mtime, version); default: version

misc options:
  -D, --debug           Enable debugging output
  -M, --no-mount        Disable (re-)mounting /boot if necessary
  --no-bootloader-update
                        Do not update bootloader configuration after removing kernels (if supported by the bootloader
  --no-kernel-install   Do not call kernel-install while removing kernels (if installed)
  -x EXCLUDE, --exclude EXCLUDE
                        Exclude kernel parts from being removed (comma-separated, supported parts: vmlinuz, systemmap,
                        config, initramfs, modules, build, misc, emptydir)

For example, to keep three newest kernels around:

root #eclean-kernel -n 3

Manual removal

Portage however only removes the files it installed - the files generated during the kernel build and installation remain. They can be safely removed.

  • When a kernel is built in the source directory, files generated during the build process remain, and are not removed by Portage:
root #rm -r /usr/src/linux-3.X.Y
  • During kernel setup, the kernel modules are copied to a sub directory of /lib/modules/:
root #rm -r /lib/modules/3.X.Y
  • The old files in /boot can also be removed:
root #rm /boot/vmlinuz-3.X.Y
root #rm /boot/System.map-3.X.Y
root #rm /boot/config-3.X.Y
root #rm /boot/initramfs-X.Y.Z
  • Lastly, remove all leftover entries from your bootloader's config file.