Author: Michael Minn (see www.michaelminn.com for current contact info)
March 20, 2004
The following document describes how I set up SuSE 9.0 Linux on a Toshiba Satellite 1950-S303 notebook computer. The Toshiba 1950-S303 is an excellent mid-range laptop manufactured in late 2002 with the following specs:
Toshiba's frequent offerings have often involved multiple extremely similar models and incremental (rather than revolutionary) changes from earlier models. As such, various parts of this document may apply to a wide variety of Toshiba models. I am providing this information to help others avoid the problems I encountered.
The definitive source for Linux laptop information is the Linux on Laptops Page. Much of this information was gleaned from pages linked by this site.
This document assumes some minimal UNIX/LINUX knowledge. I provide no guarantees for any procedures stated in this document. You're more than welcome to e-mail me if you've got a problem, but I can't guarantee a prompt or helpful reply. Like many things in the Linux world...you're on your own. I would, however, appreciate any errata that you can point out so I don't mislead anyone else.
The installation of SuSE 9.0 Linux is relatively straightforward, although some tweaks will be in order once the YaST installer program is done. If you choose to build an dual-boot system, resizing of the NTFS partition will be handled at the partitioning phase of the installer. Some other and older distributions may require use of the NTFSRESIZE utility and I have provided a description of my experience with that utility on my Red Hat 8.0 installation page.
Reinstall XP: Although this is not necessary, to try out YaST disk partitioning, I reinstalled XP from the installation disks that came with the machine. If you don't plan on using the XP side much, this might help clean off any files you have accumulated on this partition. Takes around 30 minutes and apparently involves a Semantech "ghosted" utility of some kind. Note that a restore will change your BIOS boot device order.
Defragment: If you are going to build a dual-boot Windoze/Linux system, you should probably defragment your Windoze partition. You might also choose to delete any unneded programs/files on the XP size to leave more space for your Linux partitions - I freed up 200MB by getting rid of Micro$oft Works (a true oxymoron). After booting up in XP, you can run the defrag utility from "My Computer->Tools". Takes around 15 minutes, depending on how much data you have on the partition.
Boot Order: So you can run the installer directly from the CD, you will want to reset your BIOS boot order to place the CD-ROM drive before the hard drive. Press F2 immediately after rebooting (while the red Toshiba logo is on the screen). This will put you in the BIOS configuration screen. Put the CD and Floppy drives ahead of the hard drive and network device.
Installer DVD: SuSE Linux comes in a package containing five CD-ROMs and one DVD-ROM. The entire OS fits on the DVD and I highly recommend using it over the CDs. Place the DVD in the drive and reboot. The side that says "Side A" should be on top. The YaST installer will start and you should choose "Installation" when asked. You will also be asked for a language (English is the default) and if you have Linux already installed, it will prompt for what you want to do. I recommend a fresh "New Installation". The installer will give a page that describes it's recommended installation options. Each option is a link that you can click to change.
Change Partitioning. This used to be the hard part but since YaST includes resizing of the NTFS (Windoze) partition, it's pretty easy, although you will want to make some changes to the recommendations given by the installer. Since I almost never use the XP side, I decreased the Windoze partition to it's minimum size, which, unfortunately, cannot be decreased below 8.8GB, even though the OS only takes around 3GB. I also put my /home directory under a separate partition to facilitate backup and so I could unmount the partition if I needed to try to restore an accidental deletion - which can't be done on a mounted filesystem. Below is a summary of my partitioning scheme:
Change Software. The default software selection is probably some compromise and, therefore, not optimal for anyone. Since this machine has a mighty 40GB hard drive and installation of everything takes only around 4GB, I say chose "Detailed Selection" and select everything in selections (KDE, Gnome, Games, Multimedia etc.)
Change time. The time settings may be wrong. You should probably use "local time" for the hardware clock regardless of whether you're using Windoze. It defaults to the Pacific time zone, so you should reset it if you live anyplace else.
Start the Installation. Kick off the installation. My resize of the NTFS partition failed the first time. I went back and placed the extended partition (/dev/hda3) in before the / and /home partitions. Not sure if that was the problem, but it worked the second time. My particular install (around 4GB) took about 1:20 and runs entirely from one side of the DVD-ROM.
Network. After the installation copies everything to the drive, the installer will give some prompts. The first is for the networking configuration. The installer will detect and configure the ethernet port at eth0. However, although it detects the "Toshiba America Info Intel 537 [82801BA/BAM AC'97 Modem], I was unable to get that configuration to work. You're welcome to give it a try, but I suggest you don't mess with it at this point and use the fix I give later in this document. In the interest of time and confidentiality, I would also suggest skipping the "Test the Internet Connection". If this is going to be a stand-alone machine (home use) you will want "User Authentication" rather then network login.
Add A Local User. For security and system integrity, you should spend as little time as possible running a root. Therefore, there should always be at least one local username/password login for everyday use.
Finish Install. The final stage of installation will run around 5 minutes. The release notes pop up as well as a hardware configuration screen. Accept the defaults. This distro does come with 3D support for the Radeon video chip, but it is supposedly in development and I'm more interested in stability than speed.
The following are some tweaks I have done to my installation to reflect my personal preferences. Not essential, but given here for your consideration.
Text Login. I prefer to see what's going on with my machine rather than have the boot messages hidden behind a glitzy bitmap. Therefore, I have configured my machine to boot in run level 3 (text mode) rather than run level 5 (X windows mode). As superuser, edit the /etc/inittab file and change the line:
id:5:initdefault: to id:3:initdefault:
If you chose text login mode, you will be given a VGA login prompt when you initially boot Linux. After you login, you type startx to start the X Windows desktop. Be aware that the screen will go completely black for a few seconds while X starts.
MWM Window Manager. As an old-school Unix guy, I've never found desktops to be the most comfortable way to work. I actually prefer typing commands rather than using the mouse to hunt and peck. Helps the carpal tunnel in my right hand as well. However, X Windows is still useful for graphical applications and having multiple terminal windows. Therefore, I use the very simple Motif Window Manager instead of KDE or Gnome. Easy enough to do if you use a text login (see above). Create a .xinitrc in your home directory (/home/<username>) and type the following lines. This creates a single terminal window, puts a clock window at the bottom of the screen, sets the "desktop" color to blue and starts the window manager. When you type startx, from the text login, it will start. You can create additional windows from a popup menu when you right-click on the desktop.
xterm & xclock -d -update 1 -geometry +819+710 & xsetroot -solid navy exec mwm
Cron Scripts. Within a few minutes of booting Linux, you may notice a flurry of disk activity. If your system stays on for an extended period of time, you may notice similar activity early in the morning (mine starts at 4:02AM). A program called anacron runs system administration programs on a daily, weekly and monthly basis. The configuration file is /etc/anacrontab runs the script /usr/bin/run-parts, which in turn points to the directories containing other scripts, /etc/cron.daily and /etc/cron.weekly. I believe the program that is most disk intensive is updatedb, a program that updates a central database for slocate, which is used for man -k. Since I rarely update my man pages, I deleted the /etc/cron.daily/slocate.cron file. I also deleted /etc/cron.daily/tetex.cron, which deletes unused TeX fonts (since I never use TeX). However, I left tmpwatch (which cleans out unused files in the /tmp directory), and logrotate (which cleans up old system logs).
Mozilla Mail. I like the e-mail program provided with Mozilla. Nice and simple and secure. However, this program is not installed with any of the default installation options. However, all you need to do to get it is install the mozilla-mail package from yast.
Mozilla Lockup. On another machine I had a problem with Mozilla locking up when trying to type in the address bar. Turns out that the problem was the SuSE Firewall blocking IPv6 requests in the default configuration. To solve the problem, edit /etc/modules.conf and change the following lines:
#alias net-pf-10 ipv6 ailas net-pf-10 off
Then restart the firewall:
Sound. The internal sound chip is supported by ALSA and detected by the installation program with no additional configuration necessary. This chip provides capability for wavetable systhesis but does not have an FM synth for MIDI playback.
Unneeded Services. To improve system performance and enhance security, unneeded services should be turned off. chkconfig lists currently active services and can also be used to turn them off. Below is a list of things I have turned off.
chkconfig isdn off chkconfig nscd off chkconfig postfix off chkconfig smpppd off chkconfig fbset off chkconfig splash off chkconfig splash_early off chkconfig splash_late off
Tee. If you do a ps -A, you will see that there is a tee process running. This initially caused me some alarm, although a ps -Af shows that it is used to send X error messages to the root terminal and the /home/(username)/.X.err file. Apparently comes from /etc/bash.bashrc. where startx is redefined to route error messages. You can edit that file and comment it out, although it doesn't seem to be hurting anything.
Touchpad. My personal opinion is that the touchpad is perhaps the worst laptop innovation of the last five years. Aside from the fact they're hard to use, I began developing significant wrist problems in the months immediately after getting this machine. Unfortunately, almost all laptops are equipped with touchpads nowadays. I purchased a USB trackball mouse that largely alleviated the wrist problems. If a supported mouse is plugged in when installing Linux, it will probably be detected and configured during installation. However, the touchpad will also be enabled. It can be disabled with the sax2 utility. The touchpad is listed as a PS/2 mouse on /dev/pointer1.
The mighty 2.4Ghz Pentium IV in this machine is really a desktop processor and generates ALOT of heat. Correspondingly, the internal fan for cooling it is REALLY loud. The fan has three speeds and is controlled by a thermostat.
I have had problems with the CPU overheating and shutting down during times of high processor load (with compiles or digital multitrack audio recording). This is particularly problematic since you can lose files when the system shuts down uncleanly. I think this has something to do with ACPI.
Older laptops used BIOS driven APM power management but newer laptops (such as this one) use the OS driven ACPI (Advanced Configuration and Power Interface). This handles hibernation/standby as well as the fan and disk shutdown. There is some Alpha level support for ACPI included with SuSE 9 (ACPI4Linux), but it doesn't seem to handle the fan very well. Other features like suspend to disk are not yet supported, so I don't see any reason to have the ACPI daemon (acpid) running. Because the kernel and file system have daemons that frequently write to the disk drive, the disk drive is never inactive long enough to spin down.
To turn the ACPI daemon off:
chkconfig acpid off
A kernel module is available for viewing and setting custom functions (like fan and battery status) in this system's Phoenix BIOS. Despite the name, you need the omnibook kernel module, available here. When installed, this module provides system files in the /proc/omnibook system directory. Download the kernel module, make install and modprobe omnibook to get it up and running. Full details on the /proc/omnibook/* files are given in the README with the kernel module.
This module can be loaded at boot time by adding the following line to /etc/init.d/boot.local:
The toshiba_acpi module DOES NOT WORK on this machine.
The intake is on the bottom of the machine and the output vent is on the left rear. If you block the intake or the vent and the processor overheats, the machine will shut down with NO WARNING to protect itself. This can be an unpleasant surprise when you are actually using the laptop on your lap and accidentally block the intake.
If you live/work in a dusty environment, the air intake on the bottom of the machine can become clogged and cause overheating. You may want to inspect it occasionally and clean it with a cotton swab.
The internal modem built into this machine is a Winmodem, which is basically a cheap hardware telephone interface with the actual modem processing provided in software drivers. Although the installer detects it correctly, the software it installs does not seem to work.
The modem uses a Lucent chipset connected to an Intel 82801BA/BAM (ICH2/ICH2-M) AC'97 Modem Controller. Other Lucent drivers (such as the Connexant driver) don't work because they were made for the MC97, not the AC97
You must have kernel source loaded to compile this driver.
Smart Link has a slmdm driver that will work with this chipset. You need to download an older version (2.7.10 or earlier). Later versions (including the ones currently posted on their site) will only work with SmartLink chips, not "Foreign" chips like the Intel/Compal combination in this machine. You can download a tarball from here.
Decompress the tarball and go into the created directory
tar -zxvf slmdm-2.7.10.tar.gz cd slmdm-2.7.10
Edit the Makefile and set the include path to point to kernel source. Find the following two separate lines:
KERNEL_INCLUDES:= /usr/src/linux/include MODULES_DIR = /lib/modules/$(shell ./kernel-ver)/misc
...and modify them to...
KERNEL_INCLUDES:= /lib/modules/`uname -r`/build/include /usr/src/linux-2.4/include MODULES_DIR = /lib/modules/`uname -r`/kernel/drivers/telephony /lib/modules/`uname -r`/kernel/misc
Make and install
make make install-amr
The install script will add the following lines to the bottom of your /etc/modules.conf file. SuSE recommends making modifications to modules.conf.local instead. Add the following lines to /etc/modules.conf.local and remove the corresponding lines from the bottom of /etc/modules.conf. Country depends on where you live and I'm not sure exactly what the legit values are if you live outside my beloved USA.
alias char-major-212 slmdm alias slmdm slamrmo options slmdm country=USA
Do an ls -l /dev/modem to make sure it's linked to /dev/ttySL0 (the device file used by the SLMDM module). If not, create the link with...
rm /dev/modem ln -s /dev/ttySL0 /dev/modem
wvdial is an excellent, no-nonsense ppp connection program that can be used to test and use the modem. All you need is one simple config file. Given the modem setup above, the following is my /etc/wvdial.conf file. You should modify the username/password to the one given by your ISP.
[Dialer Defaults] Modem = /dev/ttySL0 Baud = 115200 SetVolume = 2 Init1 = ATZ FlowControl = NOFLOW Dial Prefix = 1 Area Code = (insert your area code) Phone = (insert your phone number) Username = (insert your username) Password = (insert your password) Ask Password = 0 Dial Command = ATDT Stupid Mode = 1 Compuserve = 0 Force Address = DialMessage1 = DialMessage2 = ISDN = 0 Auto DNS = 1
On a related note, I purchased an Actiontec DataLink V.90 56K, SKU# MDV9012-01. The card is supported with the serial_cs.o kernel module and requires no additional configuration other than being plugged in to the PCMCIA socket. It will be visible as /dev/ttyS1. However, the dongle is very flimsy and breaks easily. I've also had a problem with the modem simply stopping, even though it is still connected to the ISP. Not sure what the problem is, but the workaround is to remove the card from the PCMCIA slot and replug it - extremely annoying. Suddenly, the internal modem looks better all the time.
There are also USB modems out there, but, again, be sure to consult a Linux Hardware Compatibility List. I've never used one, so you're on your own with this one.
FYI: to list information on the internal modem, use the /sbin/lspci -vv command, which dumps the following info:
00:1f.6 Modem: Intel Corp. 82801BA/BAM AC'97 Modem (rev 05) (prog-if 00 [Generic]) Subsystem: Toshiba America Info Systems: Unknown device 0001 Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Interrupt: pin B routed to IRQ 11 Region 0: I/O ports at 2400 [size=256] Region 1: I/O ports at 2000 [size=128]
Additional info on the modem from Windoze is as follows:
Driver Provider: Agere Driver Date 6/21/2002 Driver Version 220.127.116.11 I/O Range 2400-24FF I/O Range 2000-207F IRQ 11 Intel AC97 Conexant SmartMC II Device Manager- >Modems->toshiba Software Modem->Diagnostics PCI\VEN_8086&DEV_2446&SUBSYS_00011179\REV 05 8086:2446 VENDOR ID 8086 (Intel Corporation) Device ID 2446 SUBVENDOR ID 1179 SUBDEVICE ID 0001 REVISION ID 05 VENDOR NAME ICH DEVICE NAME ICH2 SUBVENDOR NAME COMPAL MODEM TYPE HSF WINXP INBUILD SUPPORT NO
Much love to the Italian Linmodem Page for their EXCELLENT SEARCH ENGINE for helping me find this Critical Page in getting this damn thing to work.
Booting XP. The setup described in this configuration is a dual boot configuration. By default, GRUB (the GRand Unified Boot loader) loads Linux at boot time. However, you will get a screen briefly at boot time that will allow you to use the down/up arrow keys to select Windoze or Linux as the OS. Press RETURN after making your selection.
XP Partition. If you left an NTFS partition on the drive at install time, the installation program created a mount point and it will automatically be mounted READ ONLY at boot time. The default name is /windows/C.
Accessing Linux partitions from XP. I am told that there are a couple of utilities that allow you to access a Linux partition from Windoze, although that's a scary thought and I've never tried either of them: fsdext2 and explore2fs.
Wine. WINE is a Linux Windoze emulator that can be used to run Windoze programs (including office suites). My past experiences were largely unsuccessful but I don't know what its current state is. If you need to run Windoze programs like M$-Turd, Exhell and the Windoze Media Player, Crossover Office from Code Weavers has an implementation of Wine that guarantees successful running of specific software. My modest office software needs are met by Open Office and I urge you make an attempt to divorce yourself from the Evil Empire.
Linux's XFree86 supports True Type fonts. You can copy the fonts from your Windoze partition and use them in Linux. Since you will be making a system configuration change, you must be SUPERUSER to perform these commands.
.ttf files should be copied into the /X11R6/lib/X11/fonts/truetype directory. Unfortunately, YaST regenrates the /etc/X11/XF86Config file, so you cannot add a new separate directory in FontPath for your windoze fonts.
The X font server requires fonts.scale and fonts.dir files that describe the TrueType fonts in X Windows terms. Older distros included the ttmkfdir and mkfontdir programs to create them, but SuSE has their own utility.
SuSEconfig -module fonts
Get out of X Windows and startx again so X loads the fonts. You can verify loading of the fonts by using the xlsfonts command. Times New Roman is a common font and grep does a search on the output piped from xlsfonts:
xlsfonts | grep "times new roman"
You can also transfer .ttf files from other machines via floppy or CDROM. Note that there are different font files for the italic, bold, bold italic and regular versions of the fonts. Some of the True Type files can be very large so you may need to use multiple floppys. After copying them to the font directory you must run through the subsequent SuSeconfig steps again.
The built-in CD-RW drive is detected by the installation program and no further configuration is necessary. cdrecord is the program included with Red Hat for recording CDs.
I use the CD-Writer to perform backups of my /home directory. It can, of course, be used to create any kind of CD, but the following instructions are specific to burning a backup CD for a single directory tree.
You can probably put all these commands in a script to simplify CD writing, but I am including explicit commands here for clarity. Because things can go wrong at any step and waste media, you might want to do things explicitly from the console for awhile.
Create the CD image with the mkisofs utility. mkisofs was created when you compiled cdrecord. See the section above for information on compiling cdrecord and installing mkisofs. Supposedly it is possible to pipe the output of mkisofs directly into cdrecord without using an image file. However, every time I tried to do this I got "loss of streaming" errors.
/home/cdimage is an output file from mkisofs that will be used to burn the CD later. This is an arbitrary name...you can put your image anywhere you like (except the directory you're archiving?) [source_directory] is the root of the directory tree that you want to copy. The -r option sets the permissions of all files to be public readable on the CD and enables RockRidge-extensions. The -J option (MS Joliet extensions) can be used to generate a more Windoze friendly CD, but I have had problems with the option yielding the message "tree sort failed".
This will take a few minutes.
mkisofs -r -o /home/cdimage [source directory]
Linux has the ability to mount files as if they were disk partitions. This feature is useful to check that the directory layout and file access permissions of the CD image match your wishes. Once you've tested CD-Writing on your system, this step is unnecessary.
mount -t iso9660 -o ro,loop=/dev/loop0 /home/cdimage /mnt/cdrom
Now you can inspect the files under /mnt/cdrom -- they appear exactly as they were on a real CD. To umount the CD-image:
CD-writers need to be fed with a constant stream of data. The process of writing the CD image to the CD must not be interrupted or a corrupt CD will result. Don't do anything with heavy disk access while writing the CD. Mechanical shock to the writer can also ruin the write. I would reccommend going away and doing something else while the CD is burning...it will take 70 minutes for a full CD.
cdrecord -v speed=8 dev=0,0,0 -data /home/cdimage
Although the writer is capable of 16x writing, I have had problems with buffer underflow at high speed, but speed=8 seems to work consistently.
Min drive buffer fill was 95% Fixating... cdrecord: Input/output error. close track/session: scsi sendcmd: no error CDB: 5B 00 02 00 00 00 00 00 00 00 status: 0x2 (CHECK CONDITION) Sense Bytes: 70 00 05 00 00 00 00 0A 00 00 00 00 2C 00 00 00 Sense Key: 0x5 Illegal Request, Segment 0 Sense Code: 0x2C Qual 0x00 (command sequence error) Fru 0x0 Sense flags: Blk 0 (not valid) cmd finished after 0.002s timeout 480s cmd finished after 0.002s timeout 480s cdrecord: Cannot fixate disk. Fixating time: 0.004s cdrecord: fifo had 7474 puts and 7411 gets. cdrecord: fifo was 0 times empty and 6772 times full, min fill was 59%.
Recording an audio CD is actually a bit simpler than burning a data CD. If you have your audio files all in one directory in .wav format, the following example will burn them all on separate tracks. Since the list will be in alphabetical order, you will need to determine the order of tracks by appending some kind of alphabetical prefix to the track names (i.e. 01_your_song.wav, 02_my_song.wav, 03_his_song.wav, etc.)
cdrecord -v speed=8 dev=0,0,0 -pad -audio *.wav
The recorder records audio CDs at 16x speed, but as with data CDs I have had underflow problems at 16x. speed=8 works well. I have had problems with audio CDs recorded with the speed=1 and speed=4 options. cdrecord completes successfully but the CDs are then unreadable by the CD drive. I thought lowering the speed might remove the potential for error and buffer underflow, but it appears the drive or the drivers don't handle lower speeds well.
CDRDAO is a command line program for writing CDs in disk-at-once (DAO) mode. CDRECORD on most CD writers will only write in track-at-once mode, turning off the laser between track writes and forcing a 2-second gap between audio tracks (since the stream of pits on the CD stops between tracks). Although this usually does not cause problems, the preferred way to write a CD is disk-at-once as a single stream of pits - to prevent tracking errors and in case you want to send the CD to a duplicator to make bulk copies. CDRDAO provides capability for specifying a number of different parameters for disk writing, including specific timings between tracks, UPC numbers and CD-TEXT (album and track names) for writer drivers that support it.
With this added capability comes additional work in setting up the write. CDRDAO requres a text file that defines what the TOC will look like on the written disk. Although the format for this file is not complicated, it is a bit more work than simply specifying a set of files on the command line, as CDRECORD allows.
The internal CD writer is supported. To write, use the following command. Note that you must be SUPERUSER to write a CD.
cdrdao write --driver generic-mmc --device 0,0,0 toc_file
The DVD drive on this machine plays DVD's beautifully with some tweaks.
Download Viewer Software: The default Xine player that comes with the distribution does not have DVD support due to fear of the Fascist MPAA and their expensive lawyers. While Xine and libdvdcss (for decrypting commercial DVDs) are available online, I suggest Ogle. Comes in easy-to-install RPM packages. The user interface isn't as pretty as Xine, but it is much simpler and more functional (especially chapter selection). You will need four RPMs: libdvdcss, libdvdread, ogle, and ogle_gui. Much love to DVD Jon for enduring all the legal nonsense so the rest of us can play DVDs we bought with hardware we own.
Ogle Installation: Install the RPMs with the rpm command line program:
rpm -i --force libdvdcss-1.2.8-1.fr.i386.rpm rpm -i --force libdvdread-0.9.4-ogle1.i386.rpm rpm -i --force ogle-0.9.2-ogle1.i586.rpm rpm -i --force ogle_gui-0.9.2-ogle1.i386.rpm
A newer version of libdvdread comes with SuSE 9.0, but I'm not sure if it works with Ogle. The --force flag will ignore any strange dependencies.
DMA Access: This is important. Regardless of what player you choose, it will give you jerky video if you do not turn DMA access on for the DVD drive. By default, this distro of Linux boots with DMA access turned off. You can turn it on with the following command. Note that /dev/hdc, not /dev/sd0, is the raw device name of the DVD drive.
hdparm -d 1 /dev/hdc
Default DMA: DMA access is turned off by default, and any hdparm changes will will be lost when you reboot. I'm not sure exactly why the defaults are set up that way, but it may have to do with security or operation of the drive as a CD writer. It can be turned on by default by modifying /etc/sysconfig/hardware. Explanatory comments are at the top of the file.
Xine Compilation Problems: The following comments regard problems I had compiling Xine. If you use Ogle, they are irrelevant to you, but they are included here in case anyone else encounters them. The bottom line is that you should get the latest versions of the software.
When trying to compile xine-lib-1-rc1, I got the following compilation errors
xine_check.c: In function `xine_health_check_dma': xine_check.c:281: error: `LVM_BLK_MAJOR' undeclared (first use in this function) xine_check.c:281: error: (Each undeclared identifier is reported only once xine_check.c:281: error: for each function it appears in.)
I thought the problem was related to lvm. SuSE Linux comes with lvm_1.0.7. In YaST, I tried replacing it with lvm2_2.00.02 to no avail.
Moving up a version to xine-lib-0.9.8.tar.gz, I got the following compilation error:
Error: suffix or operands invalid for `pcmpgtw'
Finally, xine-lib-1-rc3a and xine-ui-0.9.23 compile fine. You will also need to compile libdvdcss, which you can get here
Xine does come with a nice program called xine-check. It identified my jerky video problem as an issue with SCSI emulation (ide-scsi) not having DMA, although it gave no suggestions of how to solve the problem. I did find some further comments here, but since /dev/dvd is linked to /dev/sd0, I was not aware that the correct device for hdparm is actually /dev/hdc. Once I tried Ogle, the Ogle FAQ told me what I needed to know.
You can get more info from the Ogle FAQ and the Xine FAQ.