The purpose of this document is to offer tips to help you through the destruction and reinstallation of a linux system. It's not a foolproof cookbook by any means, but I hope it will serve as some indication of what you need to think about, and of the order in which to do things. It would have been a help to me, if someone else had written something like this before I did my first upgrade; so I hope it will be a help to you, if you have a linux machine to rebuild.
Don't take it as gospel, though: your mileage will almost certainly vary. Even the directory names in this document may be different from the ones you need to use; some people have /usr/home instead of /home, for example; others call it /u, and some (delicate shudder :) even put all their users directly under /usr itself! I can't be specific about your system, so I've just used the names the way they are in mine.
You'll also notice that I use Slackware distributions, and that I assume you've enough RAM and hard disk space to install linux kernel source and build your own kernel. If your system is different, some of my recommendations won't apply; but I hope you'll still find the general outline to be of assistance in your rebuild project.
Good question! If it can possibly be avoided, don't do it! (That's the single most important recommendation in this whole guide!!!) When this guide was first written, not many people had hard disks big enough to accomodate two whole Linux installations; these days, that's by no means uncommon. If you possibly can, build your new system in a separate partition (or group of partitions), keeping the old one intact till you're satisfied that the new one is just the way you want it. If you can avoid destroying the old system to make room for the new, by all means avoid it! But there are times when you may have no choice.
(These examples are a bit dated, but they serve to illustrate my point:)
For example, I installed a 4Gb hard disk and then found out that Slackware 2.0 vintage linux didn't know a hard disk could have more than 2Gb, and it got horribly confused. So I had to upgrade to the then-current Slackware 2.3. That upgrade was a gruelling experience, and it's part of the reason I'm writing these notes. I did just about everything wrong, and only good luck and the fact that I had another running linux box beside me saved me from disaster.
As another example, I found that I just couldn't succeed in building a working a.out linux kernel in the 1.3 series, using an out-of-the-box Slackware 2.3 installation (another machine, not the one I botched before). I took the plunge, bought Slackware 3.0 on CDROM and converted to ELF. This time the reinstallation went better, thanks in part to the previous bitter experience, and it served as the source of most of the ideas I'm offering you here.
See above. If you can build your new system in otherwise empty disk space, do it! For the rest of this document, however, I'll assume that this is one of those times when that option isn't available; you either have to reinstall "in place," over top of the existing system, or you have to bite the bullet and rebuild from scratch.
The latter is safer, oddly enough. If you install over top of an existing linux system, chances are you'll have a mixture of old and new binaries, old and new configuration files, and generally a mess to try to administer. Wiping the system clean, and then putting back only what you know you need, is a drastic but effective way to get a clean result. (Of course we're talking about installing a whole new linux distribution here, not about upgrading one or two packages! The best way to avoid having to do a full reinstallation is, precisely, to keep the individual bits -- especially gcc and its libraries, and binutils -- current. If the stuff you use is reasonably up-to-date, and you can keep it so by bringing in, and if need be compiling, new code from time to time, then there's no need for a mass upgrade.)
Depends, of course, on how complex your system is. But I figure that, for the successful upgrade (the other one? -- don't ask! :) I spent about ten hours making backups, six hours rebuilding the system to the point where I could enable logins, and another half day or thereabouts restoring the less-crucial stuff. As time passes I keep discovering little things that still aren't exactly as I want them -- I fix these as they're encountered -- but in the main, twenty hours' work should suffice for a reasonably complex rebuilding job. Maybe less if you're reinstalling from hard disk (I used CDROM) or more if you need to install from floppies. Maybe less if you've got a fast Pentium, more if it's a 386. You get the idea.
Those were the bad old days. Now, with faster disks and faster machines and CD writers, things go better. My notebook was stolen in December, 2002, and when the new one came, I was up and pretty near complete -- despite having lost the old system without the chance to save the latest changes -- after about seven hours of effort.
So much for the introduction. Here's how to set about it, once you've decided it must be done. Arm yourself with fortitude and Jolt or whatever, and: