Redhat Linux 9 on the Toshiba Tecra 9100

Hugh Sparks
Version 1.0, April 19, 2003

Introduction

Redhat 9.0 runs most of the hardware on the Tecra 9100 right out of the box. Only a few configuration steps are less than obvious, this page reviews these extra issues.

Installing Redhat 9.0

Planning the partition layout

You need to have a partition layout in mind before you start. If this concept unfamiliar, this web page is probably not a good place to learn.

My system is set up for dual-booting with Windows XP. I also make room for a shared fat32 partition where I keep installers that will be needed by Windows or Linux when I reinstall either operating system. Finally, I provide an extra Linux partition so I can try out new distributions without blowing away my old system.

Example partition map

	Windows           /dev/hda1   FAT32   18G
	Extended:         /dev/hda2   Ext'd   20G 
	Installers        /dev/hda5   FAT32    6G
	Linux swap        /dev/hda6   Swap     1G
	Linux root        /dev/hda7   ext3     4G
	Alternate root    /dev/hda8   ext3     4G
	/mnt/home         /dev/hda9   ext3     5G 

Redhat hardware autodetection

	This works so well there is little left for you to figure out:

		Monitor:	TOS5082
		Graphics:	S3 Savage IX
		Firewire:	ohci1394
		USB:		usb-uhci
		Audio:		i810_audio
		Ethernet:	e100
		Wireless:	orinoco_cs 

	The contents of /etc/modules.conf created automatically:

		alias eth0 e100
		alias usb-controller usb-uhci
		alias ieee1394-controller ohci1394
		alias sound-slot-0 i810_audio
		post-install sound-slot-0 \
			/bin/aumix-minimal \
			-f /etc/.aumixrc -L >/dev/null 2>&1 || :
		pre-remove sound-slot-0 \
			/bin/aumix-minimal \
			-f /etc/.aumixrc -S >/dev/null 2>&1 || : 
			
	I have found that the usb-uhci occasionally locks up at
	boot time. The fix is using the "uhci" module instead of
	"usb-uhci", so I modify the line in /etc/modules.conf to read:
	
		alias usb-controller uhci 
		
	Other additions to /etc/modules.conf are discussed in
	later sections.

Boot configuration

Using Lilo, the only option I needed was lba32 because my linux boot partition is so far from the beginning of the disk. Grub probably has a similar option.

The kernel option "hdc=ide-scsi" makes the ATAPI cdrom look like a SCSI device. This is a good idea because cdrecord and many other CD-writing packages depend on this configuration. Here's the /etc/lilo.conf created by anaconda:

	prompt
	timeout=50
	default=Linux
	boot=/dev/hda
	map=/boot/map
	install=/boot/boot.b
	message=/boot/message
	lba32

	image=/boot/vmlinuz-2.4.20-6
		label=Linux
		initrd=/boot/initrd-2.4.20-6.img
		read-only
		append="hdc=ide-scsi root=LABEL=/1"

	other=/dev/hda1
		optional
		label=Windows 

XWindows configuration

The Anaconda installer will identify and configure the S3 Savage IX and the Tecra flat panel for X Windows.

Below you will find, for reference, a copy of the generated XF86Config.

Note that the keyboard bounce problem widely reported for this laptop has been fixed internally by this version of XFree. No special keyboard options are required.

Also note that both the internal PS/2 mouse and a USB mouse are configured. Either or both will work automatically.

XF86Config - Toshiba Tecra 9100 1024x768 display


	Section "ServerLayout"
		Identifier     "Default Layout"
		Screen      	0 "Screen0" 0 0
		InputDevice    "Mouse0" "CorePointer"
		InputDevice    "Keyboard0" "CoreKeyboard"
		InputDevice    "DevInputMice" "AlwaysCore"
	EndSection

	Section "Files"
		RgbPath      "/usr/X11R6/lib/X11/rgb"
		FontPath     "unix/:7100"
	EndSection
	
	Section "Module"
		Load  "dbe"
		Load  "extmod"
		Load  "fbdevhw"
		Load  "glx"
		Load  "record"
		Load  "freetype"
		Load  "type1"
		Load  "dri"
	EndSection
	
	Section "InputDevice"
		Identifier  "Keyboard0"
		Driver      "keyboard"
		Option	    "XkbRules" "xfree86"
		Option	    "XkbModel" "pc105"
		Option	    "XkbLayout" "us"
	EndSection
	
	Section "InputDevice"
		Identifier  "Mouse0"
		Driver      "mouse"
		Option	    "Protocol" "IMPS/2"
		Option	    "Device" "/dev/psaux"
		Option	    "ZAxisMapping" "4 5"
		Option	    "Emulate3Buttons" "no"
	EndSection
	
	Section "InputDevice"
		Identifier  "DevInputMice"
		Driver      "mouse"
		Option	    "Protocol" "IMPS/2"
		Option	    "Device" "/dev/input/mice"
		Option	    "ZAxisMapping" "4 5"
		Option	    "Emulate3Buttons" "no"
	EndSection
	
	Section "Monitor"
		Identifier   "Monitor0"
		VendorName   "Monitor Vendor"
		ModelName    "Toshiba TOS5082"
		DisplaySize  290	220
		HorizSync    31.0 - 48.0
		VertRefresh  50.0 - 70.0
		Option	    "dpms"
	EndSection
	
	Section "Device"
		Identifier  "Videocard0"
		Driver      "savage"
		VendorName  "Videocard vendor"
		BoardName   "S3 Savage/IX"
		VideoRam    8192
	EndSection
	
	Section "Screen"
		Identifier "Screen0"
		Device     "Videocard0"
		Monitor    "Monitor0"
		DefaultDepth     16
		SubSection "Display"
			Depth     16
			Modes    "1024x768" "800x600" "640x480"
		EndSubSection
	EndSection
	
	Section "DRI"
		Group        0
		Mode         0666
	EndSection 

Networking

Modules and interfaces

The 9100 has built-in ethernet and wireless (802.11b) devices. The ethernet is on the PCI bus and uses the e100 modular driver. The wireless network is a PCMCIA device that uses the modular orinoco_cs driver.

Even if you plan to use only one network device at at time, I strongly suggest that you configure the system so that both module sets are loaded and activated. Without this precaution, the configuration files may be associated with the wrong devices, depending on the order the modules get loaded.

If you are trying out this tutorial with a live machine, you may discover that Linux is already confused about the network configuration files. To fix this, bring down both networks and unload all the modules:

	ifdown eth0
	ifdown eth1
	rmmod orinoco_cs orinoco
	rmmod e100 

Now reload them in the order that would occur at boot time:

	modprobe e100
	modprobe orinoco_cs
	ifup eth0
	ifup eth1 

Helge Jensen reports that the following construct in the /etc/modules.conf will insure that the right module is always associated with the same interface. I haven't tried this, but it seems reasonable:

	alias eth0 e100
	alias eth1 orinoco_cs
	above orinoco_cs eth0 

He also solves the wireless/wired configuration problem described in the next section using a more automatic mechanism. See the Wired section of his page.

Configuration management

If you travel with your computer and connect to many different LANS, Redhat provides a mechanism to have multiple networking configurations with a nice GUI interface. Unfortunately, it does not deal well with modular devices that can be loaded out of order. If you decide to try out the GUI tools, be sure to keep both devices active in every configuration. You can always assign bogus unrouted network numbers to the unused device.

An alternative that I prefer, after trying every network configuration GUI that Redhat ever produced, is to keep a set of simple scripts. I have one bash script for each place I visit. The script shuts down both devices, rewrites the configuration files, and restarts both devices.

Here is an example script I used when switching to my home wireless lan. The wireless goes on the real 192.168.1.0 network. The ethernet goes on the bogus 192.168.3.0 network. If I move the computer, another almost identical script will switch to the ethernet, placing the wireless on the bogus network.

	#!/bin/bash
	# wireless - lan configuation at home

	# Bring down both interfaces 

        	ifdown eth0 &> /dev/null
        	ifdown eth1 &> /dev/null

	# Write configuration files

        	cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<-'EOF'
                	DEVICE=eth0
	               	TYPE=Ethernet
                	IPADDR=192.168.3.9
                	NETMASK=255.255.255.0
                	NOZEROCONF=yes
        	EOF	

		cat > /etc/sysconfig/network-scripts/ifcfg-eth1 <<-'EOF'
			DEVICE=eth1
			TYPE=Wireless
			IPADDR=192.168.1.9
			NETMASK=255.255.255.0
			MODE=Managed
			ESSID=WLAN
			KEY=23AC730D31
			RATE=Auto
			CHANNEL=1
			NOZEROCONF=yes
		EOF

	#  Gateway

		cat > /etc/sysconfig/network <<-'EOF'
			NETWORKING=yes
			HOSTNAME=sparks9k
			GATEWAY=192.168.1.2
		EOF

	# Name server 

		cat > /etc/resolv.conf <<-'EOF'
			nameserver 192.168.1.2
			domain csparks.com
		EOF

	# Bring up both interfaces

		ifup eth0
		ifup eth1 

Dealing with the WinModem

In the links section below you will find the home page of SmartLink. They provide everthing you need to get your Winmodem working for free. The driver compiles and installs perfectly with none of the hacking around reported on other Tecra/Winmodem sites. Unlink many of the nitwit hardware manufacturers, SmartLink also provices an effective make uninstall.

The only drawback with this nice driver is that your Linux kernel will be tainted by using propritary software. (It will remind you of this in the message log each time the modem driver is loaded.)

UPDATE: The most recent SmartLink driver, slmdm-2.7.14 has a serious bug that causes it to misdial numbers. I'm sure this will be corrected Real Soon Now(tm). In the mean time, you will find an earlier working version, slmdm-2.7.10 at the Linmodems site Older Smartlink drivers.

If you want to investigate alternatives, the modem is identified by lspci as an "Intel Corp. 82801CA/CAM AC'97 Modem (rev 02)".

Here is the section of /etc/modules.conf appended by the installer:

	alias char-major-212 slmodem
	alias slmodem slamrmo  

Firewire

The firewire works on disk devices with the included drivers. I tested this feature using the Windows version of the Apple iPod. The procedures outlined should be very similar for any firewire disk.

Load the firewire packet module:

	modprobe ieee1394 

Load the firewire card controller:

	modprobe ohci1394 

The ohci module will now recognize your disk as a SCSI device and automatically load the serial bus protocol (sbp2) module. The first scsi device is "/dev/sda", which will probably be the only scsi drive connected to your laptop.

If you need to see what's going on for debugging, do a tail -f /var/log/messages in another shell window before you load the modules.

The Windows version of the iPod has two vfat partitions. The second one has the music. To mount the second partition, we use device /dev/sda2. A mount point has already been created: /mnt/ipod.

Mount a paritition on the firewire disk:

	mount -t vfat /dev/sdb2 /mnt/ipod 

The device is now ready to use. Note that you should not simply pull the cord when you want to removed the device.

Removing a firewire disk:

	umount /mnt/ipod
	rmmod sbp2 

Remounting a firewire disk:

	modprobe sbp2
	mount -t vfat /dev/sdb2 /mnt/ipod 

Infared

Not yet...

Hardware identified by lspci

	00:00.0 Host bridge: 
		Intel Corp. 
		82845 845 (Brookdale) Chipset Host Bridge (rev 04)
	00:01.0 PCI bridge: 
		Intel Corp. 
		82845 845 (Brookdale) Chipset AGP Bridge (rev 04)
	00:1d.0 USB Controller: 
		Intel Corp. 
		82801CA/CAM USB (Hub #1) (rev 02)
	00:1d.1 USB Controller: 
		Intel Corp. 
		82801CA/CAM USB (Hub #2) (rev 02)
	00:1d.2 USB Controller: 
		Intel Corp. 
		82801CA/CAM USB (Hub #3) (rev 02)
	00:1e.0 PCI bridge: 
		Intel Corp. 
		82801BAM/CAM PCI Bridge (rev 42)
	00:1f.0 ISA bridge: 
		Intel Corp. 
		82801CAM ISA Bridge (LPC) (rev 02)
	00:1f.1 IDE interface: 
		Intel Corp. 
		82801CAM IDE U100 (rev 02)
	00:1f.5 Multimedia audio controller: 
		Intel Corp. 
		82801CA/CAM AC'97 Audio (rev 02)
	00:1f.6 Modem: 
		Intel Corp. 
		82801CA/CAM AC'97 Modem (rev 02)
	01:00.0 VGA compatible controller: 
		S3 Inc. 
		SuperSavage IX/C SDR (rev 05)
	02:07.0 FireWire (IEEE 1394): 
		Texas Instruments 
		TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)
	02:08.0 Ethernet controller: 
		Intel Corp. 
		82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller (rev 42)
	02:0a.0 CardBus bridge: 
		Texas Instruments 
		PCI1410 PC card Cardbus Controller (rev 01)
	02:0b.0 CardBus bridge: 
		Toshiba America Info Systems 
		ToPIC95 PCI to Cardbus Bridge with ZV Support (rev 32)
	02:0b.1 CardBus bridge: 
		Toshiba America Info Systems 
		ToPIC95 PCI to Cardbus Bridge with ZV Support (rev 32)
	02:0d.0 System peripheral: 
		Toshiba America Info Systems 
		SD TypA Controller (rev 03)
	

Comments and suggestions

To Hugh