TuxMobil: Linux with Laptops, PDAs, Mobile Phones and Portable Computers
PRINT version of "Slackware 9.1 (Kernel 2.4.22) on a HP Pavilion ZE4315US Laptop"
    <= Back to SCREEN version <=

By Norm Kravatz <nocho_at_mail.com>
September 30, 2003

Hardware Overview

The only thing I felt compelled to change from stock configuration was the amount of RAM dedicated to video in the BIOS. Considering the lobotomized mobile Radeon card in there isn't really suited for serious 3-D usage anyway, 64MB is way overkill, since it takes from your main system memory pool and reduces you effectively down to 192MB. Instead, I opted to just wittle down the allocated video RAM to 16MB, more than enough for general desktop use and light 3-D demands while still leaving 240MB for the system. Enough to feel comfortable omitting a swap file as well.

Oh, and speaking of BIOS, make sure you are running with the latest. I upgraded mine to KA.M1.48 from the HP web-site(http://h20004.www2.hp.com/soar_rnotes/bsdmatrix/matrix321537en_US.html).

Install Issues

If you already attempted to install by now, you probably found yourself getting nowhere fast.

To be able to even boot the Slackware install without it locking up at the keyboard map prompt, you'll need to either Disable Legacy USB in the BIOS (which will prevent you from being able to boot from USB devices) or just type the following at the "boot:" prompt:

bare.i nousb

Go ahead and install Slackware however you want. If for whatever reason you follow these instructions and still have trouble, omit the E, KDE, KDEI, and Y packages, which I have no use for and didn't bother testing. I just did a full install of everything else, figuring its better to have and not need, than to need and not have.

Once you hit the OPTIONAL LILO "append=" section, add the following:

hdc=ide-scsi idebus=66

Before you reboot for the first time, you'll want to make sure a couple of the startup scripts are temporarily disabled lest you hard lock at boot:

chmod -x /mnt/etc/rc.d/rc.pcmcia

There is also something in the PCI hotplug system that causes a freeze, so lets just disable it for now:

chmod -x /mnt/etc/hotplug/pci.rc

There. We should be able to Ctrl-Alt-Del now without fear of lockage when we come back up.

Network, Sound, Modem

The network card should have been auto-detected and added to your /etc/rc.d/rc.netdevice startup file:

modprobe natsemi

Sound support can be added to /etc/rc.d/rc.local or launched manually via:

modprobe trident

The integrated modem does, in fact, work under Linux -- but only apparently when the trident module is NOT loaded first. Don't load the trident module after using the modem either, or it will lock. Just reboot in-between sessions. Annoying, but still pretty cool.

Just download the source tar-ball from the horse's mouth(http://www.linuxant.com/drivers/hsf/downloads.html) and follow the instructions inside.

For me it was as simple as:

tar -zxvf hsflinmodem-5.03.27lnxtbeta03042700.tar.gz
cd hsflinmodem-5.03.27lnxtbeta03042700
make install

Just press enter for the defaults and it should automatically soft-link /dev/ttySHSF0 to /dev/modem for you, and you can make use of it immediately.

What a pleasant surprise having an analog "Winmodem" work so painlessly under Linux. Sure makes it handy for those road trips where you don't have access to broadband. Hurrah for Conexant!

USB and Firewire

USB support should be detected automatically by the /etc/rc.d/rc.hotplug script (which launches /etc/hotplug/usb.rc specifically). I've tested this out and verified it works with the external floppy. Just make sure its plugged in (use the lsusb command to verify) then:

mount /dev/sda /mnt/floppy

Firewire... I have no idea. While it appears the ieee1394 agent should run as part of the HotPlug system, I have no devices to test with yet. modprobe ieee1394 runs without errors and lsmod confirms it, so I'm assuming the base port-support is working. Someone please e-mail me at the address on top of this page with any first-hand accounts of actual FireWire devices working under Linux. Will update this document as soon as I find out.

Cardbus (PCMCIA) Support

For whatever reason, the "yenta-socket" driver that comes integrated with recent kernels can't detect and set the IRQ properly in this system. The result varies from non-detection of insertion/removal events to instant total system hard-lock. The easiest way I've found to fix it so far is to just disable the internal "yenta-socket" support and resort back to the "antiquated" i82365 module that comes with the pcmcia-cs package instead. Before we recompile the pcmcia-cs package though, we should go ahead and recompile the kernel to enable ACPI support and disable internal PCMCIA support there first.

Before proceeding further, go ahead and download the latest pcmcia-cs source code(http://prdownloads.sourceforge.net/pcmcia-cs/pcmcia-cs-3.2.5.tar.gz?download) to have it handy.


Compiling a New Kernel to Fix ACPI and Disable Internal PCMCIA Handling

Make sure you have the Slackware 'K' (Linux kernel source code) package installed, or if its easier, download the Linux 2.4.22 source(http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.22.tar.bz2).

You can download the ACPI4Linux patch for 2.4.22 here(http://prdownloads.sourceforge.net/acpi/acpi-20030916-2.4.22.diff?download).

Throw the files into your /usr/src directory and issue the following commands:

cd /usr/src
tar -jxvf linux-2.4.22.tar.bz2
(if 'K' package not installed)
cd linux-2.4.22
patch -p1 < ../acpi-20030916-2.4.22.diff

I'm not going to get into the specifics of compiling kernels. There are plenty of HOWTOs and documentation out there, plus I don't want to sound overly redundant for those who are quite adept at it. So I'll just keep this short and simple, staying with the path of least resistance which also minimizes unforeseen issues. So just execute the following as root:

cd /usr/src/linux-2.4.22
make clean
make mrproper
make menuconfig

At this point, unless you know what you're doing, you'll want to just load the defaults from the /boot/config file (option second from bottom).

These are the base config options I would recommend changing:

Obviously, there's alot of other stuff you can nit-pick and get rid of, esp. if you are sure you'll never need it, but since most everything in Slackware is compiled as a module (which is a really good way to go) and since we aren't hurting for disk space, better to play it on the safe side for now until we know everything is working, even if it means a slightly longer compile time. Notice we did not include PCMCIA support in the kernel. We're going to have to use the "legacy" drivers in the pcmcia-cs package instead.

Go ahead and exit, saving your new kernel config, then:

make dep
make bzImage
make modules
make modules_install
make install

The entire process takes about 30 minutes.

Slackware keeps its default kernel in the /boot directory, so you'll need to modify LILO manually to tell it where the new kernel is. Use your favorite text editor to modify the /etc/lilo.conf file and scroll down until you see the image=/boot/vmlinuz line. You'll want to insert the following few lines before it:

image = /vmlinuz
root = /dev/hda1
label = mykernel

Save and exit, run /sbin/lilo to commit the changes and reboot. You should have two Linux options now: one for your original kernel that came with Slackware 9.1, and your new custom kernel that is optimized for your hardware!

Recompiling and Tweaking pcmcia-cs to Fix Our Little Problem

Make sure you've recompiled a kernel with internal PCMCIA support disabled (as detailed in the section immediately above) and reboot before continuing.

Before we begin, we'll want to erase the dead soft-links to the kernel module tree, and erase the Slackware-default rc.pcmcia startup script so that it gets replaced with the proper one from the pcmcia-cs package which detects IRQ 11 properly for insertion/removal events, without any conflicts.

rm /lib/modules/2.4.22/pcmcia/*.gz
rm /etc/rc.d/rc.pcmcia

Now issue the following commands to install pcmcia-cs:

cd /usr/src
tar -zxvf pcmcia-cs-3.2.5.tar.gz
cd pcmcia-cs-3.2.5
make config
make all
make install

One last quick thing, you'll need to comment out the exclude line in the /etc/pcmcia/config.opts configuration file (at line 36) so that it can use IRQ 7 for the actual card data interrupts, as well as add another line after that so that it never defaults to IRQ 12. Otherwise you can expect lockage or less-than-optimal cardbus performance at best:

#exclude irq 7
exclude irq 12

Thats it! Reboot that puppy and you're all set.

Fixing the ACPI Handler Script

This system handles ACPI a bit weird, and generates a forward-slash character instead of a space between the event strings in /proc/acpi/event which the acpid daemon watches. No need to fret, as a quick tweak of the ACPI handler script can get it so you can have the system shutdown properly (init 0) upon just pressing the power button as its supposed to. All you have to do is edit the /etc/acpi/acpi_handler.sh script with your favorite text editor.

Change the string button) below $1 to read button/power) and the string power) below $2 to read PWRF) and you should be all set upon restarting acpid. You can also add a custom event above the *) line to make something happen upon closing the lid... its just: button/lid) and LID) instead.

Running XFree86

I'm not going to bother covering XFree86 customization. It works just fine out of the box using the VESA driver. Just startx and you're off, with whichever desktop (GNOME, KDE, etc.) you chose upon initial install.

Feel free to e-mail any thoughts, suggestions, success stories to the address at the top of this page.

TuxMobil: Linux with Laptops, Notebooks, PDAs, Mobile Phones and Portable Computers

        /* Adv.    Xtops.DE - Laptops and PDAs with pre-installed Linux   Adv. */        

http://tuxmobil.org/linux-ze4315us-slack-9.1.html, copyright © Werner Heuser, 1997-2008