[gPXE] int 10h problem

2011-04-01 Thread 何闯
Deal all,
I just tested int 0x10 BIOS interrupt to draw some pictures.
However, when I coded the follow to enter 640X480 video mode, it seems that the 
actual video mode is 640X100,
I draw a rectangle with range(0,0, 640, 480) to verify, and it resulted in 
range(0,0, 640,100), about a quarter square of a rectangle.


And I noticed that 320X200 video mode is OK, and 320X200 == 640X100, is that 
mean my machine can hand only 64000 pixels?
Can anyone tell me why?


///
void setvga() 
{
__asm__ __volatile__ ( REAL_CODE ( movw $0x4f02, %%ax\n\t  //ax=0x0012 here 
seem stay in the text mode
movw $0x0101, %%bx\n\t
int $0x10\n\t )::);
}


void putpixel(int x,int y,int c)   
{
if(vediobuf == NULL)
{
   vediobuf = (unsigned char*)phys_to_user(0xa); //physic address of 
graphic mode
}
*(vediobuf+x+640*y)=c;
}
/






yours,
soforth___
gPXE mailing list
gPXE@etherboot.org
http://etherboot.org/mailman/listinfo/gpxe


[gPXE] Windows 2008 install directly to iscsi target boot problem

2011-04-01 Thread Tomas K
Hi, I am trying to install Windows 2008 directly to iscsi disk using
gPXE. I've tried almost everything and I am still (now for 2 months)
stuck on this.


I have DHCP set according to guidelines bellow and as iscsi target I
use Openfiler 2.3 (I have also tried CCBoot with the same result).
Booting computer has MB Gigabyte GA-8I915PL-G. There is local HDD in
computer.
I have followed http://etherboot.org...8_iscsi_install .

At first I have used NIC Marvell Yukon 88E8001 and chainloaded gPXE
via PXE, using this I have during installation to iscsi target seen
iscsi disk (when was prompted where to instal to), but i got message
Windows cannot be installed to this disk. This computer's hardware
may not support booting to this disk. Ensure that the disk's
controller is enabled in the computer's BIOS menu. At this point
installation ended, because despite all guidelines I couldn't proceed
any further.

Then I got NIC Intel pro 1000 gt and flashed gPXE1.0.0 rom onto it.
Using this, when I am in selection where to install windows, I select
iscsi drive and I got the same message Windows cannot be installed to
this disk. This computer's ..., but when I click Next, installation
starts and it goes to point where it needs to restart computer. The
problem is, it copy windows files to iscsi disk, but bootloader writes
to local HDD in PC. So after restart, there is no bootloader gPXE
(embedded in NIC) could load.

I have also tried CCBoot to install Windows 7 to and it's the same
problem (without Intel card with flashed gPXE I cannot install to the
disk at all, with that card I could proceed to the point where setup
restarts computer and I find 7 GB written on CCBoot server but loader
is written on local HDD).

When I physically detach local HDD, I couldn't install windows either,
it ends at the point when I select disk to install windows to with
Windows cannot be installed  I have tested this on 2 other
computers and got the same results.

In all cases, gPXE + linux server + Openfiler has exactly the same
results as CCBoot.

I will be grateful for all insights where could the problem be and how
to solve it.
Thank you, TomasK
___
gPXE mailing list
gPXE@etherboot.org
http://etherboot.org/mailman/listinfo/gpxe


Re: [gPXE] Windows 2008 install directly to iscsi target boot problem

2011-04-01 Thread Andrew Bobulsky
Hello Tomas,

The infamous error that you are getting, Windows cannot be installed
to this disk, is, as I found out[1], an issue that's caused by a
combination of Windows' inability to resolve ARC paths for some system
BIOSes in the presence of BIOS INT 13h hooks like the one gPXE uses to
attach its SAN target.

Some of the troubleshooting steps, like attaching an internal hard
drive, allow you to trick (for lack of a better word) Windows into
resolving these ARC paths correctly and proceeding with the iSCSI
installation.  The problem is that it's hit or miss as to whether or
not that will work for your BIOS.  In your case, adding a drive
presented Windows with two installation sources, but the ARC path for
your iSCSI disk still wasn't available to the Windows installer.  As a
result, it only considered your local disk to be bootable, and wrote
the BCD and copied BOOTMGR to *it* while placing everything else on
the SAN.  The SAN disk will get its MBR written, so it'll *try* to
boot, but since there's no actual boot loader on it, it can't boot
without the other [local] drive being available for that data.

You *could* try manually hacking your BCD onto the SAN disk after the
first installation step... it *may* be as simple as a drag/drop from a
workstation that has both disks attached, but you'll more than likely
need to use BCDEdit to get things working right, but that's
*definitely* the most complicated way to get things working.  A BIOS
update couldn't hurt, but I doubt it would fix your problem.

The simplest thing you can do is to install to the local disk and
image over to your SAN.  Obviously, it's also the most time consuming
way to do it, and completely kills the cool factor ;)

The unfortunate thing is that I couldn't find any method to get
Windows to just perform all the installation steps anyway.  It really,
really seems to think that if *it* doesn't know for sure whether a
disk is bootable, that you couldn't know either.   Sigh :P

Cheers,
Andrew Bobulsky

[1]: 
http://social.technet.microsoft.com/Forums/en-US/w7itproinstall/thread/cea6177e-9cb2-420e-bbc0-0cac487e51e2


On Fri, Apr 1, 2011 at 11:26 AM, Tomas K tksoft2...@gmail.com wrote:
 Hi, I am trying to install Windows 2008 directly to iscsi disk using
 gPXE. I've tried almost everything and I am still (now for 2 months)
 stuck on this.


 I have DHCP set according to guidelines bellow and as iscsi target I
 use Openfiler 2.3 (I have also tried CCBoot with the same result).
 Booting computer has MB Gigabyte GA-8I915PL-G. There is local HDD in
 computer.
 I have followed http://etherboot.org...8_iscsi_install .

 At first I have used NIC Marvell Yukon 88E8001 and chainloaded gPXE
 via PXE, using this I have during installation to iscsi target seen
 iscsi disk (when was prompted where to instal to), but i got message
 Windows cannot be installed to this disk. This computer's hardware
 may not support booting to this disk. Ensure that the disk's
 controller is enabled in the computer's BIOS menu. At this point
 installation ended, because despite all guidelines I couldn't proceed
 any further.

 Then I got NIC Intel pro 1000 gt and flashed gPXE1.0.0 rom onto it.
 Using this, when I am in selection where to install windows, I select
 iscsi drive and I got the same message Windows cannot be installed to
 this disk. This computer's ..., but when I click Next, installation
 starts and it goes to point where it needs to restart computer. The
 problem is, it copy windows files to iscsi disk, but bootloader writes
 to local HDD in PC. So after restart, there is no bootloader gPXE
 (embedded in NIC) could load.

 I have also tried CCBoot to install Windows 7 to and it's the same
 problem (without Intel card with flashed gPXE I cannot install to the
 disk at all, with that card I could proceed to the point where setup
 restarts computer and I find 7 GB written on CCBoot server but loader
 is written on local HDD).

 When I physically detach local HDD, I couldn't install windows either,
 it ends at the point when I select disk to install windows to with
 Windows cannot be installed  I have tested this on 2 other
 computers and got the same results.

 In all cases, gPXE + linux server + Openfiler has exactly the same
 results as CCBoot.

 I will be grateful for all insights where could the problem be and how
 to solve it.
 Thank you, TomasK
 ___
 gPXE mailing list
 gPXE@etherboot.org
 http://etherboot.org/mailman/listinfo/gpxe

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


Re: [gPXE] int 10h problem

2011-04-01 Thread Gene Cumm
2011/4/1 何闯 justhechu...@163.com:
 Deal all,
 I just tested int 0x10 BIOS interrupt to draw some pictures.
 However, when I coded the follow to enter 640X480 video mode, it seems that
 the actual video mode is 640X100,
 I draw a rectangle with range(0,0, 640, 480) to verify, and it resulted in
 range(0,0, 640,100), about a quarter square of a rectangle.
 And I noticed that 320X200 video mode is OK, and 320X200 == 640X100, is that
 mean my machine can hand only 64000 pixels?
 Can anyone tell me why?
 ///
 void setvga()
 {
 __asm__ __volatile__ ( REAL_CODE ( movw $0x4f02, %%ax\n\t  //ax=0x0012
 here seem stay in the text mode
 movw $0x0101, %%bx\n\t
 int $0x10\n\t )::);
 }
 void putpixel(int x,int y,int c)
 {
     if(vediobuf == NULL)
 {
    vediobuf = (unsigned char*)phys_to_user(0xa);  //physic address of
 graphic mode
 }
     *(vediobuf+x+640*y)=c;
 }
 /


 yours,
 soforth

I'd suggest looking at other boot loaders and how they write to the
screen (including Syslinux's vesamenu.c32 and gfxboot.c32).  64,000
sounds like the 16-bit limit of 65,536 per segment.

-- 
-Gene
___
gPXE mailing list
gPXE@etherboot.org
http://etherboot.org/mailman/listinfo/gpxe


Re: [gPXE] int 10h problem

2011-04-01 Thread Vaza gpxe
I'd suggest you find out how many bytes there are per pixel. I guess
you have 4 (not 1 you are using) and the resolution you think you see
is actually 640x120. You may also have limited video memory that makes
different resolutions use different pixel sizes

In Reply to:
2011/4/1 何闯 justhechu...@163.com:
 Deal all,
 I just tested int 0x10 BIOS interrupt to draw some pictures.
 However, when I coded the follow to enter 640X480 video mode, it seems
that
 the actual video mode is 640X100,
 I draw a rectangle with range(0,0, 640, 480) to verify, and it resulted in
 range(0,0, 640,100), about a quarter square of a rectangle.
 And I noticed that 320X200 video mode is OK, and 320X200 == 640X100, is
that
 mean my machine can hand only 64000 pixels?
 Can anyone tell me why?


///
 void setvga()
 {
 __asm__ __volatile__ ( REAL_CODE ( movw $0x4f02, %%ax\n\t  //ax=0x0012
 here seem stay in the text mode
 movw $0x0101, %%bx\n\t
 int $0x10\n\t )::);
 }
 void putpixel(int x,int y,int c)
 {
     if(vediobuf == NULL)
 {
    vediobuf = (unsigned char*)phys_to_user(0xa);  //physic address of
 graphic mode
 }
     *(vediobuf+x+640*y)=c;
 }


/


 yours,
 soforth

I'd suggest looking at other boot loaders and how they write to the
screen (including Syslinux's vesamenu.c32 and gfxboot.c32).  64,000
sounds like the 16-bit limit of 65,536 per segment.
___
gPXE mailing list
gPXE@etherboot.org
http://etherboot.org/mailman/listinfo/gpxe


Re: [gPXE] int 10h problem

2011-04-01 Thread Gene Cumm
On Fri, Apr 1, 2011 at 15:15, Vaza gpxe vaza.g...@gmail.com wrote:
 I'd suggest you find out how many bytes there are per pixel. I guess
 you have 4 (not 1 you are using) and the resolution you think you see
 is actually 640x120. You may also have limited video memory that makes
 different resolutions use different pixel sizes

I believe there should be only 4 bits at that video mode.

Soforth, I'd suggest examining http://www.ctyme.com/intr/int-10.htm
for starters.  I believe INT 10h AX 4F00h is the start of VESA related
info that Syslinux uses for vesamenu.c32 (and possibly gfxboot.c32)

-- 
-Gene

 In Reply to:
 2011/4/1 何闯 justhechu...@163.com:
 Deal all,
 I just tested int 0x10 BIOS interrupt to draw some pictures.
 However, when I coded the follow to enter 640X480 video mode, it seems
 that
 the actual video mode is 640X100,
 I draw a rectangle with range(0,0, 640, 480) to verify, and it resulted in
 range(0,0, 640,100), about a quarter square of a rectangle.
 And I noticed that 320X200 video mode is OK, and 320X200 == 640X100, is
 that
 mean my machine can hand only 64000 pixels?
 Can anyone tell me why?

 
 ///
 void setvga()
 {
 __asm__ __volatile__ ( REAL_CODE ( movw $0x4f02, %%ax\n\t  //ax=0x0012
 here seem stay in the text mode
 movw $0x0101, %%bx\n\t
 int $0x10\n\t )::);
 }
 void putpixel(int x,int y,int c)
 {
     if(vediobuf == NULL)
 {
    vediobuf = (unsigned char*)phys_to_user(0xa);  //physic address of
 graphic mode
 }
     *(vediobuf+x+640*y)=c;
 }

 
 /


 yours,
 soforth

 I'd suggest looking at other boot loaders and how they write to the
 screen (including Syslinux's vesamenu.c32 and gfxboot.c32).  64,000
 sounds like the 16-bit limit of 65,536 per segment.
___
gPXE mailing list
gPXE@etherboot.org
http://etherboot.org/mailman/listinfo/gpxe


Re: [gPXE] int 10h problem

2011-04-01 Thread 何闯
Thanks for the clue, I will check the code in vesamenu.c32 and find why. :)



At 2011-04-02,Gene Cumm gene.c...@gmail.com wrote:

On Fri, Apr 1, 2011 at 15:15, Vaza gpxe vaza.g...@gmail.com wrote:
 I'd suggest you find out how many bytes there are per pixel. I guess
 you have 4 (not 1 you are using) and the resolution you think you see
 is actually 640x120. You may also have limited video memory that makes
 different resolutions use different pixel sizes

I believe there should be only 4 bits at that video mode.

Soforth, I'd suggest examining http://www.ctyme.com/intr/int-10.htm
for starters.  I believe INT 10h AX 4F00h is the start of VESA related
info that Syslinux uses for vesamenu.c32 (and possibly gfxboot.c32)

-- 
-Gene

 In Reply to:
 2011/4/1 何闯 justhechu...@163.com:
 Deal all,
 I just tested int 0x10 BIOS interrupt to draw some pictures.
 However, when I coded the follow to enter 640X480 video mode, it seems
 that
 the actual video mode is 640X100,
 I draw a rectangle with range(0,0, 640, 480) to verify, and it resulted in
 range(0,0, 640,100), about a quarter square of a rectangle.
 And I noticed that 320X200 video mode is OK, and 320X200 == 640X100, is
 that
 mean my machine can hand only 64000 pixels?
 Can anyone tell me why?

 
 ///
 void setvga()
 {
 __asm__ __volatile__ ( REAL_CODE ( movw $0x4f02, %%ax\n\t  //ax=0x0012
 here seem stay in the text mode
 movw $0x0101, %%bx\n\t
 int $0x10\n\t )::);
 }
 void putpixel(int x,int y,int c)
 {
 if(vediobuf == NULL)
 {
vediobuf = (unsigned char*)phys_to_user(0xa);  //physic address of
 graphic mode
 }
 *(vediobuf+x+640*y)=c;
 }

 
 /


 yours,
 soforth

 I'd suggest looking at other boot loaders and how they write to the
 screen (including Syslinux's vesamenu.c32 and gfxboot.c32).  64,000
 sounds like the 16-bit limit of 65,536 per segment.
___
gPXE mailing list
gPXE@etherboot.org
http://etherboot.org/mailman/listinfo/gpxe