Jump to content

Chameleon Logo

 

In addition to the many patches a fixes included in this new version, a few new features for the bootloader made this cut.

We’re back again with this new RC4 version. Since the last RC3 release, we received many patches and fixes, and also backported some important features like ATI graphics device injection, EFI64 tables and PCI root configuration. Also added a new boot option for hiding unwanted foreign partitions from the boot menu.

 

Hide Partition

Using this option you can enumerate all your partitions what you would like to remove from the boot menu, the syntax is similar to the Default Partition option but here you can specify many volumes in your com.apple.Boot.plist:

 

 

PciRoot

This is a similar option what you can find in PC_EFI, but we’re doing this a bit different: The default value is still 0 but you can set to any arbitrary value.

 

Visit http://chameleon.osx86.hu for more info and download links.

 

Credit goes to:

Developers: Crazor, Dense, fassl, iNDi, Kabyl, kaitek, mackerintel, mercurysquad, munky, Turbo, zef

Thanks to: bumby, cosmo1t, dfe, Galaxy, kalyway, netkas, sckevyn, XyZ

 

Installer

Dr.Hurt has put together an installer package which is available for download here

As mentioned please do not report problems related to the installer to the Voodoo Team


User Feedback

Recommended Comments



rekursor

Posted

Hi rekur, i have try now, but nothing, the 9800gt is unknown, minimum resolution, 32 MB, don't qe/ci, the problem is the same :)

 

i have try also with original dsdt, nothing like always. I have try again with pc efi and it works, it's really a strange problem)

Does this work with my old rek v2 patch on rc4 ?

This is important to know for me, thanks

Smith@@™

Posted

Does this work with my old rek v2 patch on rc4 ?

 

I think of not but can you attach it to me, so i try?, I have "too much" boot and I could be wrong, sorry

 

Thanks;)

rekursor

Posted

I think of not but can you attach it to me, so i try?, I have "too much" boot and I could be wrong, sorry

 

Thanks;)

np, it's here:

http://www.insanelymac.com/forum/index.php...t&p=1360125

EDIT:please post as many details you see with Waiit=y, the verbose messages about Pciroot uid and so on...

blackosx

Posted

Done.

Have you tested the installer yet?

Also do you have any solution for the MBR. Linux users have a utility called ms-sys which writes a windows compatible MBR. I wish we had something like that too.

Hi Dr. Hurt / Rekursor

 

I have been working with r0m30 at the voodooproject's forums on a revised boot0 file which will run Chameleon from a non-active partition, allowing Windows7 to remain on the active partition with the result of Windows7 happily booting and sleeping when loaded through Chameleon. It works, though the changes need checking and verifying to make sure what has been done is safe/sensible for all setups etc.

 

If this sounds like something to help with your issue then I will point you to the link when the voodooproject's forum is back up from it's current maintenance session.

Smith@@™

Posted

 

 

Same problem rek;)

 

It is as if unable to load "the bios of the vga integrated in the boot", in fact if I force with an external bios, as I wrote, does not work the same :)

 

:)

 

Hi Dr. Hurt / Rekursor

 

I have been working with r0m30 at the voodooproject's forums on a revised boot0 file which will run Chameleon from a non-active partition, allowing Windows7 to remain on the active partition with the result of Windows7 happily booting and sleeping when loaded through Chameleon. It works, though the changes need checking and verifying to make sure what has been done is safe/sensible for all setups etc.

 

If this sounds like something to help with your issue then I will point you to the link when the voodooproject's forum is back up from it's current maintenance session.

 

Is it possible try this boot0 already now?;)

rekursor

Posted

Hi Dr. Hurt / Rekursor

 

I have been working with r0m30 at the voodooproject's forums on a revised boot0 file which will run Chameleon from a non-active partition, allowing Windows7 to remain on the active partition with the result of Windows7 happily booting and ...

If this sounds like something to help with your issue then I will point you to the link when the voodooproject's forum is back up from it's current maintenance session.

Yes please send us a patch, it comes at the good time, i.e before we issue an RC5 release, I'll apply it and test it asap so that we can figure out how good that works

Thanks ;)

 

 

Same problem rek;)

 

It is as if unable to load "the bios of the vga integrated in the boot", in fact if I force with an external bios, as I wrote, does not work the same :)

Now lets go further, please tell if you read any of those msgs:

printf("ERROR: nVidia ROM Patching Failed!\n");

printf("nVidia incorrect PCI ROM signature: 0x%x\n", rom_pci_header->signature);

or if you get any otehr msg please write it down, I have to understand what piece of code fails for you :)

blackosx

Posted

Yes please send us a patch, it comes at the good time, i.e before we issue an RC5 release, I'll apply it and test it asap so that we can figure out how good that works

Thanks :)

Okay, but like I said, it needs an expert eye to make sure this is a good thing and has no bad side-affects.

Link to the Post on VoodooProject's

I have attached a DIFF file for boot0 and it needs to be written in to the first 440 bytes of the MBR.

 

So I installed it using the following command:

sudo dd if=boot0 of=/dev/disk0 bs=440 count=1

 

It's something I tried earlier today which works now, and if deemed sensible to use it, I am sure it can be coded in a cleaner way.

rekursor

Posted

Okay, but like I said, it needs an expert eye to make sure this is a good thing and has no bad side-affects.

I have attached a DIFF file for boot0 and it needs to be written in to the first 440 bytes of the MBR.

 

So I installed it using the following command:

sudo dd if=boot0 of=/dev/disk0 bs=440 count=1

The code looks really ok as you just commented the part where it checks the partition is active so that it can do the trick,

but my concern would be about how to install that (bs=440) for it to work,

classical command like:

sudo fdisk -f boot0 -u -y /dev/rdisk0

would not work anymore ?

blackosx

Posted

but my concern would be about how to install that (bs=440) for it to work,

classical command like:

sudo fdisk -f boot0 -u -y /dev/rdisk0

would not work anymore ?

No, as fdisk will overwrite the complete MBR and destroy the code that Windows has there. Manually installing it won't be a problem as most people by now should be comfortable with that, but if not, I don't know if Dr. Hurt can automate that or not.

rekursor

Posted

No, as fdisk will overwrite the complete MBR and destroy the code that Windows has there. Manually installing it won't be a problem as most people by now should be comfortable with that, but if not, I don't know if Dr. Hurt can automate that or not.

 

Well, I read more the ASM source code and I am wondering why in the following

.Pass1:
;	cmp	 BYTE [si + part.bootid], kPartActive; In pass 1 we are walking on the standard path
;	jne	 .continue				; by trying to hop on the active partition.
;	xor		dh, dh			; Argument for loadBootSector to skip HFS+ partition
						; Signature check.
jmp	.tryToBoot

why dh is unset ?

It seems to me that dh should set to 1 (signature check) if we don't test that the partition is active,

we want to boot the first hfs+ partition that we find no ?

So instead of commenting out xor dh,dh

I would see:

mov dh,1 instead

 

(feels good to read some assembly code again, it's been a while :) )

 

EDIT: and I would add:

we should not comment pass2, because we should in pass 2 check for any active partition,

in other words i would suggest to swap pass1 and pass2

first we check any hfs+ part active or not,

second (not found) we check for any active partition.

blackosx

Posted

Well, I read more the ASM source code and I am wondering why in the following

.Pass1:
;	cmp	 BYTE [si + part.bootid], kPartActive; In pass 1 we are walking on the standard path
;	jne	 .continue			; by trying to hop on the active partition.
;	xor		dh, dh		; Argument for loadBootSector to skip HFS+ partition
					; Signature check.
jmp	.tryToBoot

why dh is unset ?

It seems to me that dh should set to 1 (signature check) if we don't test that the partition is active,

we want to boot the first hfs+ partition that we find no ?

So instead of commenting out xor dh,dh

I would see:

mov dh,1 instead

 

(feels good to read some assembly code again, it's been a while :) )

You're the guru Rekursor, Lol.

My knowledge of assembler is limited and I used the human readable comments already present in the code to guess my way to this. I mean as r0m30 said in the voodooprojects' post, that code was already there, I just commented out the first pass. If you can make sense of it, improve it and make it workable then I look forward to seeing the results. I'm just sorry I don't have the skills to help your further with this.

 

EDIT: and I would add:

we should not comment pass2, because we should in pass 2 check for any active partition,

in other words i would suggest to swap pass1 and pass2

first we check any hfs+ part active or not,

second (not found) we check for any active partition.

That makes sense, but we will still have to install the modified boot0 to the first 440 bytes of the MBR though.

I will test your recommendation on my system as it's already setup for this.

18seven

Posted

IntelCPUPowerManagement loading but SpeedStep not work :( Patch in this thread (#147).

Offset 000284D1 - cpu model for 64 bit kernel (current 0x0F),

Offset 005E6817 - cpu model for 32 bit kernel (current 0x0F). Other CPU models you can grab from cpuid.h. May be need patch not only model type... i don't know.

 

No. I use prepatched kernel.

 

Thanks for the info tea.

 

 

18seven patch is currently integrated in prasys branch, I'll help to make it event more interesting, because we add some other useful shortcuts but basically it's 18seven patch ;)

 

Cool, glad to contribute.

rekursor

Posted

You're the guru Rekursor, Lol.

My knowledge of assembler is limited and I used the human readable comments already present in the code to guess my way to this. I mean as r0m30 said in the voodooprojects' post, that code was already there, I just commented out the first pass. If you can make sense of it, improve it and make it workable then I look forward to seeing the results. I'm just sorry I don't have the skills to help your further with this.

 

 

That makes sense, but we will still have to install the modified boot0 to the first 440 bytes of the MBR though.

I will test your recommendation on my system as it's already setup for this.

ok try this:

replace only the following and tell me if it works for you:

 

.Pass1:
cmp		BYTE [si + part.type], kPartTypeHFS	; In pass 2 we're going to find a HFS+ partition
jne	 .continue							; equipped with boot1h in its boot record
								; regardless if it's active or not.
mov		dh, 1								; Argument for loadBootSector to check HFS+ partition signature.

jmp	.tryToBoot

.Pass2:	
cmp	 BYTE [si + part.bootid], kPartActive; In pass 1 we are walking on the standard path
jne	 .continue							; by trying to hop on the active partition.
xor		dh, dh								; Argument for loadBootSector to skip HFS+ partition
											; Signature check.

DebugChar('*')

Smith@@™

Posted

Yes please send us a patch, it comes at the good time, i.e before we issue an RC5 release, I'll apply it and test it asap so that we can figure out how good that works

Thanks :)

 

 

 

Now lets go further, please tell if you read any of those msgs:

printf("ERROR: nVidia ROM Patching Failed!\n");

printf("nVidia incorrect PCI ROM signature: 0x%x\n", rom_pci_header->signature);

or if you get any otehr msg please write it down, I have to understand what piece of code fails for you :(

 

 

Rek, you think that the problem can be resolved? ;)

blackosx

Posted

ok try this:

replace only the following and tell me if it works for you:

 

.Pass1:
cmp		BYTE [si + part.type], kPartTypeHFS; In pass 2 we're going to find a HFS+ partition
jne	 .continue	; equipped with boot1h in its boot record
		; regardless if it's active or not.
mov		dh, 1		; Argument for loadBootSector to check HFS+ partition signature.

jmp	.tryToBoot

.Pass2:	
cmp	 BYTE [si + part.bootid], kPartActive; In pass 1 we are walking on the standard path
jne	 .continue	; by trying to hop on the active partition.
xor		dh, dh		; Argument for loadBootSector to skip HFS+ partition
					; Signature check.

DebugChar('*')

Already done exactly that and yes, it works great :(

Windows7 still boots and sleeps just fine.

The only question I have is what made Zef comment this out in the first place?

rekursor

Posted

Already done exactly that and yes, it works great :)

Windows7 still boots and sleeps just fine.

The only question I have is what made Zef comment this out in the first place?

Maybe because if you don't install this in the first 440 sectors, it would have no effect anyway ?

 

Rek, you think that the problem can be resolved? :(

I won't resign so easily ;)

but we need more info here's a version with nvidia debug info, please report what it says:

GEdebug.tar.gz

Don't forget to boot with Wait=y

blackosx

Posted

Maybe because if you don't install this in the first 440 sectors, it would have no effect anyway ?

Most probably, yes.

Smith@@™

Posted

Maybe because if you don't install this in the first 440 sectors, it would have no effect anyway ?

 

 

I won't resign so easily :(

but we need more info here's a version with nvidia debug info, please report what it says:

GEdebug.tar.gz

Don't forget to boot with Wait=y

 

 

Ok:

 

LOADED HFS+file

...............

 

nvidia GeForce 9800 GT 512MB NV92 [10de:0614] :: PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)

PROM Address 0xfd300000 Sinature 0x55aa

 

Using PCI-Root-UID value:0

Found SMBIOS ....

Customing SystemID ....

Patched DMI table

Loaded HFS+ file:DSDT.aml

FADT changing PM profile from 0x01 to 0x03

FADT Restart fix applied

FADT changing PM profile from 0x01 to 0x03

FADT Restart fix applied

Patched ACPI version 2 DSDT

Starting Darwing x86_64

.........

 

;)

 

Edit: rek and if we inject directly in the booter this code (this is what i use):

 

Method (_DSM, 4, NotSerialized)
                   {
                       Store (Package (0x16)
                           {
                               "@0,compatible", 
                               Buffer (0x0B)
                               {
                                   "NVDA,NVMac"
                               }, 

                               "@0,device_type", 
                               Buffer (0x08)
                               {
                                   "display"
                               }, 

                               "@0,name", 
                               Buffer (0x0F)
                               {
                                   "NVDA,Display-A"
                               }, 

                               "@1,compatible", 
                               Buffer (0x0B)
                               {
                                   "NVDA,NVMac"
                               }, 

                               "@1,device_type", 
                               Buffer (0x08)
                               {
                                   "display"
                               }, 

                               "@1,name", 
                               Buffer (0x0F)
                               {
                                   "NVDA,Display-B"
                               }, 

                               "NVCAP", 
                               Buffer (0x18)
                               {
                                   /* 0000 */    0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 
                                   /* 0008 */    0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 
                                   /* 0010 */    0x00, 0x00, 0x00, 0x00
                               }, 

                               "VRAM,totalsize", 
                               Buffer (0x04)
                               {
                                   0x00, 0x00, 0x00, 0x20
                               }, 

                               "device_type", 
                               Buffer (0x0D)
                               {
                                   "NVDA,GeForce"
                               }, 

                               "model", 
                               Buffer (0x1D)
                               {
                                   "Nvidia GeForce 9800 GT [G92]"
                               }, 

                               "rom-revision", 
                               Buffer (0x31)
                               {
                                   "Nvidia GeForce 9800 GT [G92] OpenGL Engine [EFI]"
                               }
                           }, Local0)
                       MCDP (Arg2, RefOf (Local0))
                       Return (Local0)
                   }

 

It's possible? Then click in com.apple with a type argument: Graphics Enabler --> 9800GT512 and vary from card to card..

 

I go to sleep, night;)

rekursor

Posted

Edit: rek and if we inject directly in the booter this code (this is what i use):

 

Method (_DSM, 4, NotSerialized)
                   {
                       Store (Package (0x16)
                           {
                               "@0,compatible", 
                               Buffer (0x0B)
                               {
                                   "NVDA,NVMac"
                               }, 

                               "@0,device_type", 
                               Buffer (0x08)
                               {
                                   "display"
                               }, 

                               "@0,name", 
                               Buffer (0x0F)
                               {
                                   "NVDA,Display-A"
                               }, 

                               "@1,compatible", 
                               Buffer (0x0B)
                               {
                                   "NVDA,NVMac"
                               }, 

                               "@1,device_type", 
                               Buffer (0x08)
                               {
                                   "display"
                               }, 

                               "@1,name", 
                               Buffer (0x0F)
                               {
                                   "NVDA,Display-B"
                               }, 

                               "NVCAP", 
                               Buffer (0x18)
                               {
                                   /* 0000 */    0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 
                                   /* 0008 */    0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 
                                   /* 0010 */    0x00, 0x00, 0x00, 0x00
                               }, 

                               "VRAM,totalsize", 
                               Buffer (0x04)
                               {
                                   0x00, 0x00, 0x00, 0x20
                               }, 

                               "device_type", 
                               Buffer (0x0D)
                               {
                                   "NVDA,GeForce"
                               }, 

                               "model", 
                               Buffer (0x1D)
                               {
                                   "Nvidia GeForce 9800 GT [G92]"
                               }, 

                               "rom-revision", 
                               Buffer (0x31)
                               {
                                   "Nvidia GeForce 9800 GT [G92] OpenGL Engine [EFI]"
                               }
                           }, Local0)
                       MCDP (Arg2, RefOf (Local0))
                       Return (Local0)
                   }

 

It's possible? Then click in com.apple with a type argument: Graphics Enabler --> 9800GT512 and vary from card to card..

 

I go to sleep, night;)

 

Ok smith@@ here's another fix attemp for your GE mode, my only ambition is to make it works as good as in PCEFI10.5 no better, hopefully no worse:

GEfix2.tar.gz

Smith@@™

Posted

Nothing. I go really now to sleep;)

rekursor

Posted

Nothing. I go really now to sleep;)

Oh My!

there was a problem with the make and the bin file was obsolete,

 

anyway here's the RC5pre7 that fixes many pbs with the nvidia GE and pciroot detection.

Hope it fixes your problem, but it should fix other problems for everyone on the nv GE.

 

Here:

 

 

Here:

RC5pre7.tar.gz

 

Gosh, I'm so tired too, worked my all week end on these bug fixes, time to make a (little) break :ninja:

H.3.X

Posted

rek, same error here, damn.... GEfix1 let me boot without kp using GE, but no QE or CI, this new one is kp like the others...lets see if smith got more luck. Thanx again, i hope you dont get tired of us. :ninja:

scrax

Posted

Most probably, yes.

The installer use this code for boot1h:

dd if="${resourcesPath}/boot/boot1h" of="$rdev" bs=512 count=2

 

i think that we need just to change it to:

dd if="${resourcesPath}/boot/boot0" of="$disk" bs=440 count=1

 

i'm tring to make the package for it but i don't have the boot0 file modded, can you post it?

blackosx

Posted

The installer use this code for boot1h:

dd if="${resourcesPath}/boot/boot1h" of="$rdev" bs=512 count=2

 

i think that we need just to change it to:

dd if="${resourcesPath}/boot/boot0" of="$disk" bs=440 count=1

 

i'm tring to make the package for it but i don't have the boot0 file modded, can you post it?

If you think it will work then great. I have posted the boot0 file that I am currently using to here on voodooproject's forum. Note: you need to be logged in to get it.

 

If anybody wants to try it before a revised proven installer has been released then make sure you only write it to the first 440 bytes of the MBR. It works for me and should work for everyone but if more people with Windows7 installed on a different partition of the same HDD can test it to see if it works for them then good.

Dr. Hurt

Posted

Nice work on the boot0. This is definitely a step forward.

 

 

The installer use this code for boot1h:

dd if="${resourcesPath}/boot/boot1h" of="$rdev" bs=512 count=2

 

i think that we need just to change it to:

dd if="${resourcesPath}/boot/boot0" of="$disk" bs=440 count=1

 

i'm tring to make the package for it but i don't have the boot0 file modded, can you post it?

 

I modified my script by removing the fdisk install command and adding dd instead. Also removed the part that sets the partition active.

 

Using dd to install boot0 using the installer gives me the "resource busy" error. I think it needs the disk to be unmounted, which is not possible in our case. Any clue?



×
×
  • Create New...