How to install a different kernel

From Salix OS
Jump to: navigation, search

If you have hardware that is not supported by the kernel that ships with Salix, you can compile your own. In most cases though, it is sufficient to install another prebuilt kernel. This guide assumes you are installing the kernel from Slackware current, which will usually be a good choice and more recent that the Salix default. In some cases, if there is a regression, meaning hardware that used to be supported doesn't work any more, you might actually need to install an older kernel, but in most cases the solution will be a more recent one. This is probably the first thing to try before embarking on building the kernel yourself, which can be quite time-consuming, though it is not really that difficult.

It is very important to reinstall the bootloader before you reboot, unless your bootloader is controlled by a Linux installation in another partition. Apart from that, the process is quite straightforward.

Contents

Downloading needed packages

Run:

ls /var/log/packages/kernel*

to see which kernel packages you have installed; these are the ones that need upgrading. For instance, if you don't have the kernel-source package installed, you don't need to download the one for your new kernel either. On an x86_64 system, the output might look something like this:

kernel-firmware-20131008git-noarch-1
kernel-headers-3.10.17-x86-3
kernel-huge-3.10.17-x86_64-3
kernel-modules-3.10.17-x86_64-3

NOTE: The kernel-headers package should not be upgraded if you're staying within the same Salix release. Only upgrade it if at the same time you are upgrading your entire system to a newer release.

Download the corresponding Slackware current packages for your architecture from any Slackware current mirror, such as http://slackware.oregonstate.edu/ In the case of that mirror, the packages for a 32-bit system are all in this directory: http://slackware.oregonstate.edu/slackware-current/slackware/a/ If you have a 64-bit system, change slackware to slackware64: http://slackware.oregonstate.edu/slackware64-current/slackware64/a/ Download the packages with a browser, or move to the directory where you will put them and fetch with wget:

wget -c http://slackware.oregonstate.edu/slackware64-current/slackware64/a/kernel-huge-3.10.30-x86_64-1.txz  

... etc. In each case, the file you want is the one whose name ends in .txz.

Installing the new kernel packages

Move to the directory where you downloaded the packages and install each one using spkg:

sudo spkg -u kernel-huge-3.10.30-x86_64-1.txz 

... etc.

Final steps before rebooting - legacy

If you have switched to the kernel-generic package instead of the default kernel-huge package, don't forget to recreate the initrd.gz file which will be needed for booting your upgraded system. If you're still using the default kernel-huge package, an initrd is not needed anyway and you needn't be concerned about it.

After upgrading the packages, don't forget to edit your /etc/lilo.conf file accordingly and run:

 sudo lilo -v

to inform the bootloader about the kernel upgrade; or use the tool of your choice to update and reinstall the bootloader.

Final steps - UEFI boot

Run eliloconfig rather than lilo. This will copy the new kernel and if applicable the initrd.gz to the correct subdirectory in /boot/efi

sudo eliloconfig

First it will ask if you wish to "Install ELILO on the EFI System Partition". This will ensure you boot the correct, new kernel.

Then it asks if you want to "install a boot menu entry". If you just want to boot into Salix, it is ok to choose yes for this, but if you are using rEFInd or grub to multi-boot, select no; the existing configuration should continue to work, giving you the same options as before. For grub, it may be necessary to update grub to register the new kernel. rEFInd just needs it to be in the directory where eliloconfig put it.

You can always use guefi to recover lost boot options, should you find they have disappeared.