Problem finding ntoskrnl.exe on boot.

R

Robbie Hatley

I've got a messy problem. I was attemping to expand the hard-disk
space on my mom's computer by adding a second hard disk. My
sequence of actions was as follow:

1. I copied the bootable Windows 2000 partition (C:) from the
old 80GB hard disk to the new 160GB hard disk, using
Symantec Partition Magic 8.
2. I changed the drive letter of C: to N:
3. I gave the new partition drive letter C:
4. I swapped disks, so that the 160GB disk (containing the
new partition, now labled C:) is the first hard disk.
5. I made C: the active partition.

System should now boot from C:, right?

Wrong.

If I leave both hard disks attached to the IDE cable,
I get a menu allowing me to choose between "Windows 2000"
and "Windows 2000 #1". If I choose "Windows 2000", the
system boots from drive N: on the second hard disk! If
I choose "Windows 2000 #1", I get "system cannot boot due
to a hardware configuration error".

If I remove the second hard disk (with bootable partition
N: on it) from the IDE cable, I get "Cannot find ntoskrnl.exe.
This file is missing or corrupt."

However, the file is NOT missing or corrupt. If I boot from
drive N: and do an FC between N:\WINNT\system32\ntoskrnl.exe
and C:\WINNT\system32\ntoskrnl.exe , I get "no differences
encountered". So the kernel is fine... but for some reason
it's unaccessable on boot.

I suspect that the registry on drive C: is corrupted somehow.
Specifically, I very much suspect that Partition Magic's
"Drive Mapper" program set the drive letters in the drive
C: registry to something bogus. The bootloader is probably
now looking for K:\WINNT\system32\ntoskrnl.exe or some damn
such thing, and of course not finding it.

So the question is, is there any way to edit the registry on
drive C: ? Running regedit.exe won't help, because no matter
which copy of regedit I run (the one on C: or the one on N:)
it always edits the registry on drive N:. How can I edit a
registry other than the currently-booted one?

(Yes, the possibility has occurred to me that the problem lies
elsewhere altogether, such as maybe the motherboard does not
fully support 160GB HDs; many older MBs don't. However,
I still need to know what is in the C: registry, and I don't
know how to get at it.)
 
J

John John

Question: When the pc boots on what you call N drive is it (the so
called "N" drive) identified as N: by Windows or is it identified as C:?

John
 
R

Robbie Hatley

John John said:
Question: When the pc boots on what you call N drive is it (the so
called "N" drive) identified as N: by Windows or is it identified as C:?

That's a bit of a mis-quote. If you carefully read what I
wrote, you will see that I said "drive N:", not "the so-called
N drive".

When I say "drive N:", I mean "drive N:".

To be complete, and to avoid all further confusion of
this nature:

I refer to drive A: as "drive A:".
I refer to drive B: as "drive B:".
I refer to drive C: as "drive C:".
I refer to drive D: as "drive D:".
I refer to drive E: as "drive E:".
I refer to drive F: as "drive F:".
I refer to drive G: as "drive G:".
I refer to drive H: as "drive H:".
I refer to drive I: as "drive I:".
I refer to drive J: as "drive J:".
I refer to drive K: as "drive K:".
I refer to drive L: as "drive L:".
I refer to drive M: as "drive M:".
I refer to drive N: as "drive N:".
I refer to drive O: as "drive O:".
I refer to drive P: as "drive P:".
I refer to drive Q: as "drive Q:".
I refer to drive R: as "drive R:".
I refer to drive S: as "drive S:".
I refer to drive T: as "drive T:".
I refer to drive U: as "drive U:".
I refer to drive V: as "drive V:".
I refer to drive W: as "drive W:".
I refer to drive X: as "drive X:".
I refer to drive Y: as "drive Y:".
I refer to drive Z: as "drive Z:".

Or if you want it in C++:

#include <iostream>
#include <string>
int main(void)
{
for (int i=0; i<26; ++i)
{
std::cout
<< std::string("I refer to drive ")
+ char(65+i)
+ std::string(": as \"drive ")
+ char(65+i)
+ std::string(":\".")
<< std::endl;
}
return 0;
}

I hope that clarifies things.

But my original problems remain. To recap:

=========== BEGIN RECAP =================================

I've got a messy problem. I was attempting to expand the hard-disk
space on my mom's computer by adding a second hard disk. My
sequence of actions was as follow:

1. I copied the bootable Windows 2000 partition (C:) from the
old 80GB hard disk to the new 160GB hard disk, using
Symantec Partition Magic 8.
2. I changed the drive letter of C: to N:
3. I gave the new partition drive letter C:
4. I swapped disks, so that the 160GB disk (containing the
new partition, now labeled C:) is the first hard disk.
5. I made C: the active partition.

System should now boot from C:, right?

Wrong.

If I leave both hard disks attached to the IDE cable,
I get a menu allowing me to choose between "Windows 2000"
and "Windows 2000 #1". If I choose "Windows 2000", the
system boots from drive N: on the second hard disk! If
I choose "Windows 2000 #1", I get "system cannot boot due
to a hardware configuration error".

If I remove the second hard disk (with bootable partition
N: on it) from the IDE cable, I get "Cannot find ntoskrnl.exe.
This file is missing or corrupt."

However, the file is NOT missing or corrupt. If I boot from
drive N: and do an FC between N:\WINNT\system32\ntoskrnl.exe
and C:\WINNT\system32\ntoskrnl.exe , I get "no differences
encountered". So the kernel is fine... but for some reason
it's inaccessible on boot.

I suspect that the registry on drive C: is corrupted somehow.
Specifically, I very much suspect that Partition Magic's
"Drive Mapper" program set the drive letters in the drive
C: registry to something bogus. The bootloader is probably
now looking for K:\WINNT\system32\ntoskrnl.exe or some damn
such thing, and of course not finding it.

So the question is, is there any way to edit the registry on
drive C: ? Running regedit.exe won't help, because no matter
which copy of regedit I run (the one on C: or the one on N:)
it always edits the registry on drive N:. How can I edit a
registry other than the currently-booted one?

(Yes, the possibility has occurred to me that the problem lies
elsewhere altogether, such as maybe the motherboard does not
fully support 160GB HDs; many older MBs don't. However,
I still need to know what is in the C: registry, and I don't
know how to get at it.)

======================== END RECAP =========================

Since I wrote that, I've tried some other things,
but still haven't got the 160GB disk to boot.

In what follows, to avoid confusion, I define:

"Disk80" = original 80GB hard disk,
(second physical hard disk)
(primary slave)
(contains bootable drive N:)

"Disk160" = new 160GB hard disk
(first physical hard disk)
(primary master)
(contains should-be-bootable drive C:)

1. I shrank the extended partition on Disk160 so that
the partitioned portion of the disk is completely
under 120GB, which seems to be the limit the BIOS
can understand. (Windows 2000, on the other hand,
can be taught to understand much larger HDs, if
you run the "make-windows-understand-large-LBA"
utility from Samsung (the manufacturer of both of
the hard disks I'm working with).)
2. I changed ALL "N:" references to "C:" in the
registry on drive N: (on disk160 (second
physical hard disk)).
3. I erased the drive C: partition (on Disk80
(first physical hard disk)).
4. I copied the N: partition from Disk 80 to Disk160.
5. I used Partition Magic to assign drive letter C:
to the copy of N: on Disk80.
5. I removed Disk80 from the IDE cable, leaving
Disk160 as the only HD in the system, first
physical hard disk, primary master, jumpered
accordingly.
6. I setup PowerQuest BootMagic so that the MBR
launches BootMagic, which resides on 2nd primary
partition (MS-DOS 6.22), and can boot any of
3 OSs: Linux (pri. part. 1), DOS (pri. part. 2),
or Windows 2000 (pri. part. 3).

Results:

Partition 1 (Linux):
OS not yet installed (though empty partitions of
appropriate sizes, locations, and file-system
types have been created for it).

Partition 2 (MS-DOS 6.22):
Boots fine, runs fine.

Partition 3 (Windows 2000 Professional):
"Cannot boot Windows due to a physical hard disk
mis-configuration error". (Nature of error not
specified.)

This is not a 2GB or 1024cyl issue. (Partition 3
begins waaaaay below 2GB, and ends before reaching
cylinder 1024. Also, this same partitioning and
booting scheme works fine on Disk80.)

I can see only three logical explanations for this
situation:

1. The drive C: registry contains wrong disk geometry
information? (It might think it's still on Disk80,
from whence it was cloned). (Do windows registries
actually deal with such low-level information,
though?)

2. Maybe Windows 2000 is simply not capable of booting
from a 160GB hard disk? (Is anyone here currently
running a Windows 2000 system which boots from an
HD larger than 120GB?)

3. Perhaps the Windows installation on Disk160 can't
boot until I run the Samsung "teach windows to
recognize large LBA" program. I can't run that
program for drive C: until after I boot drive C:.
But I can't boot drive C: until after I run that
program. Catch 22 situation?

One obvious work around is to repartition Disk80 to
do the work I had intended Disk160 to do, then just
use Disk160 as a data disk (entire disk taken-up by
one huge extended partition; no primary partitions).
That should work, seeing as how Windows recognizes
all logical drives on both disks, ONCE IT'S BOOTED.
It's only getting it booted that's the hard part.

However, I don't want to do that If I don't have to,
because it would involve a lot more data backups,
repartitioning, and data restores. Hours of work.

A second, even more time-wastey option is to try to
overwrite the Windows installation on C: by running
my Windows 2000 CD. This would likely require WEEKS
of work, thought, because it would force me to
re-do all OS customizations and re-install all
programs. Also, thousands of spam filters (OE
"mail rules") would be permanently lost, because
Windows keeps those in it's registry, rather than
as a user-editable plain-text (or XML) killfile,
as it should. Obviously, this option is "LAST
RESORT".

So... does anyone here have any clues as to why
Disk160 won't boot? Much thanks to anyone who can
help me solve this mystery!

--
Cheers,
Robbie Hatley
Tustin, CA, USA
email: lonewolfintj at pacbell dot net
web: home dot pacbell dot net slant earnur slant
 
R

Robbie Hatley

On re-reading my last post, I notice some small but
higly-confusion-causing typos in the part just under
the "recap" section. The item numbers were screwed up,
and "Disk80" and "Disk160" got switched in a couple of
places.

The corrected version of my list of things recently
done is as follows:

1. I shrank the extended partition on Disk160 so that
the partitioned portion of the disk is completely
under 120GB, which seems to be the limit the BIOS
can understand. (Windows 2000, on the other hand,
can be taught to understand much larger HDs, if
you run the "make-windows-understand-large-LBA"
utility from Samsung (the manufacturer of both of
the hard disks I'm working with).)
2. I changed ALL "N:" references to "C:" in the
registry on drive N: (on disk80 (second
physical hard disk)).
3. I erased the drive C: partition (on Disk160
(first physical hard disk)).
4. I copied the N: partition from Disk 80 to Disk160.
5. I used Partition Magic to assign drive letter C:
to the copy of N: on Disk160.
6. I removed Disk80 from the IDE cable, leaving
Disk160 as the only HD in the system, first
physical hard disk, primary master, jumpered
accordingly.
7. I setup PowerQuest BootMagic so that the MBR
launches BootMagic, which resides on 2nd primary
partition (MS-DOS 6.22), and can boot any of
3 OSs: Linux (pri. part. 1), DOS (pri. part. 2),
or Windows 2000 (pri. part. 3).

Sorry for the confusion.

--
Cheers,
Robbie Hatley
Tustin, CA, USA
email: lonewolfintj at pacbell dot net
web: home dot pacbell dot net slant earnur slant
 
D

Dan Seur

why on earth would anybody want to reread that last post of yours?

Robbie said:
On re-reading my last post, I notice some small but
higly-confusion-causing typos in the part just under
the "recap" section. The item numbers were screwed up,
and "Disk80" and "Disk160" got switched in a couple of
places.

The corrected version of my list of things recently
done is as follows:

1. I shrank the extended partition on Disk160 so that
the partitioned portion of the disk is completely
under 120GB, which seems to be the limit the BIOS
can understand. (Windows 2000, on the other hand,
can be taught to understand much larger HDs, if
you run the "make-windows-understand-large-LBA"
utility from Samsung (the manufacturer of both of
the hard disks I'm working with).)
2. I changed ALL "N:" references to "C:" in the
registry on drive N: (on disk80 (second
physical hard disk)).
3. I erased the drive C: partition (on Disk160
(first physical hard disk)).
4. I copied the N: partition from Disk 80 to Disk160.
5. I used Partition Magic to assign drive letter C:
to the copy of N: on Disk160.
6. I removed Disk80 from the IDE cable, leaving
Disk160 as the only HD in the system, first
physical hard disk, primary master, jumpered
accordingly.
7. I setup PowerQuest BootMagic so that the MBR
launches BootMagic, which resides on 2nd primary
partition (MS-DOS 6.22), and can boot any of
3 OSs: Linux (pri. part. 1), DOS (pri. part. 2),
or Windows 2000 (pri. part. 3).

Sorry for the confusion.



---
avast! Antivirus: Outbound message clean.
Virus Database (VPS): 0551-2, 12/20/2005
Tested on: 12/20/2005 7:53:01 PM
avast! - copyright (c) 1988-2004 ALWIL Software.
http://www.avast.com
 
R

Robbie Hatley

Dan Seur said:
why on earth would anybody want to reread that
last post of yours?

Why on earth would anyone want to reply to a post
they don't want to read?

--
Cheers,
Robbie Hatley
Tustin, CA, USA
email: lonewolfintj at pacbell dot net
web: home dot pacbell dot net slant earnur slant
 
R

Robbie Hatley

John John said:

Ok, I think I see the trouble. From that web site:
The operating system must be installed on the first
partition that is less than or equal to 137 GB and
the rest of the hard disk divided into one or more
remaining partitions when the EnableBigLba registry
value is enabled on a computer without a 48-bit LBA
compatible BIOS that has a hard disk with a capacity
of more than 137 GB.

Yes, the BIOS on the machine in question is old and does
not directly support 48bit LBA. Yes, the two Win2K
partitions are OTHER THAN "the first partition smaller
than 137GB", and there's reason why they have to be.
Partitions 1 and 2 on first HD are reserved for Linux
and DOS respectively. Win2k can't be moved to partition
1 because it's too large (6GB) and would force the other
two partitions beyond the 2GB and 1024cyl boot boundaries.

So I see now that the current setup on my mom's computer
is just not going to work. Not unless Gigabyte has a
BIOS update available with 48bit LBA support. If so,
I'm pretty sure that will fix the problem. If not, mom's
going to have to live with just the 60GB HD for a while.
(I may add a 120GB second HD later.)

Thanks for the link!

--
Cheers,
Robbie Hatley
Tustin, CA, USA
email: lonewolfintj at pacbell dot net
web: home dot pacbell dot net slant earnur slant
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top