After my yesterdays blog entry Edit Windows Registry from Linux I could see the error windows showed me in a bluescreen: 0x0000007B INACCESSIBLE_BOOT_DEVICE.
This was after I changed the motherboard and the CPU. My first thought was ‚Oh no, I’ll have to reinstall it‘ – but it went all good.
If you do the things described here you are at your own risk – it could damage your system permanently. If you decide to do it anyway, please use copy & paste to not miss anything.
On notice at first: your motherboard needs to support a normal IDE mode – we just reset the normal IDE drivers so Windows can boot and you can later reinstall some S-ATA drivers.
So lets start, first you need to boot some Linux which is able to write NTFS partitions and has the tools chntpw and cabextract (I had a multiboot with Ubuntu, so it was no problem).
First, lets mount the NTFS partition (we assume its the first partition on the first harddisk):
mkdir /mnt/windows
mount /dev/sda1 /mnt/windows
cd /mnt/windows
Next we need to go to the Driver Cache and extract standard IDE drivers from some cabinet files:
cd `ls | grep -w -i windows`
cd "`ls | grep -w -i "driver cache"`"
cd `ls | grep -w -i i386`
These `ls … | grep …` things are necessary, because the case of the directory name can differ – so we workaround this.
The knowledge base article from Microsoft is a bit outdated, because the get all needed files from driver.cab, but in my case Service Pack 2 was installed and the files were in a slightly different location: sp2.cab.
So to be sure to extract all files (even with Service Pack 3), do the following extractions:
DEST="../../`ls ../../ | grep -w -i system32`"
cabextract -d $DEST -F atapi.sys driver.cab sp2.cab sp3.cab
cabextract -d $DEST -F Intelide.sys driver.cab sp2.cab sp3.cab
cabextract -d $DEST -F Pciide.sys driver.cab sp2.cab sp3.cab
cabextract -d $DEST -F Pciidex.sys driver.cab sp2.cab sp3.cab
Last step is updating the registry. Unfortunately its not possible with chntpw to import reg-Files – but to not enter all registry keys by hand, I wrote a chntpw-script to set the necessary values. You can download it here: chntpw-mergeide script.
To apply it, save the script on your desktop and do the following steps:
cd $DEST
cd `ls | grep -w -i config`
chntpw -u Administrator system < ~/Desktop/mergeide.chntpw
Thats all, you can now unmount the windows partition and reboot. Make sure your BIOS is set to standard IDE emulation.
cd ~
umount /mnt/windows
Links I used:
This is great, I have been looking all over the internet for something like that.
Thank you this great solution. I had some problemes using ubuntu-9.10-dvd-amd64. There is a bug in chntpw, so registry modification fails. Using ubuntu-9.04-netbook-remix erverything works fine.
@PeterPanic
Thank you for this information.
Thank you for the very useful info! the mergeide.chntpw & copying the missing sys files saved my win2k virtual image =)
now running under kvm instead of vmwaretools
DEST=“../../`ls ../../ | grep -w -i system32`“
But this path is somethings like /mnt/win/WINDOWS/system32 isn’t it?
I’m working on an SP1 system… And I’ve read the ms knowledge support link which suggest destination dir: %SystemRoot%\System32\Drivers.
Now, I have a dir /mnt/win/WINDOWS/system32/drivers that countains many „.sys“ files..
So in my case, isn’t that directory the right DEST in which extract .cab files?
@restorer
Yes, this path is something like /mnt/win/WINDOWS/system32. This cryptic DEST is necessary because with the 3 lines before you change to „windows/driver cache/i386“. The grep command inside will find out if the system32 directory is called System32 or SYSTEM32 or anything like this, because Linux is case sensitive.
To the „drivers“ dir – sorry, can’t check this now, but maybe you can tell me if it is necessary, then I’ll add it.
From the bottom of my heart: Thank you!
Migrating a Windows 2003 computer almost made me cry. Your article solved my problem.