home || more tech notes
Last update August 12th, 2007


Upgrade Slackware to 11.0 on the IBM Z60m

Well it needed to be done, after more than a year, the latest Slackware was released and I wanted to upgrade. I followed everything in the UPGRADE.TXT, which left me a perfectly running system, **BUT** without sound working reliably under KDE (3.5.4). It took me some time to find the culprit, it was some config files in KDE, kmixrc and kmixctrlrc. After removing them from my profile, arts was happy again. Thanks to this link.

Installing Slackware 10.2 on the IBM Z60m

Thanks to the efforts of the Linux community the IBM Z60m really works nice with Linux! This page is dedicated to my efforts at installing Slackware on it. The version of Slackware I used was 10.2.
I used the standard bootable CD-ROM (d1). When presented with the first Linux prompt, during the boot process enter:
boot=sata.i
This will load a kernel with SATA support. This is needed as the Z60 uses a SATA disk. The confusing bit is, that with the used Slackware kernel, the disk first presents itself as /dev/hda instead of /dev/sda. This is due to some sort of compatibility mode. It also means the installation is quite slow as DMA is not enabled.
Install Slackware to your liking.
Below a few points that took some extra care to get it to work.

Kernel

I downloaded linux-2.6.14.7 and compiled using the following kernel config. After the kernel is ready, be carefull and not forget to update your fstab! Your references to /dev/hda need to be replaced by /dev/sda. Now reboot. After you are up and running again, replace the references to /dev/hda by /dev/sda in /etc/lilo.conf.

Wireless

Can be identified by typing lspci, look for:
14:02.0 Network controller: Intel Corporation PRO/Wireless 2915ABG MiniPCI Adapter (rev 05)
The kernel config makes the driver as a module, check with lsmod and if not available modprobe ipw2200.
The last thing to do is to download the firmware for the driver and place it in /lib/firmware so hotplug can find it.
Using Slackware 10.2 you need a newer version of the wireless tools. Download and change the Makefile to make the tools without dynamic library support as is custom for these tools with Slackware. You can find the tools here

Xorg

Make a new configuration file for X using:
X -configure
This will generate a new config file /root/xorg.conf.new. Copy the file to the /etc/X11 directory.
The only thing I changed was to add the widescreen resolution to the file. At the bottom of the file, look for:
SubSection "Display"
	Viewport   0 0
	Depth     24
	Modes   "1280x800"
EndSubSection
I added the Modes "1280x800" line. Or you can download my xorg.conf file here.

True Type Fonts

Download the fonts from sourceforge Search for True Type fonts. I found them here. Unpack the tar file and then use cabextract to get the fonts out. Copy the *ttf and *TTF to /usr/X11/lib/fonts/TTF. Run fc-cache. To make these work for KDE use (as the root-user):
cd /usr/X11/lib/fonts
mkfontscale TTF
mkfontdir TTF
mkfontdir -e encodings

Using mouse scroll button

Add to your xorg.conf in the section InputDevice, Identifier Mouse
Option      "Protocol"     "ImPS/2"
Option      "ZAxisMapping" "4 5"
and disable Protocol "auto".

Bluetooth

Needed to get Bluetooth support is the following software: The bluetooth device is connected through USB. Make sure you have the kernel modules bluetooth and hci_usb loaded.
Be careful when using suspend, the USB layer does not work after unsuspend when it was loaded when suspending. First unload the kernel modules and reload them after resuming (also see the acpi_handler script below).
For starting and stopping the bluetooth service I wrote the following rc.bluetooth script.
#!/bin/sh

case "$1" in
        start)
                echo "start"
                echo enabled > /proc/acpi/ibm/bluetooth
                modprobe hci_usb
                pid=`pidof hcid`
                if [ $? -ne 0 ]; then
                        logger -t rc.bluetooth "LOW: starting hcid"
                        /usr/sbin/hcid
                fi
                pid=`pidof sdpd`
                if [ $? -ne 0 ]; then
                        logger -t rc.bluetooth "LOW: starting sdpd"
                        /usr/sbin/sdpd
                fi
        ;;
        stop)
                echo "stop"
                echo disabled > /proc/acpi/ibm/bluetooth
                sleep 1s
                pid=`pidof hcid`
                if [ $? -eq 0 ]; then
                        killall hcid
                fi
                pid=`pidof sdpd`
                if [ $? -eq 0 ]; then
                        killall sdpd
                fi
                modprobe -r hci_usb
        ;;
esac

Bluetooth && GPRS

TODO

ACPI

Basic ACPI was working, however I configured a few special things: All ACPI events are handled by the /etc/acpi/acpi_handler.sh script in Slackware. I extended the functionality by recognizing the lid switch and the Fn-F4 suspend buttons. Their respective key codes are: 00005001 and 00001004. Using:
echo "mem" > /sys/power/state
The machine suspends. Make sure that all relevant USB device modules are unloaded from the kernel first. When you are using text mode, some extras are needed to get the text mode correctly running after resume. First the console number should be saved before suspend (use fgconsole) and after resume first post the videocard using vbetool post. This will mess up the console a bit, so switch back and forth and plugin the USB device modules. I've implemented this in the following pre_sleep and post_sleep bash functions:
pre_sleep(){
	# first sync hard drive
	sync
	# save the clock
	/sbin/hwclock --systohc
	# stop bluetooth
	/etc/rc.d/rc.bluetooth stop
	# unplug USB kernel mods
	modprobe -r uhci_hcd
	modprobe -r ehci_hcd
	# save console
	CONSOLE=`fgconsole`
	chvt 12
	# and log
	logger -t acpi_handler "LOW: console $CONSOLE"
}
        
post_sleep() {
	#restore clock
	/sbin/hwclock --adjust
	/sbin/hwclock --hctosys
	# Post the video card
	vbetool post
	# switch console a few times
	chvt $CONSOLE
	chvt 12
	chvt $CONSOLE
	# plugin the USB devices
	modprobe uhci_hcd
	modprobe ehci_hcd
	# start bluetooth
	/etc/rc.d/rc.bluetooth start
}
You can find my complete acpi_handler.sh here. If you replace the existing /etc/acpi_handler.sh by this one you should be ok.

Last the modules I used to control power usage and the CPU governer. Just add the following lines to the /etc/rc.d/rc.modules file:

/sbin/modprobe battery
/sbin/modprobe ac
/sbin/modprobe fan
/sbin/modprobe thermal
/sbin/modprobe ibm_acpi
/sbin/modprobe cpufreq_conservative
/sbin/modprobe speedstep_centrino
/sbin/modprobe cpufreq_stats
I added the following to the /etc/rc.d/rc.local script to activate the frequency scaling governor:
# enable cpu frequency scaling to lower power consumption
echo "conservative" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Mediaplayer

As the screen of the z60m is widescreen, the mplayer needs to be told to use this aspect ratio. This can be done by adding the following entry to the ~/.mplayer/config file:
monitoraspect=16:9

ssh-agent

To make use of the ssh-agent to forward your key to systems that hold your public key from all terminals started under KDE is possible using a file in .kde/env/sshagent_start.sh containing the following:
#!/bin/bash
export SSH_ASKPASS="/usr/local/bin/gtk-led-askpass"
eval `/usr/bin/ssh-agent -s` && /usr/bin/ssh-add
Make sure the script is executable. You will need the gtk-led-askpass util that you can find here. Install it (after compiling) in /usr/local/bin/ or somewhere else, but then you have to adept the script accordingly.

Links

Below the sites on the web I used to compile this info. If you want to contact me about this page, use my gmail dot com account weijmarshausen