3 Feb 2012

Slackware Current Using Kernel 3.2.2

Submitted by walecha

Slackware Linux LogoStill remember my poll about what kernel version should be used by the next slackware-current? So for you who have choosen the linux kernel 3.2.2, now you can have a nice drink cool. Yes, slackware-current now shipped with kernel 3.2.2 as it's default kernel. But not only that. You'll be surprised if you read the full ChangeLog.txt for complete update information. Trust me on that. Or, you can read Willy's blog for the update summary. So now, I'm going to write about how to upgrade my slackware-current to the latest release.

Kernel 3.2.2 Upgrade

Just for noted, actually I'm already using linux kernel 3.2.2 which I have compiled by my self. Sometimes I'm using my own kernel configuration just for testing it out. But now, after slackware-current is officially using kernel 3.2.2 there is no doubt anymore about removing kernel 2.6 series from my slackware. After synced my slackware-current local repository with rsync mirror at my office, this morning I have upgrading my installation to the latest packages available. First thing to do is upgrading the kernel. In my experiences upgrading the kernel are always be the first thing to do. Because sometimes some libraries like libudev depends on the latest kernel features. If you read the FreeBSD upgrading manual, you should see that after building whole FreeBSD binaries, you must upgrading the kernel first then reboot to use the new kernel. After that you could install everything. This procedure has almost zero error rates.

In slackware you SHOULD NOT use upgradepkg to upgrade your kernel binaries, ALWAYS use installpkg. Remember to run this procedure in INIT 1:

# telinit 1

After login, you can start the upgrade procedures:

# cd /PATH/slackware/a
# installpkg kernel-generic-smp-3.2.2_smp-i686-1.txz
# installpkg kernel-modules-smp-3.2.2_smp-i686-1.txz

After that you MUST generate a new initrd based on the new kernel because the generic kernel doesn't contain a filesystem driver:

# cd /boot
# mkinitrd -c -k 3.2.2-smp -m ext4 -f ext4 -r /dev/sda1 -o initrd-3.2.2-smp -L

For your information, I'm using ext4 filesystem and my root partition is /dev/sda1. I also using linux LVM for other partition, so I have to pass the -L option to tell mkinitrd to generate some LVM init set in its tree. Then -o option is to generate compressed initrd image using specific name so the generated initrd will not overwrite the existing initrd. Then edit your lilo.conf to use the new kernel:

# Linux bootable partition config begins
image = /boot/vmlinuz-generic-smp-3.2.2-smp
initrd = /boot/initrd-3.2.2-smp
append = " resume=/dev/vg01/SWAP"
  root = /dev/sda1
  label = SLACKWARE
  read-only  # Partitions should be mounted read-only for checking
# Linux bootable partition config ends

Then reinstall lilo to the MBR:

# lilo -v

Before rebooting the system, it's always a good idea to take a look the /etc/inittab and setting it up to init 3. Because we don't want any failure during our upgrade process that could came up if start the system using init 4 (GUI mode).

# Default runlevel. (Do not set to 0 or 6)
id:3:initdefault:

Then

# reboot

Upon boot, select the option that use the new kernel on lilo screen and press enter.

Upgrading Slackware Packages

After you login to slackware, tell init to go to init 1 like before. I always upgrading my slackware in init 1, never 3 or even 4. These procedures was extracted from the original slackware UPGRADE.TXT with some modification. After that, upgrade your slackware package tools (pkgtools) and related programs:

# cd /PATH/slackware
# upgradepkg a/pkgtools-*.tgz
# upgradepkg a/tar-*.tgz
# upgradepkg a/xz-*.tgz
# upgradepkg a/findutils-*.txz

And then upgrade your glibc-solibs package as it contain glibc libraries which will be used by the other new program or libraries:

# upgradepkg a/glibc-solibs-*.t?z

After that you can upgrade all the slackware packages alltogether, but skip the kernel binaries packages in A directory. You can move the kernel packages in A directory somewhere before doing upgradepkg and move it back after upgrade finished.

# upgradepkg --install-new */*.t?z

Then check for some slackware's default configuration in /etc, usually using .new suffix. Don't forget to remove the obsolete package before reboot to prevent conflict with the new programs or libraries. At this stage you can remove the old kernel which will never be booted after you can use the new kernel without a failure.

Or you can using slackpkg tool to upgrade and checks the default configuration changes. Please see my article about slackpkg here.

As always, do the upgrade carefully. Always check your doing before regretting it.

By the way, KDE 4.8.0 seems working without any failure using the new packages. I love this!

Happy slacky...