Another Linux installation experience

Print

After several years of procrastination, and some unsuccessful bids on eBay, I finally got a laptop computer. It's a Dell Latitude, and it came with a 650 mHz processor, a 12 MB hard disk, and 128 MB or memory.

"Only 128 MB of RAM," you say? Hell, I got by for years with a Commodore Amiga that had "only" two MB. I wasn't worried about this because my plan was to install Linux on it, and knew that Linux would work with this configuration.

So, after switching on the power and making sure that I got what I paid for, I proceeded to install RedHat Enterprise Linux Version 4. For a personal-use computer, it might have made more sense to install Xandros or Ubuntu, but I already had a copy of RH Enterprise on hand; somebody gave it to me at the recent LinuxFest in Bellingham. RedHat has another important advantage; it's easy to find RPM's for updated software.

After completing the installation (I had to depart from the RH Enterprise default configuration because I have no intention of ever using this laptop as an Apache host), the first problem I had to address was networking. The laptop came with a Linksys WPC11 wireless card, and RH Enterprise doesn't support it. The first thing I learned (and this is important information for geeks) is that this card uses the rtl8180 chip set. After some more googling, the consensus seemed to be that the best way to get this card working is to use a module called ndiswrapper. Downloading the source (from http://ndiswrapper.sourceforge.net/) and "make install" was half the battle. (Since I didn't have any network connection, I had to use a modern “sneakernet”; burning what I downloaded onto a CD-ROM and moving it to the laptop. Fortunately, I bought a spindle of cheap blank CD-ROMs a few months ago.)

What ndiswrapper actually does is serve as a “wrapper” for Windows drivers. So, I had to get the Windows driver for the Linksys card. This was easy to find, because there's a directory on the ndiswrapper.sourceforge.net site for supported cards. The driver that I ended up using came from http://www.realtek.com.tw/downloads/downloads1-3.aspx?Keyword=8180. Following the directions for ndiswrapper, I unzipped the driver file into /etc/ndiswrapper.

“modprobe ndiswrapper” gave me a “wlan0” device. However, it takes a bit more effort to get a wireless card working than an ethernet card. It's necessary to run “iwconfig”, and this is what worked:

iwconfig wlan0 channel 11 essid default mode managed

The “essid default” parameter is important, but the key thing for getting this working is “channel 11”. The channel has to match the channel of the wireless router that you intend to connect to. The remaining steps to get this working were:

ifconfig wlan0 192.168.1.104 netmask 255.255.255.0 up
route add default gw 192.168.1.1

“192.168.1.1” is the IP address of the router, and “192.168.1.104” is the address I assigned to the laptop.


The next thing I addressed was printing. I already have an HP “3-in-1” printer attached to my principal Linux computer, and it's set up so I can print on it from a Windows computer that's part of the local area network that I just increased by 50%.

All of the current distributions that I'm familiar with install “cups” to handle printers. Cups is an excellent piece of software, but it is, in my opinion, inappropriate for most home users, and especially home users trying to cram as much functionality as possible into 128 MB of memory. The problem is, cups devotes a lot of resources to automatic detection and configuration of printers, and it does this as long as the computer is turned on. How often do you buy and install a new printer? If the answer is, “every five years or so”, it's better to configure the printer just once.

The alternative to cups is “LPRng”, and if you were using some form of Unix 10-15 years ago, you're probably familiar with the concept; you define the printers with the /etc/printcap file.

LPRng is no longer included with RedHat Enterprise distributions. So, I went to http://www.lprng.com/, downloaded it, unzipped it, and typed in “make install”.

The next thing I did was to add an entry to /etc/printcap for my networked printer. It looked something like this:

lp:tc=.common:lp=devps@crow

Pretty simple, right? This just says that if you make an attempt to print on the device “lp”, it will be routed to a printer named “devps” on a machine named “crow”.

The problem is, this didn't work. I got a “permission” error, and I never figured out what the problem was. Since I don't have problems accessing the same printer from the Windows machine, I looked into how this was happening, and I learned the the Windows machine was accessing it through Samba. So, I changed the /etc/printcap entry to look like this:

lp|smbhp:lp=/dev/null:sd=/var/spool/samba:sh:if=/usr/bin/smbprint

What this does is, when you attempt to print to “lp”, it gets processed by the /usr/bin/smbprint script. This script, in turn, expects to find a file named .config in the /var/spool/directory, and this is where you define the printer, and your samba user name and password.

This didn't work on the first try. In the smbprint script, the code that does the actual work looked like this:

cat | /usr/bin/smbclient "$share" "$password" -E ${hostip:+-I} \
$hostip -N -P $usercmd "$user" $workgroupcmd "$workgroup" \
-c "$command" 2>/dev/null

This may have worked with an earlier version of Samba, but it doesn't work with the version that comes with RedHat Enterprise Version 4. To get this working, I had to change to to this:

cat | /usr/bin/smbclient "$share" -E ${hostip:+-I} \
$hostip -N $usercmd "$user%$password" $workgroupcmd "$workgroup" \
-c "$command" 2>/dev/null

This is a problem that the RedHat people should fix.


Now for the nastiest problem. My intention was, for applications like Evolution and The Gimp, to use Xwindow in the traditional fashion; the program actually runs on my main Linux machine, but displays the GUI windows on the “X server”, which is the screen on the laptop. Normally, all you have to do to make this happen is, enter the command “xhost +”, then a command that looks something like this:

/usr/local/bin/ssh2 crow "export DISPLAY=laptop:0 ; /usr/local/bin/evolution-2.2"

This says, “log into the 'crow' machine, set the X display to 'laptop', then run evolution”. The result I got was a permission error, telling me that “crow” wasn't able to access “laptop”. This is the error that you get if you don't enter the “xhost +” command.

I tried a lot of things to fix this. There's a file in the home directory called .Xauthority that's supposed to control access to the X server, and you run a program called “xauth” to add things to it. I tried this, and it made no difference. I even downloaded and installed a more recent version of Xwindow, thinking that there might a bug in the version supplied with RedHat Enterprise that got fixed later. Nothing doing. After much hair-pulling and swearing at two different computers, I got a clue: when I ran “ps -auxw”, I noticed that there's a “-auth” parameter in the command that starts “X”. This led me to the file /etc/X11/grm/gdm.conf. There's a line it it that reads:

#DisallowTCP=true

Uncommenting this, and changing the value to “false” solved the problem.


OK, now it's time to start making improvements. When I did the RedHat Enterprise installation, I chose the KDE desktop. KDE is another memory-hungry application, and I learned a couple of years ago that it's easy to replace it with the Xfce window manager. This in no way prevents you from using individual KDE applications such as kopete or knode. I was able to locate RPM's for Xfce at http://www.xfce.org/. To add Xfce to the list of login choices when the computer is initially booted, I had to tweak the files /etc/X11/xdm/Xsession and /etc/X11/xdm/kdmrc.

RedHat Enterprise 4 comes with version 1 of OpenOffice, which is an essential application for a laptop. Version 2 of OpenOffice has a lot of significant improvements. So, I removed the three RPM's that make up the RedHat-supplied OpenOffice, then went to http://www.openoffice.org/ and downloaded and installed the most recent version (the “with bundled JRE” one).

Finally, there's a program I use called gkrellm that I've used for a long time that displays useful information about your computer's CPU and bandwidth usage. It's especially useful in this situation, because it shows you the charge level of your battery. I got a pleasant surprise with gkrellm; even though my principal system runs RedHat version 9 (with lots of updates), it's still binary-compatible with RedHat Enterprise Version 4. So, all I had to do to install gkrellm was tar up the directory where I had previously compiled gkrellm, un-tar it on the laptop, then “make install” to put all the files used by gkrellm in the right places; no compilation necessary.

Now, any article of the nature has to have a screen shot in it somewhere, so here it is. (Click here for an actual-size version.)

Image

This shows gkrellm on the right edge. If you look at the upper right corner, you'll see that Xfce has a system tray, and there are two KDE applications running, kopete and kwifimanager.