Jump to content

Windows 98 won't recognize logical partition


HardDriv'n

Recommended Posts

Here's the run down.

Using GRUB4DOS as a boot manager, I have multiple OSes installed on this PC, and they are two internal Sata HDs (0, and 1). What I did was install Windows ME to the first primary partition of the second HD (hd1,0), and created a extended, logical, partition on the first (0,4).

This is what my GRUB4DOS entry looked like.

hide (hd0,0)
hide (hd0,1)
unhide (hd0,4)
unhide (hd1,0)
unhide (hd1,1)
hide (hd1,2)
hide (hd1,4)
root (hd1,0)
makeactive
chainloader /io.sys

Using this, Windows ME loaded just fine. I recently formatted the drive (hd1,0), and installed Windows 98 instead. The thing is that the above entry no longer works, as I'm getting the message that "a device attached to the system isn't functioning". It shows up after my primary fat32 "C" drive, but before my secondary primary fat32 drive. It shows up as drive "D" of C/D/E, instead of it being at the end of the alphabetical list "E" like with WinME. Also, it shows as 0MB of 0MB free.

I've attempted the remap the drive like this:

map (hd0) (hd1)
map (hd1) (hd0)

And this:

map (hd0,4) (hd1,4)
map (hd1,4) (hd0,4)

All these do is cause the OS to hang instead of load to the desktop.

Any ideas...?

Link to comment
Share on other sites


Well after messing around with it for a bit, I had double checked in XP that no disk compression was enabled, reformatted, etc., I finally got it to at least be readable/writable.

I had to recreate the partition altogether, with Win98's fdisk.

Now I'm having an issue where I can't use the partition for my swapfile, because the partition is running in something called "MS-DOS compatibility mode".

Every time I reboot after setting it as my swapfile, the virtual memory has been disabled on that drive.

Anyone more knowledgeable in Win98 know what's up? Do I have to use a primary partition, instead of logical, if I want to do this?

Link to comment
Share on other sites

I've attempted the remap the drive like this:

map (hd0) (hd1)
map (hd1) (hd0)

Cannot say if related, but you should hook the mapping:

hide (hd0,0)

hide (hd0,1)

unhide (hd0,4)

unhide (hd1,0)

unhide (hd1,1)

hide (hd1,2)

hide (hd1,4)

map (hd0) (hd1)

map (hd1) (hd0)

map --hook

root (hd0,0)

makeactive

chainloader /io.sys

And I don't see a reason to do all the hiding/unhiding, with all partition unhidden this should work allright:

map (hd0) (hd1)

map (hd1) (hd0)

map --hook

root (hd0,0)

chainloader /io.sys

It is possible, though cannot say HOW it happened, that the Extended partition got an ID of 05 instead of 0F and this may affect Win9x but not Me :unsure:

jaclaz

Edited by jaclaz
Link to comment
Share on other sites

And I don't see a reason to do all the hiding/unhiding, with all partition unhidden this should work allright:


map (hd0) (hd1)
map (hd1) (hd0)
[b]map --hook[/b]
root (hd[b]0[/b],0)
chainloader /io.sys

I hide/unhide partitions to keep certain OSes from recognizing them. This didn't affect the OS hanging problem though, and it still wont load to the desktop.

It is possible, though cannot say HOW it happened, that the Extended partition got an ID of 05 instead of 0F and this may affect Win9x but not Me :unsure:

jaclaz

What'd be the difference, and how would I check? Could it be manually changed if it were?

Link to comment
Share on other sites

What'd be the difference, and how would I check? Could it be manually changed if it were?

Sure, though still I am not so sure about the cause of your problem.

http://www.win.tue.nl/~aeb/partitions/partition_types-1.html

...

05 DOS 3.3+ Extended Partition

Supports at most 8.4 GB disks: with type 05 DOS/Windows will not use the extended BIOS call, even if it is available. See type 0f below. Using type 05 for extended partitions beyond 8 GB may lead to data corruption with MSDOS.

An extended partition is a box containing a linked list of logical partitions. This chain (linked list) can have arbitrary length, but some FDISK versions refuse to make more logical partitions than there are drive letters available (e.g. MS-DOS LASTDRIVE=26 is good for at most 24 disk partitions; Novell DOS 7+ allows LASTDRIVE=32).

...

0f WIN95: Extended partition, LBA-mapped

Windows 95 uses 0e and 0f as the extended-INT13 equivalents of 06 and 05. For the problems this causes, see Possible data loss with LBA and INT13 extensions. (Especially when going back and forth between MSDOS and Windows 95, strange things may happen with a type 0e or 0f partition.) Windows NT does not recognize the four W95 types 0b, 0c, 0e, 0f ( Win95 Partition Types Not Recognized by Windows NT). DRDOS 7.03 does not support this type (but DRDOS 7.04 does).

...

Simply get beeblebrox or PTEDIT/PTEDIT32 and check the actual entry in the MBR.

About hooking the mapping is just to avoid misunderstandings in the grub4dos menu.lst.

A mapping is IMMEDIATELY effective outside grub4dos ONLY.

Once hooked it is effective also internally.

In other words without the hooking disk numbers in grub4dos and in (later) booted DOS may be different, with the hooking they are the same.

jaclaz

Link to comment
Share on other sites

For some weird reason, this problem has caused my extended, logical, partitions to show up as (hd1,3), and (hd1,3), instead of (hdX,4).

I booted up Linux (on hd1,2), and it showed (hd0,4) as unrecognized... So once more, I recreated the logical partitions, both of them. (hd0,4)/(hd1,4)

I used this as my Grub4Dos entry:


unhide (hd0,0)
unhide (hd0,1)
unhide (hd0,4)
unhide (hd1,0)
unhide (hd1,1)
unhide (hd1,2)
unhide (hd1,4)
map (hd0) (hd0)
map (hd1) (hd0)
map --hook
rootnoverify
makeactive
chainloader +1

And I got this error message:

Error 43: The BPB hidden_sectors should not be zero for a hard-disk partition boot sector

Simply get beeblebrox or PTEDIT/PTEDIT32 and check the actual entry in the MBR.

Okay, I'll try this as soon as I can find a copy.

Link to comment
Share on other sites

Well, you are missing the basic idea of using grub4dos command line:

http://diddy.boot-land.net/grub4dos/files/basics.htm

http://diddy.boot-land.net/grub4dos/files/cli.htm

Boot to grub4dos, press "c" to get to command line.

READ the above links, learn to use commands like geometry, and root, and [TAB] autocompletion.

You have to understand that a grub4dos menu.lst is nothing but a batch file.

Now you wouldn't write a batch file if not after having learned the syntax of commands and checked manually on command line that it works, wouldn't you?

In grub4dos (hdn,0), (hdn,1) (hdn,2) and (hdn,3) represent the actual 4 entries available in the MBR in the order they are written in the partition table.

Consequently, if one of the entries points to an Extended partition, the Logical Volume(s) in the Extended partition will be numbered (hdn,4) onwards, following the chainloading of EPBR(s) inside the extended partition.

A good way to avoid the mess is to use either "tag-files" or UUID's to find which is which dynamycally (as opposed to hardcode something like (hd0,4)).

i.e.:

find --set-root /my4thpartion.tag
hide ()

will hide the whatever partition that has in root a file named "my4thpartion.tag"

jaclaz

Link to comment
Share on other sites

Well, you are missing the basic idea of using grub4dos command line:

http://diddy.boot-land.net/grub4dos/files/basics.htm

http://diddy.boot-land.net/grub4dos/files/cli.htm

Boot to grub4dos, press "c" to get to command line.

Yes, I know this, and I've used it before.

Consequently, if one of the entries points to an Extended partition, the Logical Volume(s) in the Extended partition will be numbered (hdn,4) onwards, following the chainloading of EPBR(s) inside the extended partition.

Which is why I found it strange that my entries that had always been (hdn,4) only worked with (hdn,3) consequently... Maybe from partition corruptions somehow?

A good way to avoid the mess is to use either "tag-files" or UUID's to find which is which dynamycally (as opposed to hardcode something like (hd0,4)).

i.e.:

find --set-root /my4thpartion.tag
hide ()

will hide the whatever partition that has in root a file named "my4thpartion.tag"

Excellent idea, and I should have done it that way.

Back to the problem, this is what PTEDIT said:

The first logical partition from IDE 0 was indeed "Type 0F", and after changing it the problem persisted. Looking at IDE 1, I noticed that partition (hd1,0) was marked as FAT32X, instead of FAT32. Does that matter?

What I originally did was create and install Win2K to partition (hd0,0) of IDE port 0, install grub4dos to the MBR, created and installed WinXP to partition (hd0,1) of IDE port 0, and created the logical partition (hd0,4) to IDE port 0.

I then added a second hard-drive to IDE port 1, disabled the IDE port 0 in the BIOS, created and installed Windows ME to partition (hd1,0) of IDE 1, create partition (hd1,1) of IDE port 1, created and installed Linux to partition (hd1,2) of IDE 1, installed the Linux's GRUB to the MBR of IDE port 1, and created logical partition (hd1,4) to IDE port 1.

From there, I re-enabled the IDE port 0 in the BIOS, and added the appropriate entries. Occasionaly, I'd have to reset the BIOS, because IDE ports would be seen as the other HD (0 <-> 1). This had worked until I replaced WinME with Win98.

In all honesty, I may just go back to WinME as I can't even get the 98 to recognize USB drives. I had only wanted the option of being able to boot into DOS...

Link to comment
Share on other sites

No, what you report makes no sense. (to me at least :rolleyes: )

(hd0,3) CANNOT be in grub4dos an Logical Volume inside Extended, maybe during some of your experiments you somehow managed to have a Primary partition entry in (hd0,3). :unsure:

Please, run from grub4dos command prompt:

geometry (hd0)

and

geometry (hd1)

and post the results.

jaclaz

Edited by jaclaz
Link to comment
Share on other sites

This is after I recreated, and reformatted the extended partition on the first drive.

Geometry (hd0)

drive 0x80(LBA):C/H/S=1024/240/63, Sector Count/Size=15482880/512

Partition num: 0, active, Filesystem type is ntfs, partition type is 0x07

Partition num: 1, Filesystem type is ntfs, partition type is 0x17

Partition num: 2, Filesystem type is fat, partition type is 0x0B

Geometry (hd1)

drive 0x81(LBA):C/H/S=1024/240/63, Sector Count/Size=15467760/512

Partition num: 0, active, Filesystem type is fat, partition type is 0x0C

Partition num: 1, Filesystem type is fat, partition type is 0x0B

Partition num: 2, Filesystem type is ext2fs, partition type is 0x93

Partition num: 4, Filesystem type is ntfs, partition type is 0x07

I think that when I remap the drives [map (hd0) (hd1)] that somehow it boots off the correct one, but then somehow tries to finish loading off the FAT partition on the first of the two hard-drives. You know because I've heard that Win9x OSes need to be on the first partition of the 1st HD...?

If I tried with the partition formatted as a primary drive, I'd get a type in the location of COMMAND.COM prompt. Again, I think it began loading, but would end up trying to finish on the recognized primary partition of the 1st HD. I once again reformatted to the original situation of an extended partition, with no remapping. Now while it'll load, It no longer even detects the partition. This result is from the geometry post marked above.

Maybe Grub4Dos's magic isn't powerful enough to make Win98 bootable from a secondary drive, while there's a recognizable partition on the first...? :}

On top of this all, Win98 won't even detect any USB drives plugged into any port, let alone not recognize them.

Edited by HardDriv'n
Link to comment
Share on other sites

What you posted seems OK.

I am lost now as to which partitions holds what.

Can you resume by filling the dots (example):

drive 0x80(LBA):C/H/S=1024/240/63, Sector Count/Size=15482880/512

Partition num: 0, active, Filesystem type is ntfs, partition type is 0x07 <- this is "normal" "XP"

Partition num: 1, Filesystem type is ntfs, partition type is 0x17 <-This is a "hidden" "XP"

Partition num: 2, Filesystem type is fat, partition type is 0x0B <- This is .........

drive 0x81(LBA):C/H/S=1024/240/63, Sector Count/Size=15467760/512

Partition num: 0, active, Filesystem type is fat, partition type is 0x0C <- This is .........

Partition num: 1, Filesystem type is fat, partition type is 0x0B <- This is .........

Partition num: 2, Filesystem type is ext2fs, partition type is 0x93 <- This is a "hidden" Linux of some kind

Partition num: 4, Filesystem type is ntfs, partition type is 0x07 <- This is .........

You know because I've heard that Win9x OSes need to be on the first partition of the 1st HD...?

Naaah, that's bull***t.

Windows 9x can be installed to a Logical partition also (with some tweaks).

Maybe Grub4Dos's magic isn't powerful enough to make Win98 bootable from a secondary drive, while there's a recognizable partition on the first...? :}

Possible, but UNlikely, it sounds more like a configuration/install problem.

On top of this all, Win98 won't even detect any USB drives plugged into any port, let alone not recognize them.

This should be ANOTHER kind of problem. :unsure:

jaclaz

Edited by jaclaz
Link to comment
Share on other sites

I am lost now as to which partitions holds what.

Can you resume by filling the dots (example):

Hard Drive at IDE 0:

Partition num: 0, active, Filesystem type is ntfs, partition type is 0x07 <- this is unhidden Win2K

Partition num: 1, Filesystem type is ntfs, partition type is 0x17 <- this is a "hidden" WinXP

Partition num: 2, Filesystem type is fat, partition type is 0x0B <- This is a "hidden" logical Fat32 swap partition (to be used for Win9x?)

Hard Drive at IDE 1:

Partition num: 0, active, Filesystem type is fat, partition type is 0x0C <- This is a Win98 partition

Partition num: 1, Filesystem type is fat, partition type is 0x0B <- This is shared primary Fat32 partition

Partition num: 2, Filesystem type is ext2fs, partition type is 0x93 <- This is a "hidden" Linux, using the ext3 file system

Partition num: 4, Filesystem type is ntfs, partition type is 0x07 <- This is a logical NTFS swap partition for Windows 2K/XP

Maybe Grub4Dos's magic isn't powerful enough to make Win98 bootable from a secondary drive, while there's a recognizable partition on the first...? :}

Possible, but UNlikely, it sounds more like a configuration/install problem.

If I tried just reinstalling Windows 98 altogether, could you give me an example of the best method? Assuming of course = 2nd hard drive, with swap on 1st.

Link to comment
Share on other sites

Partition num: 2, Filesystem type is fat, partition type is 0x0B <- This is a "hidden" logical Fat32 swap partition (to be used for Win9x?)

Maybe that's part of the problem, or at least of the communication problems ;): if grub4dos sees it as (hd0,2) it is NOT a logical volume inside extended, but rather a PRIMARY, and if it it 0x0B it is NOT hidden!

Quick thing to remember:

to hide a partion you add 10 hex to the normal "visible" partition ID:

http://www.win.tue.nl/~aeb/partitions/partition_types-1.html

It is also "queer" that the (hd0,2) partition is of type 0x0B as it is (seemingly) at the end of the first hard disk thus probably well past the CHS limit.

It is possible that due to the various attempts you did partition entries are not normally ordered as usual and this may also be part of the problem.

Please get HDhacker and save the MBR of both hard disk and (first sector of \\.\PhysicalDriven), and, additionally, the bootsector of each partition (first sector of the \\.\LogicalDrivex).

Compress all the files in a .zip and attach it to your next post.

As you might know (or maybe not) I have my peculiar ideas on how drives should be partitioned:

http://www.msfn.org/board/index.php?showtopic=33964&st=6

and remember that the above was years before we had grub4dos and found how to also boot from logical volumes inside extended too,

but the good ol' way never failed, and I still recommend it (when possible - not your case - unless you want to re-install everything):

http://www.boot-land.net/forums/index.php?showtopic=6480&st=9

jaclaz

Link to comment
Share on other sites

Quick thing to remember:

to hide a partion you add 10 hex to the normal "visible" partition ID:

http://www.win.tue.nl/~aeb/partitions/partition_types-1.html

I had just been using the hide function of GRUB/GRUB4DOS. Should I not?

It is also "queer" that the (hd0,2) partition is of type 0x0B as it is (seemingly) at the end of the first hard disk thus probably well past the CHS limit.

It is possible that due to the various attempts you did partition entries are not normally ordered as usual and this may also be part of the problem.

Big oops... I meant "Partition num: 4, Filesystem type is fat, partition type is 0x0B" , and not (hd0,2).

Please get HDhacker and save the MBR of both hard disk and (first sector of \\.\PhysicalDriven), and, additionally, the bootsector of each partition (first sector of the \\.\LogicalDrivex).

Compress all the files in a .zip and attach it to your next post.

I was unable to get the bootsector for the Linux partition, but I've also included my 'menu.lst'.

HDH_Record.zip

Edited by HardDriv'n
Link to comment
Share on other sites

Ok, please don't take it as an offence :), but I've rarely seen such a mess in BOTH the two hard disks connected to a same machine :w00t:.

Mind you, not necessarily one of the items I will point out will be the culprit, but if it is true (and believe me it is true when it comes to this field) that Murphy's Law is valid:

Anything that can go wrong, will go wrong

the current setup is what could be defined in layman's terms as "asking for trouble" :ph34r:.

1st Hard disk (hd0):

  • This hard disk has been evidently been partitioned on a motherboard that uses 240 sectors (Lenovo? :unsure:) for Head geometry.
  • The MBR code is grub4dos.
  • 1st entry in partition table is correct (hd0,0), Primary, the filesystem is NTFS 07 formatted under 2K/XP/2003
  • 2nd entry in partition table is correct (hd0,1), Primary, the filesystem is NTFS 07 formatted under 2K/XP/2003
  • 3rd entry in partition table is WRONG (hd0,2), it is 1F that means "HIDDEN EXTENDED", which is no good, you have a 0F (LBA mapped Extended partition) containing any number of Logical Volumes (one in your case). You don't normally hide the WHOLE Extended partition, but rather the Logical Volumes inside it.
  • Entry in Extended Partition table (which you did not include in the archive, since it cannot be made with HDhacker) should be either 0B (from the grub4dos geometry result) or 0C (rightfully it should be 0C), filesystem of the logical volume (hd0,4) is FAT32 formatted under 2K/XP/2003.

2nd Hard disk (hd1):

  • This hard disk has been evidently been partitioned on a motherboard that uses 255 sectors ("Standard") for Head geometry.
  • The MBR code is LEGACY GRUB.
  • 1st entry in partition table is correct (hd1,0), Primary, the filesystem is FAT32 0C formatted under DOS 7.x/Win9x
  • 2nd entry in partition table is WRONG (hd1,1), Primary, the filesystem is FAT32 0B formatted possibly under Linux by mkdosfs, this partition DOES NOT respect Cylynder/Head boundaries
  • 3rd entry in partition table is correct (hd1,2), Primary, the filesystem is Linux EXT2/3 - without bootsector cannot say more
  • 4th entry in partition table is WRONG (hd1,3), Extended, 05 type (should be 0F), but Cylinder and Head boundary are respected.
  • Entry in Extended Partition table (which you did not include in the archive, since it cannot be made with HDhacker) should be 07, filesystem of the logical volume (hd1,4) is NTFS formatted under Vista/Windows7.

There is NOT one reason in the world to use an Extended Partition to create in it one single volume.

There are TWO advantages in using an Extended partition instead of a Primary:

  1. occupying one single entry in the MBR you can have as many volumes as you like (whilst with Primaries you need to use one of the four entries in the MBR for each volume) - which you are NOT taking advantage of since you have only one volume in it
  2. relatively safer against "dumb" virus corruption - which is pointless in your case since you are using on BOTH drives the single logical volume as "swap".

Given that you are NOT going to run on that PC:

  • MS-DOS <=6.22
  • Windows NT 3.5 or 4.00

My advice to fix (as a first step) things is:

  1. from grub4dos UNhide (hd0,2) or however write in the MBR 0F instead of 1F in third entry of partition table and, from the booted 2K or XP, delete the logical volume (hd0,4) AND the extended partition (hd0,2) and re-create a FAT32 primary partition to be used for swap of Win9x - consider also having it as FAT16 as it is roughly 1 Gb in size and you won't have small sized files in it
  2. from the booted Windows 9x, delete the logical volume (hd1,4) AND the extended partition (hd1,3) and recreate a FAT32 (there is NO point in having a "swap" partition as NTFS, which is normally SLOWER) - consider also having it as FAT16 as it is roughly 1 Gb in size and you won't have small sized files in it
  3. from either the Win9x or the 2K or XP backup the contents of (hd1,1) somewhere, then delete the partition and re-create it (this is CRITICAL as right now the CHS address of this partition overlaps (hd1,0) space), formatting it as FAT 32 before restoring the contents or manually correct the CHS values.

A "general" advice is to STOP hiding and unhiding partitions "at random" ;), seemingly there is NO need to in your setup, it may have been useful when installing things in order to hae C:\ as the drive letter of the system drive in ALL windows (exactly what I personally find confusing) but now each OS should behave like that no matter if the other partitions are hidden or not.

Your menu.lst right now is a mess due to the whole hiding/unhiding stuff, but besides, there is something wrong, you have to make up your mind, you EITHER use "hardcoded" paths or "relative" ones.

Here is a sample with hardcoded paths (with ALL partitions visible):

title Windows 2000 Professional (hd0,0)
root (hd0,0)
chainloader (hd0,0)/ntldr

title Windows XP Professional (hd0,1)
root (hd0,1)
chainloader (hd0,1)/ntldr

title Windows 98 SE (hd1,0)->(hd0,0)
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
root (hd0,0)
chainloader /io.sys

title Linux (hd1,2)
root (hd1,2)
kernel /boot/vmlinuz root=/dev/sdb3 ro vga=normal

The Linux entry misses (like the original) the initrd command, but if it works wiothout it it's allright.

At the MOST, you may want to hide the 2K main partition when booting XP and the XP partition when booting 2K, but anything else would be COMPLETELY unneeded.

Before doing anything of the above, get tiny hexer and my Structure viewers:

http://www.boot-land.net/forums/index.php?showtopic=8734

and check the MBR's and bootsectors with it/them, you should be able to check all of the above.

Only you can say WHY the first hard disk uses a 240 Head gemetry and the second doesn't, and if this is by design or should be corrected, one way or the other.

jaclaz

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...