Upgrading a Linux Laptop: Days and Days of Fun
Dave Aiello wrote, "I bet everyone is wondering what happened to cause us not to post anything to the story flow on ctdata.com for almost two weeks. Over the holidays, I decided to upgrade the 12 gigabyte primary hard disk on my Dell Inspiron 7500 to a 25 gigabyte model."
"Had I originally opted for a laptop running Windows 98, 2000, or NT 4.0, this would have been easy. But, I was planning to upgrade the primary hard drive on a system that was, at the time, running Red Hat Linux Version 6.1. This turned out to be a large project."
"I learned a lot in the process, but I wonder how much of the work I did will actually turn out to be expertise that will benefit CTDATA clients."
Dave Aiello continued:
Products Available for Windows that Would Make Laptop Upgrades a Snap
Windows laptop users have a few very good tools at their disposal to upsize the boot drives of their laptops. For example, Apricorn makes a product called EZ-GIG. EZ-GIG is a combination of new hard drive, software, PC card, and transfer cable which automates the process of cloning the data from the old hard drive.
Dell would have sold a 25 gigabyte hard drive to me with the EZ-GIG apparatus. The problem is that the EZ-GIG software does not understand how to deal with native Linux file systems. The vendor acknowledges this, but they do not think that the market justifies the R&D necessary to make EZ-GIG compatible. Software like this is vital to any effort to make Linux a mass-market operating system, but no one ever thinks of this when they discuss what is required for Linux to be true alternative to Windows.
The Approach I Chose: Backup Key Files and Rebuild
The alternative to using EZ-GIG, of course, is to back up the irreplaceable files on the laptop, and rebuild the system from the ground up. After considering a few other options, this is what I chose to do.
On the other hand, rebuilding from the ground up had a number of advantages:
- New version of Linux
This gave me the opportunity to move from RedHat Linux 6.1 to 6.2, the most stable, production-quality release of RedHat Linux.
- New version of XFree86
With the RedHat 6.2 upgrade, I got an updated version of XFree86, the OpenSource X-Windows toolset that most Linux users have installed. The version I upgraded to is more compatible with VMware Workstation, the product I run to create virtual Windows sessions for those applications that have no Linux equivalents.
- New version of VMware
I was also able to upgrade my installation of VMware. After the installation was done, I was finally able to run virtual machines with SVGA resolutions of 1024 x 768 x 16 bit color depth on the full screen. This was impractical under RedHat 6.1.
Linux Disk Partitioning
Every time I make a major configuration change under Linux, I seem to find an aspect of the configuration that I did not understand. This time, the stumbling block was disk partitioning. Legacy BIOS compatibility dictates that a hard drive be limited to four primary disk partitions. It turns out that the PC industry saw this as a stumbling block years ago, and came up with the concept of "extended partitions". These are physical partitions that serve as containers for virtual partitions within them.
Without going into how experienced Linux users recommended I partition my new 25 gigabyte hard drive, I learned over a man day that I could not configure the drive without using extended partitions. The issue then became exactly how to create these partitions.
The Linux administration and installation books that I have generally assume one of three things:
- You are building a Linux machine out of a repurposed Windows PC.
- You are carving out a space for Linux from within an existing Windows PC.
- Your machine is already configured and running a popular distribution in the base configuration.
Needless to say, none of these scenarios applied to me.
I started searching around the Web for partitioning information. A lot of what I found was how big to make partitions. That's useful, I guess, but no two sources agree on how big the partitions should be for a given application. Nor do many authors and administrators agree on which portions of the file system actually deserve their own partitions. In this vein, perhaps the best on-line documentation is the Linux Documentation Project, Creating Partitions for Linux. But, again, nothing there about the tools to create the partitions, and some referenced documents apparently missing.
A missed opportunity in the LDP is the Upgrade Your linux Distribution mini-HOWTO. This is a document that looks valuable in hindsight. The problem is it's just an outline.
Wouldn't it be nice if we all knew what to search for and where to search before we solve our problems? Now that I'm done partitioning my new hard drive, I found the Large Disk HOWTO. This looks like the most useful of any single document for my purposes. However, it didn't appear in my hundred different attempts to find "the answer" using Google.
For those of you who desperately searching for a solution and don't have time to read the referenced documentation, the technique that finally ended up working for me was:
- Use fdisk or cfdisk to create a /boot and swap partition. Don't make the mistake of creating a single swap partition that is as large as your RAM-- swap partitions over 128M appear to be underutilized.
- Use fdisk or cfdisk to create a third primary partition. This partition should be of the extended type, so it can contain the other partitions that you plan to create for your Linux file system.
- Create the rest of your partitions inside the extended partition.
- Map the partitions to mount points using a tool like Disk Druid (included with RedHat).
Please note that this approach is only appropriate for laptops with a single hard drive that are running Linux exclusively. YMMV.
PC Card Services and the 3Com 3CCFE575CT NIC
A problem that has bothered me in three Linux laptop installations is PC Card Services. Each time I have installed RedHat on an Inspiron 7500 with a 3Com 3CCFE575CT, I have had to upgrade the pcmcia-cs driver set. In case you did not know, pcmcia-cs encapsulates Linux PCMCIA Card Services.
I was lead to believe that the reason I had to upgrade pcmcia-cs in the first two cases was that I was trying to run RedHat 6.1, which does not have very good support for PC Card Services out-of-the-box. But, when I upgraded to RedHat 6.2, I found that the 3Com 3CCFE575CT did not work initially either. I do not know if this means that RedHat 6.2 also does not have great support for PC Card Services, or if my installation procedure is flawed in a way that causes the NIC to fail to be activated automatically.
An Inexplicable Video Configuration Glitch
The Dell Inspiron 7500 I was upgrading had been shipped with RedHat 6.1 installed. One of the nice things about the way Dell did it was that they included in a 15 page pamphlet in the documentation called Additional Information for RedHat Linux 6.1. (I'd like to point to it on Dell's Web Site, but I can't find it.) Pages 8-15 of that document discuss reinstallation of Linux from the RedHat distribution CD that was included with the laptop when it shipped.
My upgrade plan was to install the new hard drive, partition it according to these instructions, and then install RedHat 6.2 instead of 6.1. This process eventually worked in every respect except for the text mode display settings called for in the Dell RedHat documentation.
The relevant portion of the documentation says:
Login as root and then do the following:
- Edit the /etc/lilo.conf file by adding vga=791 to the top of the file and then save.
- Run the lilo command.
The following message appears:
Added linux #
- Reboot the system.
You can run the reboot or init 6 commands or press
to reboot your system
Your system should boot to Linux from the hard-disk drive. A picture of Tux the penguin appears on the top left of your screen, indicating that the vga line was inserted and that lilo installed correctly.
The procedure listed above works fine in RedHat 6.1, but not in 6.2. I have no idea why. The problem I witnessed in 6.2 is that the display goes black immediately after passing the LILO: prompt.
The backed out of the configuration problem by doing the following:
- Boot using the boot floppy created during the RedHat installation process.
- Remove the vga=791 line from lilo.conf.
- Re-run lilo.
The interesting part of this problem is that not having vga=791 on this system results in lower resolution in the text mode, but no apparent effect on X Windows. So, I consider a workaround to improve text mode display resolution to be a "nice to have".