Jump to content

Gateways EFI models with Windows XP... how did THEY do it?


eobet
 Share

90 posts in this topic

Recommended Posts

Yea I personally messed with the TianoCore EFI files. There is a working Shell and EFIs but the legacyboot EFI is looking for a BIOS module which isn't included so it errors out saying it can't find one. The compiled binaries for x86 are under Other>Maintained>Application>Shell>Bin>ia32 in the extracted archive.

Link to comment
Share on other sites

the legacyboot EFI is looking for a BIOS module which isn't included so it errors out saying it can't find one.

Ah, so CSM is an EFI module (which could possibly be loaded in the iMac's EFI) and not compiled directly into EFI?

Link to comment
Share on other sites

I'm not that knowledgable, but I wouldn't say its 120% uncompatible. It doesn't, however, run on a 945 chipset (they weren't even out when this was produced, i don't think). I'm not completely sure, but I think it runs an 848p intel chipset. the onboard stuff uses the 82801EB. I think the 848 is pretty similar to an 865 series. The video card is an integrated Raedon 9200. I'll attach a text document from "System Information" if anyone wants to look for it for any other clues, but I guess a bunch of people have kind of given up on this.

sysinfo.txt

Link to comment
Share on other sites

...legacyboot EFI is looking for a BIOS module which isn't included so it errors out saying it can't find one...

Almost for sure it's just a binary image of BIOS. Looking at strings inside "legacyboot EFI" can't you identify some details on that file - e.g. name, size, location? Actually it isn't a problem to save an image of BIOS from 945 chipset and lay it into appropriate place with appropriate name.

Actually I just looked inside legacyboot.efi. Looks like you misinterpreted error message - I can find only this: LegacyBoot: Too few arguments

LegacyBoot: Too many arguments

legacyboot: Can not find the LegacyBios protocol.

legacyboot: Can not locate the BBS table.

Call the Legacy Bios Protocol with %s

 

So, what EXACTLY it errors out?

Link to comment
Share on other sites

so what we're saying here is that you could possibly dump a 945 BIOS to a file, copy it to the EFI partition, and call legacyboot.efi supplying the BIOS image file as an argument?

 

has anyone tried it?? :withstupid:

Link to comment
Share on other sites

lol... ok, good answer.

 

now anyone care to answer my second question? the one, i hoped would be obvious, was the more relevant?

 

I think the answer will be "No" :)

 

For now I just found a promising way:

http://www.usenix.org/events/usenix03/tech...new/agnew_html/

 

Highly recommended reading ;)

 

In short:

"The open source stackable BIOS, described in this paper, eliminates the proprietary BIOS from numerous motherboards"

http://www.usenix.org/events/usenix03/tech...w_html/img1.png

 

Further investigation gives me this:

http://www.missl.cs.umd.edu/winint/index2.html

 

That people just make use of BOCHS for bios&VGAbios emulation, but for now I can't get how they get out of emulation mode.

 

nope, no one has tried it, and no, it won't work :)

 

And exactly why?

Link to comment
Share on other sites

Well sorry if that sounded stuck up or what not...

In my experience (yes, I have tried it) flashing one mobo with another's BIOS never works. Never.

 

Like mentioned elsewhere in the thread, if the Gateway was a 945 with built in ATi then..and only then, maybe it would work.

But to flash from a proprietry vendro-modified desktop pc to a Macintel? Nope

Link to comment
Share on other sites

right, CG... lets just look again at what I *actually said* :

 

"so what we're saying here is that you could possibly dump a 945 BIOS to a file, copy it to the EFI partition, and call legacyboot.efi supplying the BIOS image file as an argument?"

 

did i mention flashing a bios? did i mention the gateway machine? did you even read my post?

 

we're talking about legacyboot.efi, and the fact it appears to be failing because of a missing argument. someone hypothesised that a BIOS image might be what its looking for, so I suggested using an image from a i945 board, and supplying it *AS A FILE* to the EFI program 'legacyboot'.

Link to comment
Share on other sites

My understanding was that we might need to study the Gateway's BIOS to get a better understanding of how it operates with regard to Windows XP, not just to try and flash a Macintel. I agree that the former won't work, but that doesn't mean we can stand to be so matter of fact that nothing can come of this.

Link to comment
Share on other sites

Well sorry if that sounded stuck up or what not...

In my experience (yes, I have tried it) flashing one mobo with another's BIOS never works. Never.

 

Like mentioned elsewhere in the thread, if the Gateway was a 945 with built in ATi then..and only then, maybe it would work.

But to flash from a proprietry vendro-modified desktop pc to a Macintel? Nope

 

To be clean.

the whole idea is based on assumption that when legacyboot.efi goes into play, it loads BIOS image in appropriate "shadow bios" portion of RAM and than makes something like warm reset without memory cleaning and device reinitialisation. It looks as easiest way to maintain BIOS compatibility for me. Again, it's just my assumption.

Basically, all that we need - just preload BIOS and VGA BIOS in appropriate physical memory addresses, set CPU into 16-bit mode and longjump into entrypoint of BIOS memory copy. Since then there will be no difference between actual and our copies of BIOS.

So, I think that legacyboot.efi does something like this.

 

My understanding was that we might need to study the Gateway's BIOS to get a better understanding of how it operates with regard to Windows XP

 

I submitted a post, on top of page, for this:

"LinuxBIOS: A Study of BIOS Services as used by Microsoft Windows XP"

 

Citing from there:

"4. Conclusion

Having analyzed both Windows 2000 and Windows XP, we hereby conclude that....

We have some good news. ACPI, BIOS32, PnP BIOS, basic BIOS Data Area, and Extended BIOS Data area do NOT seem to be necessary for Windows to start. And even if they are present, they can be disabled without ill effects on Windows. This leaves us with BIOS interrupts only. See section 3.1.5 For details on Interrupts."

Link to comment
Share on other sites

we're talking about legacyboot.efi, and the fact it appears to be failing because of a missing argument. someone hypothesised that a BIOS image might be what its looking for, so I suggested using an image from a i945 board, and supplying it *AS A FILE* to the EFI program 'legacyboot'.

To find out what exactly legacyboot.efi reqiures, it may be worth looking at its sourcecode, though I am not able to find legacyboot.efi's source code in the TianoCore EDK packages, although it contains sources for legacybios and legacybiosthunk. I attached these files to this post because I don't understand C very well.

Link to comment
Share on other sites

I attached these files to this post.

 

Thanks.

 

So, almost exactly as I thought:

 

EFIAPI *EFI_LEGACY_BIOS_INSTALL_ROM

Routine Description:

Load a legacy PC-AT OPROM on the PciHandle device. Return information

about how many disks were added by the OPROM and the shadow address and

size.

 

EFIAPI *EFI_LEGACY_BIOS_SHADOW_ALL_LEGACY_OPROMS

Shadow all legacy16 OPROMs that haven't been shadowed.

Warning: Use this with caution. This routine disconnects all EFI

drivers. If used externally then caller must re-connect EFI

drivers.

 

EFIAPI *EFI_LEGACY_BIOS_INT86

Routine Description:

Thunk to 16-bit real mode and execute a software interrupt

 

EFIAPI *EFI_LEGACY_BIOS_FARCALL86

Routine Description:

Thunk to 16-bit real mode and call Segment:Offset. Regs will contain the

16-bit register context on entry and exit.

 

EFIAPI *EFI_LEGACY_BIOS_BOOT

Routine Description:

Attempt to legacy boot the BootOption.

 

 

Exept one thing. It looks like LegacyBios loads real BIOSes from devices&MoBo for shadowing.

It does not make my idea not doable but makes it a lot harder. Kinda "last resort".

But now I'm sure - it WILL work.

I personally recommend to wait a bit for new Vista beta, and if that thing will not boot, return to this thread.

 

By the way, IF NEXT VISTA BETA WILL BOOT DIRECTLY FROM CD - WHO'LL GET PRIZE?

Link to comment
Share on other sites

dmdimon -

I'd suggest that if you think there is a way to get it working now, that you spell out the steps to do so

 

There IS a way to make it work, but not exactly "now".

 

For "make it work" we need:

a) BIOS image files for ALL devices, which contain them - e.g. motherboard, VGA, whatelse. They should be from maximally "alike" devices

b ) - hard part - Self-coded "loader" that will load BIOS images into appropriate places in memory and mark them read-only - instead of EFIAPI *EFI_LEGACY_BIOS_SHADOW_ALL_LEGACY_OPROMS

c) make a call to EFIAPI *EFI_LEGACY_BIOS_BOOT most probably indirect, thru EFI menu like "legacy boot" or such

 

Instead of this I again propose to pay attention at LinuxBoot. It's almost ready for showtime. Look at picture, I posted before - img1.png in attach. That people can run Win2K ON VIRTUAL BIOS! And w2k itself runs native!

 

In this case all we need - use EFI as loader for LinuxBoot to run. Thats it.

post-191-1139312897_thumb.png

Link to comment
Share on other sites

 Share

×
×
  • Create New...