Kernel Compile Checklist and PCMCIA Modem Problem
From: wwwolf (me_at_mydomain.not)
Date: Sat, 16 Apr 2005 23:39:25 -0400
I'm down 2 for 2 :-(
I have a LC2430 laptop from Linux Certified and I have SuSE Pro 9.0 on
installed. Last spring, my onboard modem Uniwill 82801DB AC'97 was struck
by lightning. After looking at various modems in the SuSE database I
decided to go with the Actiontec 56k PCMCIA modem (FM560LK) since it even
says it works with Linux on the outside of the box. I have never been able
to get it to work.
# cardctl info 0
PRODID_2="56K V.90 Fax Modem (LK) "
It at least identifies the card, but that is as far as I am able to get.
If I bring up the SuSE Plugger, under modems, I only see my old non
functional modem. I have since reinstalled SuSE (explained below) and I
skipped over this configuration when it wanted to set up my old modem but
the OS has decided to allocate resources for it anyway.
The general tab says Available = yes, Configured = No.
The Resources tab states:
I/O Ports 0xe200-0xe2ff (rw)
I/O Ports 0xe300-0xe37f (rw)
IRQ 17 (7 events)
and the Driver tab is grayed out.
Q1. How do I regain these resource allocations?
Now, wondering where my new PCMCIA modem would be listed in the plugger, I
found it in the "Unknown" section as "PCMCIA 56K V.90 Fax Modem (LK)".
The general tab under Details states Available = Yes, Configured = New.
The Resources tab is grayed out unlike the other modem.
The Driver tab states:
Driver Info #0:
Driver Status: pcnet_cs is not active
Driver Activation Cmd: "modprobe pcnet_cs"
Driver Info #1:
Driver Status: serial_cs is active
Driver Activation Cmd: "modprobe serial_cs"
I can click on the Insert button under the DeviceManager and I get:
Your insert request delivered:
Sorry, inserting of this type of device is currently not supported, but a
driver has been loaded and so it should be possible to use the device.
OoooKaaay, It says I should be able to use it. So, I call up Yast, Network
Configuration, Modem, and it is not detected, however my other modem is
still there haunting me. I select "Other (not detected)" and have called
the device /dev/modem, put in my ISP info, and run it. The log says:
SuSE Meta pppd (smpppd-ifcfg), Version 1.06 on linux.
Status is: disconnected
trying to connect to smpppd
connect to smpppd
Status is: disconnected
Status is: connecting
pppd: Plugin passwordfd.so loaded.
pppd: --> WvDial: Internet dialer version 1.42
pppd: --> Initializing modem.
pppd: --> Sending: ATZ
pppd: --> Sending: ATQ0
pppd: --> Re-Sending: ATZ
pppd: --> Modem not responding.
pppd: Connect script failed
Status is: disconnected
pppd died: Connect script failed (exit code 8)
I also try calling it /dev/ttyS0 and I get the same log message. I have
also tried every other selection as well.
I emailed Actiontec and they stated:
The response to this issue is below:
Install as you would any modem in LINUX using the generic drivers built
Once installed, you use the same settings to set the modem to your dialup
application that you would use for any controller based modem in LINUX.
So, the ball is back in my court again and I am running out of things to
Since The SuSE Plugger was telling me that inserting this device is not
supported, I decided to apply a little Mahjong logic and decided to
compile a new Kernel in hopes that I would get better support for this
Q2. What do I need to do to get this modem to work?
Since I will be installing Debian (Woody) 3.0r next week on it, I
thought this would be an excellent time to learn how to compile my own
custom kernel, since, if I screw up, I haven't lost much since I was going
to wipe the drive clean anyway.
I have three different info sources and they all say different things
sometimes even directly contradicting each other.
1. SuSE Administration Guide 9.0
2. Linux Power Tools by Roderick W. Smith Chapter 15 "Creating a Custom
3. linux-126.96.36.199 README.
(3) says to stay away from /usr/src/linux because of some incomplete
headers and such. It suggests to compile it in your home directory
somewhere. (1)states that I should just make sure to maintain the symbolic link
/usr/src/linux for package dependencies and just link the current Kernel
directory to this but actually shows a kernel compilation example as:
earth:/usr/src/linux # make dep clean bzimage.(2) states that it is OK to
unpack and compile in /usr/src
So, anyway, this is my current checklist:
A. Download linux-a.b.c.tar.gz and linux-a.b.c.tar.gz.sign (obviously
a.b.c is the version and not literally a.b.c)
B. Receive the keys from wwwkey.pgp.net
a. $ gpg --keyserver wwwkeys.pgp.net --recv-keys 0x517D0F0e
b. $ gpg --verify linux-a.b.c.tar.gz.sign linux-a.b.c.tar.gz
Q3. I know its probably no big deal but how to I do this in secure memory?
Session, open new secure shell, looks like it wants me to connect
somewhere online rather than just securing my local memory.
C. Unpack the file wherever.
a. $ tar xvzf linux-a.b.c.tar.gz
D. $ make menuconfig (I like this one better than config and xconfig)
a. make all of your selections and deletions and module support
b. save configuration
Q4. Since this takes an incredibly loooong time to read all of the
options, what is this configuration file saved as so that if I need to go
back and make minor changes, I can reload it from a previous backup?
E. $ make dep (not needed for kernel-2.5.x and later)
F. $ make clean (to clean up old files and stuff)
G. $ make bzImage (according to the admin guide)
a. make a note of where the compiler tells you it stored the file after
H. $ make modules
I. $ make modules_install
OK, this is where it starts to get very fuzzy and not-so cuddly:
I copy this new kernel to /boot and renamed it to New_Kernel-a.b.c
I also copied the file system.map from the main kernel directory to /boot
and updated the symbolic links for /usr/src/linux and
/usr/src/linux-include to point to the new linux-a.b.c file and the new
linux-include file respectively.
Since I am using the default GRUB boot loader, I wanted to add another
menu selection so I could boot to this new kernel and try it out (maybe
some benchmarking and stuff if it works while still having the safety net
of my old working kernel to select on reboot if needed)
I copied the section in /boot/grub/menu.1st:
###Don't change this comment - YaST2 identifier: Original name: linux###
kernel (hd0,1)/boot/vmlinuz root=/dev/hda2 vga=0x317 splash=silent
desktop hdc=ide-scsi hdclun=0 showopts
and pasted it below this section changing "title Linux" to title New
and changed kernel (hd0,1)/boot/vmlinuz to /boot/New_Kernel-a.b.c
THIS DOES NOT WORK! If only it were this simple. Selecting the new menu
option on reboot showed me a black screen and I had no ideal what errors
OoooooKaaaay, maybe I was missing a step so I decided to automate this by
making my own rpm for step G. above. $ make rpm (and then find it, click
on it and install it this way.) Before I did this I backed up the file
vmlinuz in /boot to vmlinuz.old since it pointed to my working kernel. I
was thinking that the RPM would just make a new vmlinuz so I didn't want
the current one overwritten. Boy was I wrong! The RPM deleted everything
except vmlinuz.old leaving my jaw on the floor. Oh well, it was an RPM so
it should work anyway. WRONG! It left my system unbootable from the HD.
I'm not normally accustomed to reinstalling everything since this IS linux
after-all. I did in this case since I wasn't sure how to correct it and it
didn't really matter anyway since the entire OS was backed up and I was
wiping it next week anyway.
Q5. What are the steps I've missed or done wrong? I compiled it with gcc
3.4.3. There were a few deprecated errors but nothing major to make the
OK, I'm down 2 for 2. My pride is broken. I humbly submit to your
Thanx for your contributions,