I'll explain here how I upgrade my kernel, using the official upgrade packages for Slackware 14.2. I used to upgrade my monolithic kernel using the ones provided by kernel.org, but some things always broke in one way or another, so I've been using only the official Slackware kernel upgrades now.
Before I begin, a few important things to consider:
I'll be focusing on an initrd kernel here. If you want a monolithic one, don't make an initrd, create the symbolic links to the proper *huge* kernel in /boot, edit /etc/lilo.conf properly and don't forget to run lilo.
Do not upgrade your kernel if you're unable to reboot as soon as possible, unless you're running a monolithic (non initrd) kernel. The reason for this is that once you upgrade, the old kernel modules are gone and a initrd kernel (loaded in memory) might request them and they won't be found, because you upgraded to a newer version. That breaks things, so unless you're using a monolithic kernel, reboot the new kernel once the upgrade procedures are done.
It's recommended that you use an initrd instead of a monolithic kernel. You can read more here: https://www.distributednetworks.com/configure-key-linux-components/module2/modular-monolithic-kernels.php
Make sure you haven't blacklisted the kernel packages in /etc/slackpkg/blacklist. If you have, slackpkg will not upgrade the kernel packages at all.
# /usr/share/mkinitrd/mkinitrd_command_generator.sh –longhelp, because it has useful information.
Also read /usr/doc/mkinitrd-1.4.10/README.initrd
I'll be using lilo, not grub.
Let's begin:
1. Generating a initrd for your system:
In a (virtual) terminal, go to /usr/share/mkinitrd and as root: # mkinitrd_command_generator.sh
That command will show you a proper mkinitrd for your system, like mine: mkinitrd -c -k 4.4.118 -f ext4 -r /dev/sdb2 -m xhci-pci:ohci-pci:ehci-pci:xhci-hcd:uhci-hcd:ehci-hcd:hid:usbhid:i2c-hid:hid_generic:hid-cherry:hid-logitech:hid-logitech-dj:hid-logitech-hidpp:hid-lenovo:hid-microsoft:hid_multitouch:jbd2:mbcache:ext4 -u -o /boot/initrd.gz
In order to use it, just run as root: # mkinitrd -c -k 4.4.118 -f ext4 -r /dev/sdb2 -m xhci-pci:ohci-pci:ehci-pci:xhci-hcd:uhci-hcd:ehci-hcd:hid:usbhid:i2c-hid:hid_generic:hid-cherry:hid-logitech:hid-logitech-dj:hid-logitech-hidpp:hid-lenovo:hid-microsoft:hid_multitouch:jbd2:mbcache:ext4 -u -o /boot/initrd.gz
You don't have to copy/paste the entire thing though. Check "# mkinitrd_command_generator.sh –longhelp" that teaches how to execute the output.
By doing so, you'll have a fresh /boot/initrd.gz
2. Updating the symbolic links:
Go to /boot and delete the old symbolic links, and then generate the proper new ones.
# rm System.map config vmlinuz
# ln -s System.map-generic-4.4.118 System.map
# ln -s config-generic-4.4.118 config
# ln -s vmlinuz-generic-4.4.118 vmlinuz
3. Edit /etc/lilo.conf properly:
Go to /etc and edit lilo.conf so it points to the correct initrd and kernel. Mine looks like this:
# Linux bootable partition config begins
image = /boot/vmlinuz
initrd = /boot/initrd.gz
root = /dev/sdb2
label = Linux
read-only
# Linux bootable partition config ends
So you can see /boot/vmlinuz and /boot/initrd are both there.
Feel free to just add the above as an extra boot section so if something goes wrong, just reboot and select another one that works. If you forget to run lilo after all this you'll be unable to boot the initrd you just created.
Save /etc/lilo.conf and as root: # lilo -v
4. Reboot your system:
# shutdown -r now
Post last edited at