1. Computing & Technology

Linux Plug And Play How-To

From The Linux Documentation Project

finds hardware that is already configured by the BIOS is to just leave it alone and not reconfigure it. Now Windows9x keeps a record of the bus-resource configuration in its registry. If the BIOS configuration is different, it should either correct what's in its registry to conform to what the BIOS has set or reconfigure everything per what's in the registry. Bad news. It seems to do neither and thinks the actual configuration is the same as in the registry when in fact it's different.

But if the registry happens to contain a bus-resource configuration that is exactly the same as how the BIOS configures things, then everything will obviously work OK. A device will thus work fine if the BIOS has configured it the same as recorded in the registry. So the way to get MS Windows to work OK is to get the registry in sync with how the BIOS configures. As mentioned previously, the BIOS configures things per its ESCD (which is something like the registry for the BIOS). See The BIOS's ESCD Database. So we need to get the registry in sync with the BIOS's ESCD so that the registry and the ESCD contain the same configuration. In some cases, these two just happen to be in sync and you don't need to do anything.

One question you may think of is: how did the BIOS's ESCD and Windows registry ever get out of sync in the first place? Here's one scenario. You install Windows with the BIOS set to a PnP OS. Then Windows configures most everything and saves that configuration in its registry. Then later on you change the BIOS setting to not a PnP OS. Then upon booting, the BIOS configures everything and it doesn't do it exactly like Windows did it. Thus the actual configuration of the hardware and what Windows has in its registry are now different.

One way to try to get the Registry and the ESCD the same is to install (or reinstall) Windows when the BIOS is set for "not a PnP OS". This should present Windows with hardware configured by the BIOS. If this configuration is without conflicts, Windows will hopefully leave it alone and save it in it's Registry. Then the ESCD and the registry are in sync.

Another method is to remove devices that are causing problems in Windows by clicking on "remove" in the Device Manager. Then reboot with "Not a PnP OS" (set it in the BIOS's CMOS as you start to boot). Windows will then reinstall the devices, hopefully using the bus-resource settings as configured by the BIOS. Be warned that Windows will likely ask you to insert the Window installation CD since it sometimes can't find the driver files (and the like) even though they are still there. A workaround for this is to select "skip file" which will avoid installing the file from a CD. If the file is still on the HD, then the driver will hopefully find it OK even though the Window's install program requested you install it from a CD (which you skipped doing).

As a test I "removed" a NIC card which used a Novell compatible driver. Upon rebooting, Windows reinstalled it with Microsoft Networking instead of Novell. This meant that the Novell Client needed to be reinstalled --a lot of unnecessary work. So in a case like this it may be better to not fib to Windows95/98 but instead to get Linux to configure bus-resources.

When using a Window-Linux PC (dual boot) you might notice a change in the way the BIOS configures due to Windows9x (and other versions of Windows ??) modifying the ESCD. It supposedly does this only if you "force" a configuration or install a legacy device. See Using Windows to set ESCD. Device drivers that do configuring may modify what the BIOS has done as will the isapnp or PCI Utilities programs if you run them.

©2012 About.com. All rights reserved.

A part of The New York Times Company.