[gPXE] Change drive number of the iscsi boot drive?

rulerof at gmail.com rulerof at gmail.com
Tue Jan 18 12:50:52 EST 2011


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.Miller at 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








-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://etherboot.org/pipermail/gpxe/attachments/20110118/8da92be6/attachment-0001.html 


More information about the gPXE mailing list