17 January 2009

Slackware Linux and baroque partitioning

I like Linux. For my computers I especially like Slackware Linux. I have also used Puppy Linux, PCLinuxOS (from 0.92), Ubuntu (from 5.10), OpenSuSE (10.1 and 10.2), and Ututo/Gentoo (with paludis). I wandered a bit before settling on Slackware.

I learned a lot while wandering, and I concluded that to become comfortable in Linux requires a fast internet connection and the option of trying different flavors. To have Windows or a Mac OS to fall back on is also helpful.

Here is the problem: simply installing Linux requires . . . experimentation. Becoming a proficient user needs even more research and more trial-and-error. A bumpy installation can be terribly demoralizing, and a naive partitioning scheme complicates trying anything new.

So, I can only recommend a new plunge Linux to two people:

  1. The victim of a Linux zealot, who will watch as said zealot performs the installation and setup
  2. The patient tinkerer with a fast connection for the main computer and an extra deskop box to try Linux
Anyone else ought at least to read the rest of this post, but you have been warned.

Slackware Linux is somewhat daunting to install. The process is aggressively text-only, and the hard drive must be partitioned (with fdisk or cfdisk) before running the setup script. To make up for these minor challenges, the Slackware installer provides more control and transparency than Ubuntu or OpenSuSE. I easily installed Slackware 12.2 onto a Pentium IV with 512 MB memory that resisted the other two distributions.

Two issues complicated the last few times I've installed Linux (Slackware or Ubuntu) for people: one because of Windows, and another related (I think) to the manufacturers of the computers.

First, impatient users get into the habit of shutting down Windows "the hard way," by holding the power button. Windows duly flags the native NTFS file system on the hard disk, and repartitioning programs then choke. The solution to this problem is to reboot Windows and shutdown nicely, and perhaps to run CHKDSK if prompted.

The second issue is related to Windows, but has more to do with manufacturers' "Recovery" partitions, which are usually invisible to Windows. I do not understand how these work, so I never mess with them. However, installing a new operating system requires new partitions, and there are constraints on where those partitions can go. For example, Windows XP must be on a primary partition on the main boot device, and only three primary partitions are allowed on each physical disk.

The point is that the presence or absence of a recovery partition affects where everything else will go, and graphical partitioners are not the most reliable. I have tried to write a serious set of rules for partitioning the way I like it, but some guidelines are the best I can do:

  • On machines that also run Windows, put a medium-large partition for data right after the Windows partition - I format this partition FAT32 (vfat), and usually mount it at /data on the Linux side with the options user,users,rw. Users can read from or write to this partition from any OS. It's not very secure, but extremely helpful while switching from Windows to Linux. If you require more security, encrypt the partition with Truecrypt
  • The entire Linux installation on one partition is the simplest solution, but not the best - Simplify future upgrades or reinstallations by partitioning intelligently
  • In general, I like to format partitions as JFS - No deep reasons. The performance of JFS, XFS, and ReiserFS are all excellent (I'm told), but ReiserFS has an uncertain future, and XFS seems slighly less reliable than JFS.
  • Always put /home on its own partition, or as a symlink to /usr/local/home -
  • Make separate partitions for / and /usr/local - Upgrades are then much easier
  • 10 GB is plenty for the / partition, and 20 GB can fit the kitchen sink - This computer (no KDE, GNOME, or Xfce) uses less than 4 GB of 5.5 GB on the / partition. For my parents, I barely filled 10 GB with all of Slackware 12.1 and all of GnomeSlackBuild
  • If the hard disk is truly gigantic, you might as well keep /home and /usr/local on separate partitions
  • Make /usr/src and /opt symlinks to /usr/local/src and /usr/local/opt - As ever, for easier upgrades and reinstallations without losing data or compiled programs
  • Make /boot a separate partition of 50-100 MB - For extra security, format this partition ext2 and put the option noauto in the /etc/fstab file
  • Modern computers probably require no swap partition, but put one next to a partition like / or /usr/local, so you can delete it and expand into it if desired
  • Servers probably deserve separate /tmp and /var partitions - Perhaps of 100-1000 MB is size, and also for security reasons, but I have not worked seriously on a server

I have rarely partitioned two disks the same way, and I am often uncomfortable recommending Linux as a result. Generic solutions break and are difficult to upgrade; complicated schemes are painful to explain to a new user. Unless you are vert patient or willing to get a lot of help, Linux is probably not worth it.


Post a Comment

<< Home