Hello Shao, Binh,

I was in a similar situation some months back: I wanted to boot WinPE from iSCSI yet have Windows consider the local HDD to be Drive 0 instead of Drive 1. I wrote about the problem I had and the solution I used, though it wasn't quite what I desired, it ended up working. Linky: http://social.technet.microsoft.com/Forums/en-US/w7itproinstall/thread/cea6177e-9cb2-420e-bbc0-0cac487e51e2

Anyway, one thing I recall was that I tried using an encapsulated option to make gPXE map the iSCSI drive as 0x81 instead of 0x80… but gPXE seemed to ignore the config. I recompiled the source to use 0x81 by default, but that didn't boot. Neither did MEMDISK when configured for 0x81. Still not sure why.

Something about the BIOS of my target system didn't let Windows see a remapped BIOS drive as a drive that's available through BIOS because it destroyed the ARC path to NT drive relationship for the remapped disk, which Windows *requires* for installation. I did find that I could map to GRUB4DOS's “hd32” (CD-ROM) and boot that way; I still nuked the ARC path from the CD drive's object, but that didn't matter for what I was doing.

Also, for BCD entries when booting from BOOTMGR, the ARC path syntax (eg multi(0)disk(0)rdisk(1)partition(1)) is irrelevant. The Windows Boot Manager actually resolves ARC paths to NT disk objects prior to starting WINLOAD, but it does use BIOS INT 13h to work with hard disks. Now, whether it maps the disk it was loaded from as \Device\Harddisk0 or if it just sequentially enumerates BIOS drives to \Device\HarddiskX as they're found… your guess is as good as mine :P

In regards to your question, Binh, you might like to read this: http://homepage.ntlworld.com./jonathan.deboynepollard/FGA/windows-nt-6-boot-process.html

It may not cover precisely what you're looking for, but it is a very informative read if you're curious about the inner workings of the Windows boot process ;)

Cheers,
Andrew Bobulsky


On Jan 18, 2011 12:00pm, Shao Miller <shao.mil...@yrdsb.edu.on.ca> wrote:







On 1/18/2011 11:42, Binh Thai wrote:



Hi Shao,



Thanks for your
reply.



I forgot to
mention that I meant “drive 0” in the context of Windows
disk drive numbering.




Oh, ok.





My goal is to boot a system from an iscsi target
without disrupting the disk drive numbers of the internal
hard drives. For example, if I have one internal hard drive,
I want to see it detected as Disk 0 whether I boot from it
or from the iscsi target. If I boot from the iSCSI target, I
want to see the iscsi target as drive 1, not 0. Currently,
the iSCSI drive would become Disk 0 and push the internal
drive to Disk 1.



I think the PnP
enumeration process in Windows has some relationship with
the BIOS drive numbering. Could you please point me to some
in-depth documentation regarding the BIOS drive numbering
and how int13 is used?






I do not believe that BIOS drive numbers and Windows drive
numbers have any correlation. Use Microsoft's SysInternals'
LoadOrd.exe to check your driver load order. If you ensure that
the drivers responsible for the internal storage adapters are
loaded before the iSCSI driver, then I think your odds are better
for the iSCSI HDD getting a higher number than the internal
HDD(s).



However, it might be the case that the startup protocol
hands an MBR signature from boot-up to the drive number assignment
routine; in this case, whatever drive is used for booting (your
iSCSI HDD) will be drive 0 no matter what. You can use
Microsoft's SysInternals' WinObj.exe to check the mapping of the
ARC names (\ArcName\) to the drive numbers (\Device\HarddiskX).



I can only think of a convoluted way to push the boot drive
up and away from Windows drive number 0:

- Boot the iSCSI drive

- Have GRUB4DOS on the drive

- Have GRUB4DOS remap the drive number from 0x80 to 0x81

- Chain-load the Windows boot-loader

- Have BOOT.INI/BCD attempt to boot
multi(0)disk(0)rdisk(1)partition(1) instead of rdisk(0) (0x81
instead of 0x80)

- If the iSCSI drive is \Device\Harddisk1 then hopefully Windows
would also further connect it as multi(0)disk(0)rdisk(1).
ARC _and_ HDD numbers would then be 1 instead of 0. (Untested.)



So having said that, I'd like to ask: _why_ do you want the
drive numbers numbered in this way?



- Shao Miller








_______________________________________________
gPXE mailing list
gPXE@etherboot.org
http://etherboot.org/mailman/listinfo/gpxe

Reply via email to