Linux/FreeBSD on an IBM ThinkPad X22
The information on this page is largely obsolete, and is retained for historical reasons. I no longer use the ThinkPad or Linux, and cannot answer questions on this subject.
Red Hat Linux 7.2
A few notes from installing Red Hat Linux 7.2 on an IBM ThinkPad X22. The model used is 2662-9DU, which comes with Windows 2000, built in Ethernet, modem and 802.11 network connectionss.
- Resize the Windows 2000 partition, using partition magic 7. I resized it to 4 gigabytes, leaving space for a linux partition below the 1024 cylinder limit. Leave the hidden recovery partition intact.
- Install Red Hat 7.2 from CD:
- The X window system is detected correctly, but doesn't work by default. Select text mode login, not graphical, in the install program.
- Put the LILO bootblock on the Linux partition, not the MBR (we don't want to affect the custom IBM bootloader).
- Reboot into Windows 2000, and install bootpart, adding Linux to the Windows boot menu.
- Restart into Linux. X doesn't work, but can be fixed by adding VideoRam 8192 to the "Device" section of /etc/X11/XF86Config-4. Change the default runlevel in /etc/inittab to 5 if you want to enable graphical login.
- The built-in Ethernet in an Intel Pro/100 VE card. The kernel eepro100 driver works with it, alternatively there is a driver available from Intel.
- Edit /etc/sysconfig/apmd to unload sound modules on suspend. APM mostly works well, except that the clock occasionally gets scrambled on resume. Note that suspend using Fn+F4 doesn't work when the system is on mains power (it seems to give an APM standby event then, not suspend; use apm -s to suspend when running on mains power).
- APM hibernate doesn't seem to work.
- The built-in 802.11 is a Harris/Intersil Prism2.5 card. There is a driver available from www.linux-wlan.org but I found it unreliable (version 0.1.10 doesn't survive suspend, and causes a kernel "Oops" when it is unloaded; I'm told that version 0.1.13pre1 is much better). It is rumoured that a pre-release of the orinoco driver supports the card, but I haven't tested it yet.
- I haven't tried the built-in modem yet.
- Sound is recognised as i810 audio; haven't tested.
- Haven't tested IrDA
- PCMCIA and CompactFlash sockets work, both using the kernel PCMCIA driver.
I'm now running FreeBSD 4.9-STABLE on this laptop, and it works very well. Resize the partitions as above, install from the CD (leaving the master boot block untouched), and reboot into Windows 2000 to add FreeBSD to the Windows boot menu using bootpart.
The port of XFree86 4.3 works fine, just do "XFree86 -configure" to get a configuration file. The version of XFree86 4.3 that shipped with 4.8-RELEASE does not work properly: the system won't resume from suspend with it installed.
The built-in Ethernet, 802.11, USB, sound, and PCMCIA all work out of the box (you may need to add options PCI_ENABLE_IO_MODES to your kernel config to make sound work, and to access all the USB ports you will need to create /dev/usb1 and /dev/usb2 using MAKEDEV)). IrDA works using the port of birda.
The built-in modem does not work.
APM largely works, except for hibernation. Note that suspend using Fn+F4 doesn't work when the system is on mains power (it seems to give an APM standby event, rather than a suspend in this case: use zzz to suspend when running on mains power). I see occasional crashes when resuming from suspend.
The output of dmesg is:
Copyright (c) 1992-2002 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD 4.7-RC #0: Sat Sep 28 19:48:31 EDT 2002 firstname.lastname@example.org:/usr/obj/usr/src/sys/EXAMPLE Timecounter "i8254" frequency 1193182 Hz CPU: Pentium III/Pentium III Xeon/Celeron (797.35-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0x6b1 Stepping = 1 Features=0x383f9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE> real memory = 402063360 (392640K bytes) avail memory = 386830336 (377764K bytes) Preloaded elf kernel "kernel" at 0xc0402000. Preloaded userconfig_script "/boot/kernel.conf" at 0xc040209c. module_register_init: MOD_LOAD (vesa, c02d3c98, 0) error 6 Pentium Pro MTRR support enabled md0: Malloc disk Using $PIR table, 14 entries at 0xc00fdeb0 apm0: <APM BIOS> on motherboard apm: found APM BIOS v1.2, connected at v1.2 npx0: <math processor> on motherboard npx0: INT 16 interface pcib0: <Host to PCI bridge> on motherboard pci0: <PCI bus> on pcib0 agp0: <Intel 82830 host to AGP bridge> mem 0xd0000000-0xdfffffff at device 0.0 on pci0 pcib1: <PCI to PCI bridge (vendor=8086 device=3576)> at device 1.0 on pci0 pci1: <PCI bus> on pcib1 pci1: <ATI model 4c59 graphics accelerator> at 0.0 irq 11 uhci0: <Intel 82801CA/CAM (ICH3) USB controller USB-A> port 0x1800-0x181f irq 11 at device 29.0 on pci0 uhci0: LegSup = 0x0000003b usb0: <Intel 82801CA/CAM (ICH3) USB controller USB-A> on uhci0 usb0: USB revision 1.0 uhub0: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1 uhub0: 2 ports with 2 removable, self powered uhci1: <Intel 82801CA/CAM (ICH3) USB controller USB-B> port 0x1820-0x183f irq 11 at device 29.1 on pci0 uhci1: LegSup = 0x00000010 usb1: <Intel 82801CA/CAM (ICH3) USB controller USB-B> on uhci1 usb1: USB revision 1.0 uhub1: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1 uhub1: 2 ports with 2 removable, self powered uhci2: <Intel 82801CA/CAM (ICH3) USB controller USB-C> port 0x1840-0x185f irq 11 at device 29.2 on pci0 usb2: <Intel 82801CA/CAM (ICH3) USB controller USB-C> on uhci2 usb2: USB revision 1.0 uhub2: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1 uhub2: 2 ports with 2 removable, self powered pcib2: <PCI to PCI bridge (vendor=8086 device=2448)> at device 30.0 on pci0 pci2: <PCI bus> on pcib2 pcic0: <Ricoh RL5C476 PCI-CardBus Bridge> mem 0x50000000-0x50000fff irq 11 at device 3.0 on pci2 pccard0: <PC Card 16-bit bus (classic)> on pcic0 pcic1: <Ricoh RL5C476 PCI-CardBus Bridge> mem 0x50100000-0x50100fff irq 5 at device 3.1 on pci2 pccard1: <PC Card 16-bit bus (classic)> on pcic1 wi0: <Intersil Prism2.5> mem 0xf0000000-0xf0000fff irq 11 at device 5.0 on pci2 wi0: 802.11 address: 00:20:e0:89:cb:be wi0: using RF:PRISM2.5 MAC:ISL3874A(Mini-PCI) wi0: Intersil Firmware: Primary 1.00.05, Station 1.03.03 fxp0: <Intel Pro/100 Ethernet> port 0x8000-0x803f mem 0xc0200000-0xc0200fff irq 11 at device 8.0 on pci2 fxp0: Ethernet address 00:d0:59:84:17:fc inphy0: <i82562ET 10/100 media interface> on miibus0 inphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto isab0: <PCI to ISA bridge (vendor=8086 device=248c)> at device 31.0 on pci0 isa0: <ISA bus> on isab0 atapci0: <Intel ICH3 ATA100 controller> port 0x1860-0x186f,0x374-0x377,0x170-0x177,0x3f4-0x3f7,0x1f0-0x1f7 at device 31.1 on pci0 ata0: at 0x1f0 irq 14 on atapci0 ata1: at 0x170 irq 15 on atapci0 ichsmb0: <Intel 82801CA (ICH3) SMBus controller> port 0x1880-0x189f irq 5 at device 31.3 on pci0 smbus0: <System Management Bus> on ichsmb0 smb0: <SMBus general purpose I/O> on smbus0 pcm0: <Intel 82801CA (ICH3)> port 0x18c0-0x18ff,0x1c00-0x1cff irq 5 at device 31.5 on pci0 pci0: <unknown card> (vendor=0x8086, dev=0x2486) at 31.6 irq 5 isa0: too many memory ranges orm0: <Option ROMs> at iomem 0xc0000-0xcbfff,0xcc000-0xccfff,0xcd000-0xcdfff,0xdc000-0xdffff,0xe0000-0xeffff on isa0 fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0 fdc0: FIFO enabled, 8 bytes threshold fd0: <1440-KB 3.5" drive> on fdc0 drive 0 atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0 atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0 kbd0 at atkbd0 psm0: <PS/2 Mouse> irq 12 on atkbdc0 psm0: model Generic PS/2 mouse, device ID 0 vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0 sc0: <System console> at flags 0x100 on isa0 sc0: VGA <16 virtual consoles, flags=0x300> sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0 sio0: type 16550A sio1 at port 0x2f8-0x2ff irq 3 on isa0 sio1: type 16550A ppc0: <Parallel port> at port 0x278-0x27f irq 7 on isa0 ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode ppc0: FIFO with 16/16/8 bytes threshold lpt0: <Printer> on ppbus0 lpt0: Interrupt-driven port ppi0: <Parallel I/O> on ppbus0 unknown: <PNP0c01> can't assign resources unknown: <PNP0000> can't assign resources unknown: <PNP0303> can't assign resources unknown: <PNP0c02> can't assign resources unknown: <PNP0680> can't assign resources unknown: <IBM3780> can't assign resources unknown: <PNP0501> can't assign resources unknown: <IBM0071> can't assign resources unknown: <PNP0700> can't assign resources unknown: <PNP0401> can't assign resources ad0: 19077MB <IC25N020ATDA04-0> [41344/15/63] at ata0-master UDMA100