Escape from Windows 98

There’ve been a few times that I’ve met someone who was stuck in an old Windows 98 PC because it had all their software and data on it, it was set up the way they liked it, they may or may not have all the installation media, and it would take several days’ worth of labor to set up a new one like the old one.

So usually in that situation I just bubblegum and duct tape the system together as best I can.

No longer. Not now that I’ve discovered PC Mover.PC Mover is a Laplink product. It’s really pretty simple. Set up the old PC and new PC on the same network (ideally the new PC should be as pristine as possible), install and run PC Mover on the new PC and follow the prompts. Eventually it will tell you to install and run it on the old PC. Follow the prompts there, and it will do its very best to move all of the programs and data to the new PC.

I literally set up Mom’s old Windows 98 PC and her new(er) Compaq Evo D51C (running Windows XP), set the options, watched for 30 minutes, then went out and spent an hour mowing the lawn. About 15 minutes after I came back inside, it was finished. Now that I think about it, I’m pretty sure her Windows 98 PC only has a 10-megabit NIC in it, so under what I would consider reasonable conditions, the migration would have been faster.

Now I wish I’d thought to change the NIC out.

But at any rate, at the end of the process, I rebooted the new computer and it came up looking just like her old PC. Her desktop looked the same, all her data was in the right place, and her old programs ran.

System-level stuff like antivirus and CD burning software won’t transfer, but that’s not PC Mover’s fault. Utility software is usually very OS-specific, and if I manually tried to install the Windows 98 version of Norton Antivirus in Windows XP, it would tell me to get lost. She can install her scanner, and XP will detect her printer and take care of setting that up for her.

When I ran PC Mover, I selected the advanced options and deliberately de-selected stuff I knew she wouldn’t need, in order to speed up the transfer and lessen the likelihood of something going wrong. But I’d be reasonably comfortable just letting it run on autopilot.

The resulting system does have some unneeded cruft on it, but I can live with that. Windows XP is worlds better than Windows 98 ever was, and this Compaq is newer and probably better than her old computer too. Maybe running CCleaner would help with the junk, but for now I’m just going to leave well enough alone.

PC Mover costs about 40 bucks, but I think it’s worth it. The last time I worked on someone else’s PC, I charged $50 an hour (which is probably too little, considering what a lawnmower mechanic or plumber charges). It would probably have taken me 4-6 hours to do what PC Mover did in two, and that’s assuming I would have been able to locate all of the old installation media.

Whether you need to move data and programs to a new PC running XP or Vista for yourself or for someone else, I think PC Mover can make the job a lot easier for you. It worked so well for Mom’s PCs, I’m thinking I ought to use it to migrate a couple of old PCs I’ve been keeping around to newer hardware.

How I became interested in system optimization

I’ve talked system optimization a lot over the past week. I think I’m done for now, so I’ll talk about why you would want to do these things, and how I got interested in it.My first computer was a Commodore 64. With Commodores, all optimization was software. The hardware was all finely tuned and the timing was precise, so you couldn’t just ramp up the clock speed of the CPU to make the system go faster. But there were lots of things you could do in software to do things like improve the speed of the disk drive.

I moved to an Amiga in the early 1990s and I became interested in a project called ARP, short for AmigaDOS Replacement Project. The Amiga had a command line, and its command line tools were mostly ports of old tools from an obsolete operating system called Tripos, written in BCPL, a predecessor of C. ARP tools were written in either C or 68K assembler and gave the functionality of the originals, but they were smaller, so they loaded and ran faster. I always looked for ways to make my Amiga run faster and use less memory.

In 1994 I took a job selling PCs. My boss talked about how his 16 MHz 386sx felt more responsive than the 33 MHz 486s we sold so many of. So I started learning about PC optimization too. There was a lot you could do just in software.

So I’ve remained interested in this idea for probably 20 years.

Just this week I put an old Windows ME box through the regimen, and it’s definitely a lot peppier now.

I talked about registry optimization and file cleanup, defragmentation, antivirus, firewalls, and defragmentation again.

Do these things, and in most cases you can squeeze at least an extra year out of the life of a system. I squeeze more like five.

I rebuilt a Dell Dimension 4100 last night

So, I rebuilt a Dell Dimension 4100 last night. I didn’t make any hardware changes other than replacing the Western Digital hard drive inside, which was on its last legs.

Along the way, I learned a few things.I won’t say much about the WD drive except to say it’s the most recent in a long line of bad experiences I’ve had with the brand. I don’t know anything about current WD drives. But this one was loud and shrill, Windows bluescreened when I tried to install to it, and when I tried to run SpinRite on it, it said it would take 140 hours to test. A drive that size (20GB) should take 8-10.

In its defense, that drive was five years old. But I replaced it with a Maxtor drive that’s almost eight years old. SpinRite processed that Maxtor in 3 hours and found nothing worth commenting about. (Just because SpinRite didn’t say anything doesn’t necessarily mean it didn’t do anything.)

The Dell Dimension 4100 does have a proprietary power supply (although it looks like an ATX). If you work on Dells, I suggest bookmarking PC Power and Cooling’s Dell cheatsheet. PCP&C power supplies are expensive, but they are reliable, and their prices are comparable to what Dell would charge for a replacement and they are higher quality than what you would get from Dell–assuming Dell will even sell you the part (they’re in the business of selling computers, not parts). I believe newer Dells use standard power supplies.

If you buy a Micron, you can punch in a serial number and get drivers for the machine. With a Dell, you just get guesses based on the options that were available for the machine.

Download the chipset drivers and other low-level stuff from Dell’s support site. Windows 2000 didn’t completely recognize the system’s Intel i815 chipset and I get better performance afterward.

Nlite offers a lot of promise–automating the Windows install, removing components, etc.–but I had trouble getting it to work with the OS recovery CDs I had. I didn’t have enough time (or blank CDs) to figure out how to get it to work for me. I’m sure it works better with a plain old Windows 2000 Workstation CD, but of course I can’t find mine. But if you have a CD that works with it, it’s nice even if you don’t remove the stuff Microsoft doesn’t let you remove, since it provides a nice interface for slipstreaming service packs and hotfixes and removing all of the prompts during installation.

The tricks in Windows 2000 with 32MB of RAM work pretty nicely, even when you have more than 32 megs. Of course, if you’re ruthless with Nlite and can get it to work for you, you probably don’t need that bag of tricks.

I didn’t try to install it without Internet Explorer. I’d love to try that sometime but I didn’t have time for that. At least disabling Active Desktop (see the link in the paragraph above) gives most of the benefit you would get from smiting IE.

The quality of the Dell hardware is reasonable. It didn’t floor me, but I didn’t see anything that made me cry either.

If I had my own Linux distribution

I found an interesting editorial called If I had my own Linux Distro. He’s got some good ideas but I wish he’d known what he was talking about on some others.
He says it should be based on FreeBSD because it boots faster than Linux. I thought everyone knew that Unix boot time has very little to do with the kernel? A kernel will boot more slowly if it’s trying to detect too much hardware, but the big factor in boot time is init, not the kernel. BSD’s init is much faster than SysV-style init. Linux distros that use BSD-style inits (Slackware, and optionally, Debian, and, as far as I understand, Gentoo) boot much faster than systems that use a traditional System V-style init. I recently converted a Debian box to use runit, and the decrease in boot time and increase in available memory at boot was noticeable. Unfortunately now the system doesn’t shut down properly. But it proves the concept.

He talks about installing every possible library to eliminate dependency problems. Better idea: Scrap RPM and use apt (like Debian and its derivatives) or a ports-style system like Gentoo. The only time I’ve seen dependency issues crop up in Debian was on a system that had an out of date glibc installed, in which case you solve the issue by either keeping the distribution up to date, or updating glibc prior to installing the package that fails. These problems are exceedingly rare, by the way. In systems like Gentoo, they don’t happen because the installation script downloads and compiles everything necessary.

Debian’s and Gentoo’s solution is far more elegant than his proposal: Installing everything possible isn’t going to solve your issue when glibc is the problem. Blindly replacing glibc was a problem in the past. The problems that caused that are hopefully solved now, but they’re beyond the control of any single distribution, and given the choice between having a new install stomp on glibc and break something old or an error message, I’ll take the error message. Especially since I can clear the issue with an apt-get install glibc. (Then when an old application breaks, it’s my fault, not the operating system’s.)

In all fairness, dependency issues crop up in Windows all the time: When people talk about DLL Hell, they’re talking about dependency problems. It’s a different name for the same problem. On Macintoshes, the equivalent problem was extensions conflicts. For some reason, people don’t hold Linux to the same standard they hold Windows and Macs to. People complain, but when was the last time you heard someone say Windows or Mac OS wasn’t ready for the desktop, or the server room, or the enterprise, or your widowed great aunt?

He also talks about not worrying about bloat. I take issue with that. When it’s possible to make a graphical Linux distribution that fits on a handful of floppies, there’s no reason not to make a system smooth and fast. That means you do a lot of things. Compile for an advanced architecture and use the -O3 options. Use an advanced compiler like CGG 3.2 or Intel’s ICC 7.0 while you’re at it. Prelink the binaries. Use a fast-booting init and a high-performance system logger. Mount filesystems with the highest-performing options by default. Partition off /var and /tmp so those directories don’t fragment the rest of your filesystem. Linux can outperform other operating systems on like hardware, so it should.

But when you do those things, then it necessarily follows that people are going to want to run your distribution on marginal hardware, and you can’t count on marginal hardware having a 20-gig hard drive. It’s possible to give people the basic utilities, XFree86, a reasonably slick window manager or environment, and the apps everyone wants (word processing, e-mail, personal finance, a web browser, instant messaging, a media player, a graphics viewer, a few card games, and–I’ll say it–file sharing) in a few hundred megabytes. So why not give it to them?

I guess all of this brings up the nicest thing about Linux. All the source code to anything desirable and all the tools are out there, so a person with vision can take them and build the ultimate distribution with it.

Yes, the idea is tempting.

What to do when Windows breaks

Every once in a while I get a question like this one, which showed up Thursday night on this page:
I did a stupid thing last night. A friend thought I might need to upgrade my Windows 98SE to Windows ME, but didnt get me an upgrade version, but the full version. Through the installation process, I did not copy the unistall files to my hard drive as I didnt think I would need to uninstall, plus I wanted to get rid of all elements of any old system files, as they were the ones causing me problems (errors in cd-rom line 2, 3 4 etc)…
Now, my computer stays in dos mode, and says that windows cannot run on ms dos version 8.00!?
Please help!? I need to wipe my hard drive and start again. How do I do that?

Please help

This question opens up a huge can of worms, like whether Windows ME really was an upgrade over 98SE, but in this case it sounds like it’s too late for that argument. How do you install Windows cleanly?

Here’s what I do. At a DOS prompt, I enter this command:


This gets your old Windows directory out of the way, but without deleting it. This is important because you might want to harvest stuff out of there: IE bookmarks and fonts are the two most likely things.

Next, because these files under any 32-bit Windows cause nothing but problems:


If you’re really paranoid, rename them instead:


Next, start Windows setup. Run it off a CD–grab a boot floppy from if you don’t have one–or the CAB files might, if you’re lucky, be on your hard drive. The standard place OEMs put it is C:\Windows\Options\Cabs. We just renamed Windows, so you can try these commands:


That’ll start up Windows Setup for whatever version came with your computer.

If the directory’s not there, or Setup.exe isn’t there, you’re stuck using the CD. Boot off the CD, or use the bootdisk if the CD isn’t bootable.

Run Windows setup, and setup will say it found an installation in C:\WINBAK and ask if you want to upgrade it. SAY NO!!!!! (I feel so strongly about this that I’m tempted to use the dreaded blink tag, but I’ll spare you.) It’ll ask where you want to install. Say good ol’ C:\WINDOWS, and you’re on your way to a fresh, clean build.

Disadvantages of Windows 3.1

Note: I wrote this way back in 2003, so my advice as far as replacing Windows 3.1 is a bit dated, but the strengths and weaknesses remain valid. If you’re thinking of a new computer, please don’t run anything older than Windows 7.

I found a search in my log analysis for “disadvantages of windows 3.1,” which I found interesting. I can talk about that.
Someone asked for it, and I aim to please. So let’s head down memory lane.

In all fairness, let’s talk about what’s good about it first. The main thing is that it’ll run–or at least load and execute–on pretty much anything, as long as it’s old. It’s anything but ideal on a 286, but it’ll execute. And on a 386DX, plain old Windows 3.1 is reasonably zippy if you cut down the number of fonts it has, only load a few applications, and install 16 MB of RAM in it. On a 486 or a low-end Pentium, it’s plenty fast.

Windows 3.1 freeware doesn’t have much in the way of strings attached–no need to worry about spyware. That’s a good thing.

Fine. Now for the hatchet job. To be completely honest, I didn’t like Windows 3.1 in 1993 and 1994 when it was what everyone was using. I ran it for a few months and then went out and bought OS/2 and never looked back. So you’re getting a perspective from someone who’s been willing for a long, long time to run anything other than Windows 3.1. But I’ll do my best to be fair.

You may have trouble running it on newer hardware. Let’s face it, it came on the market 10 years ago and not many people use it anymore. There’s not a lot of demand for drivers, so it can be hard to find a modern video card with Windows 3.1 drivers. And not only does Windows 3.1 have spotty capability with new hardware, it’s very limited in its ability to take advantage of anything made since 1995 or so.

More importantly, modern operating systems give full pre-emptive multitasking, or in the case of Windows 95/98/ME, at least something that vaguely resembles it. Under pre-emptive multitasking, the OS decides what applications get CPU time and how much. In Win3.1’s cooperative multitasking, the apps just have a knock-down, drag-out fight for CPU time. If you send an application to the background, it’ll get some work done, but not as much as it would under a newer OS.

My biggest beef with Windows 3.1 was its crashes. If you just run an app or maybe two all the time, it works reasonably well. But I’m the kind of guy who always has three or four or twelve apps open–the first multitasking systems I ever used, Unix and AmigaOS, had no problem doing that–and if you try that with Windows 3.1 for very long, you’ll see a lot of blue screens.

I wasn’t a fan of the Windows 3.1 Program Manager interface. I’m not in love with the Explorer interface of newer versions either, but it’s easier to use and faster to navigate than Progman was.

And although its software selection is pretty good, I guess Windows 3.1 now falls victim to the same argument I heard time and time again against my preferred alternative operating systems: What, don’t you like software? Sometimes Windows 3.1’s available offerings are adequate and sometimes they aren’t: Microsoft Office 6.0 is certainly adequate for 99% of all people’s needs. If you dig deep enough (I found a copy here), you can find Internet Explorer 5.0 for Windows 3.1. It’s not the best browser in the world but it’s the best one you’ll find for Win3.1 and it may be good enough for you. Sticking with Windows 3.1 limits you to a much smaller selection of software than newer operating systems. At this point, ironically, even Linux, which was once notorious for its lack of software that Joe Sixpack would want to use, now has a better selection of mainstream software than Windows 3.1 had.

At this point in time it’s hard to recommend Windows 3.1. PCs capable of running Windows 95 adequately are very, very cheap (I see 133 MHz Pentium computers sell for $35 when people are willing to mess with them, and a 66 MHz 486 will run Windows 95 decently and just about anyone who works in the computer field can find one of those to give you for free if you ask nicely enough), and although support for Windows 95 is starting to dry up, it’s much easier to find hardware and software compatible with Win95 than it is for Windows 3.1. Windows 98 is better still, but I definitely recommend a 200 MHz Pentium and more than 32 MB of RAM for Win98. Still, that’s doable.

And if you’re thinking that Windows 3.1 is adequate for you and you’re not totally strapped for cash, you might want to give the $199 Wal-Mart PCs running Lindows a look. Lindows is basically Linux with a pretty graphical user interface, and it’s perfectly fine for word processing, web browsing and e-mail. The budget Wal-Mart PC is hardly a barn burner, but it’s much faster than any computer you’re likely to be running Windows 3.1 on, and since it will be much newer, the hardware itself will also be a lot more reliable. Double check with your ISP before you buy one to make sure you can get connected (they’re probably getting used to that question by now), but if you can get connected, think about it.

Roll your own router with an old PC

Freesco works. Yesterday was D-Day. I brought a copy of Freesco over to Gatermann’s, set it up, and watched it go. Well, at first it didn’t–it got the two Ethernet cards confused. So I switched the cards and it fired up. Absolutely smashing, as they’d say in Britain. I dumped it to his old 1.2-gig Quantum Bigfoot hard drive, and it boots up in about 35 seconds. When living on a hard drive, Freesco wants to dual-boot with MS-DOS. He didn’t have DOS on that drive, so Tom dug out an old Windows 95 boot disk, with which I SYSed the drive. Then I just took the file router.bat that Freesco dumped to the drive and copied it to autoexec.bat. Then I rebooted and we got a laugh.

Starting Windows 95…. Then it briefly displayed the Windows 95 splash screen. Then the splash screen went away. Loading Linux, it said. Ah, Linux comes and kicks Windows aside. We both got a chuckle.

And Tom had a great observation. “The only time I ever have to reboot Linux is when I take the system down to try a different distribution,” he said. That’s about right.

I was talking about what a great use this would be for old, no-longer-useful PCs–as long as it can run Linux, it can be a caching DNS, a router, or something else useful. That means any 386 with 8 MB of RAM is a candidate.

But don’t throw away the 286s yet. Then someone had to one-up me. Dev Teelucksingh, master of DOS utilities, sent me a link: .

What is it? A DOS-based router. System requirements: DOS 5 or higher, 286 CPU, 1 MB RAM. Astounding. So even a 286 can be useful, even in this day and age. Licensed under GPL, so it’s free. No caching DNS, but hey, on a 286 with a meg of RAM and running DOS, whaddya want? And just giving the program a quick look, a hard disk should be optional–the program is 430K zipped, so it should fit on a high-density floppy along with DOS, HIMEM.SYS, and packet drivers for the NICs. Boot it off a 5.25″ 1.2-meg drive just to see what looks you’ll get. 🙂

Come to think of it, I have a 286 with a meg of RAM around here somewhere. Part of me (the insane part, surely) wants to give it a go. The question is, can I get two NICs working in 8-bit slots, since I know that 286 only had one or two 16-bit slots and I think they’re occupied by the disk controller and video card…

Here’s Dev (his site’s definitely worth a look even if you have no interest in IP masquerade–I’ve never seen a better collection of DOS programs):

Been reading your posts regarding IP masquerading and I found two DOS solutions (just waiting to get a ISA networking card to try either of them 😉 )

IProute v1.10 is PC-based router software for networks running the Internet Protocol (IP). It can act as a demand-dial router between your LAN and a PPP or SLIP link, and allow transparent access from your LAN to the Internet using a single IP address through network address translation (NAT). It can also act as a PPP server for dial-in connections, or route between LANs. Other features include routing between multiple ethernet and serial interfaces, packet filtering, RIP, and event and packet logging to a remote syslog daemon. More recent features include proxy ARP, remote management via telnet and ftp, support for RealAudio & RealVideo, a RADIUS client, and a DHCP client. Shareware. (1 hour demo available for download)

Internet Extender

The Internet Extender is a DOS based program designed to function as an Internet Gateway Router that performs Network Address Port Translation. The program must be used in an multi-homed machine, or a machine with two network interface adapters connecting to separate networks. The two possible configurations are: 1.) Connected to the Internet through a Modem 2.) Connected to the Internet through a Network Interface Card

Freeware, (published under GNU license) so source code is also available

Dev Anand Teelucksingh
Interesting DOS programs at
Trinidad and Tobago Computer Society at

— This mail was written by user of The Arachne Browser —
—                          —

Windows NT on hardware it has no business on

A partial retraction. OK, Southwestern Bell isn’t responsible for all my missing mail. I had a second POP3 client running that I forgot about, which was grabbing some of my mail. But my computer couldn’t find a DHCP server all day, so even though one problem wasn’t their fault, another one was. So I’m still gonna write Casey Kassum with a request and dedication: Todd Rundgren’s “I Hate My Frickin’ ISP,” dedicated to my beloved Southwestern Bell.

Running, uh, no, executing Windows NT 4.0 on a Pentium-75 with 16 MB RAM. Disclaimer: Before you start thinking things that include my name and words like “crack” or “LSD,” let me state emphatically that this was not my idea. I was only following orders. (I’m not on drugs. I’m not nuts–I’m certifiably sane. I’m not even depressed.) All that clear? Good.

That said, the stated minimum hardware requirements for NT 4 are a 486 CPU with 12 MB RAM. And I did once build a print server out of an old IBM PS/2 that had a 486SLC2/50 CPU and 16 megs of RAM. Hey, I was young and I needed the money, OK? Besides, it was a very experimental time and I didn’t think anybody would get hurt…

OK, I’m done turning druggy double entendres.

Needless to say, NT on this machine is anything but pretty. (And I’ll put a marginal machine into service as a server where no one ever interacts with it directly long before I stick one on an end-user’s desk.) The video card in my flagship PC has more memory and processing power. But we’re out of PCs, and this poor girl needs a computer on her desk (though she’s never done anything to deserve this fate), so here’s what I did to try to make life on this machine more tolerable. These tricks work much better on fast machines.

  • Pull out all network protocols except TCP/IP. I also double-checked all TCP/IP settings and made sure the closest DNS server was first on the list.
  • Use a static IP address. The DHCP service uses memory and CPU cycles, and on machines like this, every byte and cycle counts.
  • Remove Office Startup, Find Fast, and LoadWC from Startup. The first two are in the All Users start menu. The last is in the registry. All eat memory and provide no useful functionality.
  • Move the swap file to a second physical hard disk. This machine happened to have a second drive, so I put the swap file there for better performance.
  • Turn off unnecessary services. The Scheduler service and Computer Browser service normally aren’t needed. If the network never sent out notifications (ours does), I’d also turn off the Messenger service.
  • Remove unnecessary fonts. I won’t do this without her present, since I might inadvertently nuke her favorite font. But if she doesn’t use it, it’s gone.
  • Keep free space above 100 megs. Windows slows to a crawl when forced to live on a drive that’s as crowded as a mosh pit.
  • Defragment! Making matters worse, this drive didn’t seem to have a single file on it that wasn’t fragmented. I ran Diskeeper and there was more red on the screen than at a Cardinals game when Mark McGwire’s chasing home run records.
  • When you have two drives, put the OS on the faster of the two. Unfortunately, the OS is on an ancient Seagate 420-meg drive, with a 2.1-gig drive in as the secondary drive. The roles really should be reversed. When in doubt, the bigger drive is usually faster. The newer drive almost always is. I may just Ghost the OS over to the 2.1-gig drive, then switch them.
  • Switch to Program Manager. She’s probably not comfortable with the old Windows 3.1 interface (I’ve only ever met one person who liked it) so I probably won’t do this, but that’ll save you a couple megs.

Yes, even with these adjustments, it’s still awful. So I’m gonna see if I can dig up some memory from somewhere. That’ll help more than anything. But as tempting as overclocking may be, I won’t do it.

What to do when defrag won’t finish

Optimizing a DX4/75. Talk about bottom fishing! But I do what I have to. This DX4/75 was driving me batty because it was taking a minute and a half to boot, and 30 seconds to load Word. Hard to believe this was once considered acceptable, even good, performance for Win95. But I couldn’t do much about it because with 16 MB RAM, Defrag kept getting interrupted. I fixed that. I opened win.ini, found the line that read shell=Explorer.exe, changed it to read shell=defrag.exe, rebooted, then defragged. Defrag was able to run without interruption, and significantly faster since it wasn’t competing for limited CPU cycles and physical memory.
When it finishes, the quickest way to get regular old Windows back is to hit Ctrl-Esc to bring up Task Manager, hit File–>New Task, type Explorer.exe, then edit win.ini and change the default shell back to Explorer.

But if you gotta get a system defragged absolutely as fast as possible, try the shell replacement trick. I’ve never seen this documented anywhere, and to tell you the truth, I thought of it in a moment of desperation. But it worked.