Installing Ubuntu on a ThinkPad 750P
The goal: A modern Linux on an old machine. The result: Success! Well, moderate success, and hopefully more tweaks to come to get it as good as it can be. I have a 750P but the steps here apply to any 750 series machine. If we ever get the X Window System working, let's call out special varietal sections if needed (he said, suspecting he's the only loon who would even try to use a machine this old any more).
The alleged absolute minimum requirements for Ubuntu as of today (December 22, 2007) are a 486 CPU with floating point, 32MB RAM and around 400MB of disk. The 750 series has 4MB RAM built in and you'll need a 32MB IC DRAM card, which are getting rare. The 750 can natively handle hard drives up to 8GB in size, and will work with larger drives as long as your boot partition is in that first 8GB. I happen to have a 5GB drive with one partition for Debian Woody, a small swap partition and one for Ubuntu. I'll be using Ubuntu Dapper Drake, since it's the latest LTS (long term support) version, and it also happens to work on this machine.
You will also need a PCMCIA network card that is supported by the Ubuntu installer. I happen to have a LinkSys PCMPC100, but many cards are supported. You'll need access to the Internet, and a DHCP server (such as in an external router) will be handy.
Readers, please make corrections here directly, or add them to the discussion tab, along with comments or suggestions for improvement, and especially success stories. I'd really like more that just one person's experience here.
There are some major hurdles to clear just to get the installer to run.
- The 750 will only boot from the floppy drive or its hard drive. It appears it could boot from a network card, if it's a special IBM network card, but I don't have one.
- Ubuntu is meant to be run from CD.
- The netboot files for Feisty (7.04) and Gutsy (7.10) crash on this machine.
Fortunately there are ways to surmount the obstacles.
- Ubuntu provides a netboot installer which requires only two files that total less than 10MB, so they can fit on a few floppies.
- You can install other OSes easily with just the floppy drive.
- The netboot files for Dapper Drake (6.06 LTS) and Edgy Eft (6.10) do work on this machine.
I tried two ways to install Ubuntu. First, I took the example of the thisiscool.com fcfloppy package that takes the Fedora Core netboot and packages that onto floppies. I made a set for Gutsy, but that crashes. It should work for Edgy, but I haven't made those diskettes, and I don't want to make and distribute them because I'd have to distribute source. If we can get them hosted at the Ubuntu wiki, that would be great, and I will gladly provide my scripts.
The second way I actually finished was to first install Woody (see my guide on ThinkWiki), then downloaded the netboot files for Dapper, and used Lilo to load them and start the installer.
Since this is my first Ubuntu install that required more than clicking next, I'm going to go into detail. The process takes at least 9 hours, but you don't have to babysit it the whole time. The machine will appear to lock up for periods of time, but it is working. Look at consoles 3 and 4 now and then to see interesting messages pass by during the installation.
I started with Debian Woody. It could be done with DOS (see www.freedos.org) and I'll go into that in a little bit. You'll need a partition for the new Ubuntu installation and one for swap if you don't have one. Multiple versions of Linux can use the same swap partition.
Download the Dapper Drake netboot files. These commands do the job:
wget http://archive.ubuntu.com/ubuntu/dists/dapper/main/installer-i386/current/images/netboot/ubuntu-installer/i386/linux wget http://archive.ubuntu.com/ubuntu/dists/dapper/main/installer-i386/current/images/netboot/ubuntu-installer/i386/initrd.gz
Edit /etc/lilo.conf to include these new files. My new section looks like this:
image=/root/linux label=dapmini read-only initrd=/root/initrd.gz optional
Run lilo and reboot. Select dapmini from your boot menu, add the kernel parameter floppy=thinkpad atkbd.reset and the installer will begin.
This also works with other versions of Linux, including those that use Grub instead of Lilo. There are pages in the Ubuntu Wiki on just how to make that happen.
If you have DOS on a floppy or the hard drive, here's another way to run the installer.
- Load a ramdisk driver.
- Get linld097.com. It's based on linload but works with larger newer Linux kernels.
- Get the linux and initrd.gz files onto the ramdisk.
- Run linld097 image=linux initrd=initrd.gz floppy=thinkpad atkbd.reset
There are a few ways to get those files onto the ramdisk.
- You could make a zip file on another machine, split it across floppies and put them together again (copy /b a + /b b + /b c file.zip should work) and use a zip file extractor.
- You could use a LapLink cable to transfer the files.
- You could get your network card working to copy the files.
- You could use some kind of card reader. I think CF cards might work, but I couldn't get my PCMCIA SD card reader to work.
I think the only way to get Ubuntu to install on a clean hard drive would be to start with DOS on a floppy diskette along with a way to get the netboot started.
- You are alerted that your machine has little memory and that setup with proceed in English.
- Select your country.
- Select your keyboard layout. "American English" was my choice.
- Network hardware is detected. Your PCCard NIC should light up here.
- Configure the network - select a hostname
- Choose a mirror country
- Choose a mirror site. The site is checked. There is a delay.
- Select installer components. I am not an Ubuntu expert, so I could use some help making this list smaller, but here are the components I selected. It's possible that none of them are required. You may want other modules, or to remove some of the ones I chose. After your selection, the required components and the ones you select get downloaded.
- There is a hardware detection phase.
- On the partition disks screen, you can repartition your disk as you see fit. One partition must be mounted as "/" or the root partition. You should also make a swap partition since it will perform better than a swap file (and I don't know how to set up a swap file on Linux).
- Verify your choices and write the changes to disk. The partitions will be formatted.
- Select your time zone. Setting up the clock appears and takes too long.
- Choose whether or not to set your clock to UTC.
- Set up a user.
Installation of the base system begins. Packages are retrieved, verified and installed. Now is a good time to get some sleep, as this step takes six hours or more.
- Select whether to install the Grub boot loader onto the master boot record of the hard disk. If all other installed operating systems are automatically discovered, it suggests you do.
Grub and another package or two are installed, followed by the final installation steps. When it's done, it asks you to reboot, but it sneaks in a few more quick configurations before doing it. Installation is done, but we have a few more things to do.
Interrupt the countdown and edit the commands for the default (first) menu item. The default kernel options are ro quiet. Add floppy=thinkpad acpi=off atkbd.reset. I also like to remove quiet to see more progress during the long boot. Press b to boot with these commands. The system will boot and eventually give you a login prompt. If messages appear after the prompt, just press enter to get a new one. Unfortunately, these changes will not be saved. Edit /boot/grub/menu.lst (using sudo), find the line that starts # kopt= and add the same parameters to that line. Run sudo grub-update to get those options onto the Ubuntu booting lines. You may have to edit the file again, as the defoptions get changed automatically.
Useful Kernel Parameters
- floppy=thinkpad This ensures the floppy drive works by letting the driver know this is a very old floppy drive that has the disk changed status bit polarity reversed. Without it, the system gets confused about when a diskette has been removed.
- acpi=off ACPI is the newer power management standard. This machine doesn't have it. Disabling it saves some time.
- atkbd.reset This resets the keyboard after boot. There might be a gentler way to get that to happen.
- idebus=33 The kernel defaults to thinking the IDE bus is running at 50MHz. I believe it is running at 33MHz in this system (except perhaps the 750CE).
- Please add others here.
You may have noticed that your network card isn't lit up and that messages appeared regarding PCMCIA not being enabled or installed. Let's fix that.
sudo modprobe i82365
That command loads the driver for the PCMCIA controller, which in turn loads the generic PCMCIA drivers. Your network card should then be noticed, its driver should automatically load, and your network card should be enabled and configured. To get that to happen automatically at boot, add i82365 to the end of /etc/modules.
Your machine will now automatically start with a working keyboard and network, which can be really handy.
This section details how to get each device on the 750 family working with Ubuntu.
If you've followed along, these devices are already working.
- Text console
- Hard drive
- Floppy drive
- PCMCIA controller
Here are steps to take to get each of the following devices to work.
These devices have not been tested.
- Serial port
- Parallel port
- Graphical display (X Window System)
- Pen interface (750P only)
These devices have been found not to work, and no one has documented how to get them to work.
- Function keys
- F2 - Battery status
- F3 - Turn off display
- F4 - Suspend to memory
- F5 - Volume down
- F6 - Volume up
- F7 - Display output
- F8 - Invert display
- F9 - Toggle intensity
- F11 - Power mode
- F12 - Suspend to disk (hibernate)