Jump to content

EFI booting thread


kinkadius
 Share

148 posts in this topic

Recommended Posts

OK, so what would happen if you grabbed the NTLDR from x64 and replaced the x86 NTLDR with it?

NTLDR itself is in all likelihood *not* x64 code, just x64 compatible, meaning it shoudl run on x86 as well... NTLDR I believe is what intercepts the calls and forwards to the BIOS?

 

I just tried this part.

Acronis Disc Director couldn't resize the HFS+ partition of my drive, so that part does no work at all, you need to repartition the disk with a smaller HFS+ partition in order to alocate a Win XP partition.

 

So that part of the theory does no work.

 

Thanks for the feedback mate.

OK, you can technically use Acronis' advanced features to clone the existing data to a new partition?

AFAIK though the easier way is to change the hexadecimal "TYPE" value to AF, resize, then change it back.

Link to comment
Share on other sites

Salam Guru,

 

Are you suggesting that everytime windows interfaces with the BIOS, it goes through the ntldr? To abstract that and derive a solution based upon it, you'd have to prove that fact. If that were true, I'd think the ntldr file would be locked, and I've modded it while windows was running, so it seems unlikely that windows only interfaces through that one file. If it works this way, than it would be a lot easier than what I thought. I'm sorry you're receiving so much criticism, but I just need to be sure about this. If I can delete the NTLDR file and have programs read my CPU and play with voltages, even rewrite BIOS firmware without windows locking the NTLDR file, it seems unlikely that this would be the case. However, you may have a point if the NTLDR is loaded into ram and then everything is put through the RAM address of the NTLDR, this would make sense. I don't know how to prove or disprove it, but I think you should go about figuring that out. Don't worry about the partitions, worst comes to worst, you partition a disk using a windows computer and plug it in, the issue is the proof of concept. Once it can be proved that windows can work with an EFI, people will write the software to resize or format the OS X partition. However, it would be a lot simpler if you have a blank disk, and you partition it just to get that out of the way for now.

 

As for what partitions can be read from the EFI module on the Apple computer, that has to be checked and verified as well.

 

The way I thought it worked was that Windows interfaces directly with the BIOS through some low-level calls. In this case, Windows would have to be run on what I would term a BIOS emulation or BIOS sandbox environment, in which bios calls would be converted to the EFI equivalents, and EFI return statements converted to bios equivalents.

Link to comment
Share on other sites

W'Salam Ubaid..

Actually there is a very simple explanation.

For example, double click on an MP3 to play it with WMP10.

Then *while the file is playing* you can delete the MP3, rename it, WHATEVER, no problem!

Why?

The MP3 is loaded into memory and used from there. That is why there is a delay before it starts playing. Same with NTLDR. It's still being used, just not the copy on the HD.

 

http://digg.com/apple/Making_XP_work_with_Apple_s_EFI

Link to comment
Share on other sites

W'Salam Ubaid..

Actually there is a very simple explanation.

For example, double click on an MP3 to play it with WMP10.

Then *while the file is playing* you can delete the MP3, rename it, WHATEVER, no problem!

Why?

The MP3 is loaded into memory and used from there. That is why there is a delay before it starts playing. Same with NTLDR. It's still being used, just not the copy on the HD.

 

http://digg.com/apple/Making_XP_work_with_Apple_s_EFI

 

If that's you who wrote the original "instructions", please come back when you have found a solution to instruction number 9 "booting the Vista CD on a mac", because that doesn't work.

Link to comment
Share on other sites

Yeah, I have a solution :D

(Don't I always :P)

 

Unfortunately it requires using a emulation platform on Mac instead (just to do this one step, so it is OK by the contest rules).

 

Basically run bcdedit.exe and fixntfs.exe from Darwine or within an XP emulator. Sorry, I know it makes it longer and more boring, but what can I do? ;)

Link to comment
Share on other sites

Yeah, I have a solution :D

(Don't I always :P)

 

Unfortunately it requires using a emulation platform on Mac instead (just to do this one step, so it is OK by the contest rules).

 

Basically run bcdedit.exe and fixntfs.exe from Darwine or within an XP emulator. Sorry, I know it makes it longer and more boring, but what can I do? ;)

 

Does anyone want anyone want the Windows XP x64 ntdetect and ntldr files and is it ok to share them? They're from the x64 Evaluation version that was released a good while ago. I think my x64 installation has expired but I can still access the files throught my normal Windows Install.

Link to comment
Share on other sites

Does the x64 NTLDR support EFI? I didn't know that it did. The x64 NTLDR does, however, put the processor in x64 mode on supported processors. It then hands control to ntoskrnl.exe in 64 bit mode. If you don't have a 64 bit version of ntoskrnl.exe you'll crash pretty darn quickly though.

 

To answer some questions: NTLDR does access the BIOS. However, once ntoskrnl.exe is loaded, NTLDR isn't used or called anymore and its memory is up for grabs. So, ntoskrnl.exe does not in any way access the BIOS with the possible exception of the ACPI interface. I don't know about that but I'm pretty sure it doesn't use the INT mechanism.

 

NTLDR is actually 2 pieces. Its a front end and an embedded exe call osldr.exe. You can find osldr.exe on any install CD. (look for osdr.ex_) If you have IDA, you can disassemble osldr.exe with public symbols and it will tell you a whole lot of what goes on during that phase of booting. osldr.exe is semi boot environment agnostic. NT was meant to be booted from architectures that have more OpenFirmware like firmwares. The front end to osldr.exe loads osldr.exe into memory (really it just sets up page tables to map it to the 4 meg location in memory) and puts the CPU into protected mode. The front end provides a function table which provides functionality for reading the disk and other low level functionality needed by osldr.exe. Whenever one of these functions calls is called (say ReadDisk) the front end turns off protected mode, calls the appropriate INT xxh function and returns to protected mode doing any necessary double buffering during that process.

 

Phil

Link to comment
Share on other sites

Merging threads is difficult and would likely just make things pretty hard to understand.

 

Let's say that this current thread is for dealing with the EFI aspects of dual booting.

 

Computer Guru's other thread should be used for discussing his ideas (which are actually pretty good)!

Link to comment
Share on other sites

wake up and stop talking {censored},im sure that not even the half of the persons that say ideas in that topic have an imac to test them too.i got an imac i boot onto efi modifie boot options and see anything else that a classic bios let u see and modifie.i try to boot vista with no luck also winxp 64bit that are full efi support and the machine hangs, also i try with xp's 64bit ntldr and other boot files into a ghost copy of xp 32bit on my fireware HD but no luck either.the bootloader boots everywhere u want but theres no connection between the efi boot files and the xp's chainloaders.anyway the solution is already there http://www.insydeh2o.com/faq/FAQ.htm but is just for oems. :offtopic:

maybe the easiest way is to send an email to these guys. :)

 

http://www.insydesw.com.tw/en/Ps.asp?id=167&from=adm

Link to comment
Share on other sites

Guys,

 

Asking probably a stupid question, just to eliminate and narrow down options. Have anyone removed the HD from the Imac, plugged into a PC (any mobo could do), fully installed a running copy of vista (ensuring that the partitions are GPT/Intel Mac friendly and that Vista is the main/only OS - meaning OSX is removed and deleted). plugged it back to the Imac and tried to boot into this? Sure the drivers on the Vista will all be screwed up given that the PC default drivers will be loaded up. But we can always go to safe mode/console on the vista and see if it can at least go past the boot loader stage (hopefully the ACPI error only occurs on the installer boot) and actually load the OS (be it in Safe mode)?

 

Anyone???

Link to comment
Share on other sites

Thanks Jerabre!

Those are some very interesting points you raised right there... Definitely going to have to look into it.

What about integrating an open source UGA driver into NTLDR or the Windows Kernel?

 

And, thank you so very much for backing up my stance on switching HD's.. it's a ridiculous theory at best ;)

Link to comment
Share on other sites

In a fashion similar to my Linux booting experience, the cursor relocates from the bottom of the screen to the top (after clearing it), followed by my optical mouse light going off... However, eventually it comes back on - suggesting that its booting the installer - albeit without any video output...

 

Nice progress.

 

Have you tried booting linux in serial console mode using a USB serial dongle?

http://www.faqs.org/docs/Linux-HOWTO/Remot...ARATION-SETPORT

 

That would assume that Linux gets as far as successfully initializing the USB hardware, but it might be worth a shot.

 

Another interesting experiment would be to send the Linux kernel the parameters for a diskless NFS boot and plug the box into the network. IF (big if) the Linux kernel can summon the driver for the network chipset (you may have to compile it into the kernel statically), then you should see some DHCP or BOOTP packets being sent out as the kernel seeks a network config for the TFTP server. Might give a clue as to where it is dying, since the kernel will speak to the network before it even attempts to mount root.

 

You should be able to compile the VGA console code entirely out of the Linux kernel, since it does run on non-BIOS embedded x86 hardware. It sounds like you have linux very very close to running. It may just boot up and hop on the network if you make a minimalistic kernel build.

 

Just my two cents.... :D

Link to comment
Share on other sites

Wow, great progress so far... I hope you guys will figure something out before March 7 (that's when I get my MacBook Pro!). But, until then it looks like you guys are doing really good. I haven't heard any success stories yet though... to bad.

 

Hopefully we'll find a good solution - fast!

 

Good luck,

 

KublaKhan

Link to comment
Share on other sites

I recall reading that a Microsoft developer mentioned having an internal build of Vista running on the iMac Core Duo. Lets hope that support is there for the next Vista CTP.

 

Aww, you drop this bomb on us without a link? :guitar: Btw, does this mean that Microsoft has made a default "UGA" (never heard the term before) driver, or that ATI have updated their Vista drivers with the next release? I guess we might have to live with software acceleration for some time in the beginning?

 

Also, bloody great work, man! I'll eagerly await your next post when the next Vista is released.

 

In the meantime... I think you'd succesfully tilted me over the edge to go ahead and order a Macbook Pro. So it maybe won't run XP (still, how the heck did Gateway do it?) but Vista is good enough, and supposedly there is to be a public beta of Vista so I can get my hands on it legally soon as well?

Link to comment
Share on other sites

2 ALL interested:

 

http://www.kernelthread.com/publications/firmware/

 

"Gateway even sells an IA-32 system with EFI-based firmware: the Media Center 6x0,

which uses Insyde Software's InsydeH2O firmware. InsydeH2O includes a CSM ..."

 

So, we can possibly get InsydeH2O with CSM support from there. Do anybody have one of this MC 6x0's?

 

And from that same link:

 

There is some "firmware activity" in the open source world, aimed both at developing open source alternatives to the BIOS, or to even replace t e BIOS with Linux

 

LinuxBIOS

 

LinuxBIOS is an open source project that uses the Linux kernel as the firmware.

 

LinuxBIOS uses a system call LOBOS (Linux OS Boots OS), to boot a new Linux kernel from a running Linux kernel -- without going into real-mode, and without using the BIOS. Thus, LinuxBIOS can be used as a network bootstrapper, and even as a BIOS replacement.

 

FreeBIOS

 

FreeBIOS aims to provide an open source replacement for any computer's firmware, with initial support for Intel-based processors and chipsets.

 

OpenBIOS

 

OpenBIOS is work-in-progress towards an open source firmware implementation that aims to be 100% compliant with Open Firmware.

Link to comment
Share on other sites

ok here is my "drunken master" at its best:

 

EFI = new of boooting

 

it HAS to have a compatibility layer...

 

But that isnt the whole enchilada..

 

The binaries may be encoded.. that a huge feat in itself. . . . (extra . . . . . )

 

 

 

hackers... professionals... minds... we need to give them time to work...

 

 

 

shut up and let them work......

 

 

 

my drunken rant.. thank you.

Link to comment
Share on other sites

 Share

×
×
  • Create New...