Jump to content

How to boost the OS X boot process...


1,027 posts in this topic

Recommended Posts

I don't have a solution right away, but it appears to be related to the system MKext. Like it is being recreated (by the OS) without one or more kexts.

 

Wait. Isn't there a way to copy the Extensions.mkext out of the way? In single user mode maybe? So that you can expand and compare the content from the before/after copies?

 

 

I will have to read a book before I understand it. Sorry.

 

 

Can't tell right now. Too tired already. maybe later.

 

 

No problem. You're welcome.

 

Bed time now. Good night.

 

 

Morning!

 

I can't boot with X anymore for some reason.

I've taken a copy of Extensions.mkext from /S/L/C/c/S before first shutdown. Then have shut down restarted and let it KP.

 

I've then booted into my backup install and can see that system mkext on the main install hasn't been rewritten since the last good boot.

 

Got to go to work but will try later, clearing individual cache files and try to find which need to be cleared to achieve a good boot again.

 

D

Link to comment
Share on other sites

Why? Because it is not cool to be honest and to tell people where you got your ideas and source code from

Agree, NOBODY knows everything, we only know what we do because we are taught, learn, research or are gifted geniuses. And (predominately in the west) we have freedom of speech and expression - components of democracy.

 

This silent agreement from people, by using products that break the rules, showing lack of any ethics, makes you (as user of said product) part of a self destructing agreement; To kill the hackintosh community. No source code == no hackintosh community.

There is another side, your Dad has taken his experience and knowledge part gained in "rule breaking activities" to enhance the product to the benefit of the lawful provider. I'm pretty sure Apple keep an eye on this forum and use ideas both positive and negatively against us so called non ethical rule breakers.

I mean just look at what is going on in the world; it took people in certain countries 30 years before they woke up, and realized that how they were living sucked. We however don't have that much time.

So far as I know we only get one go at life so we should max it!

 

Guys & gals how did we get to politics and ethics! (and I could not help myself).

 

DHP and contributors we greatly appreciate your commitment, talent and gifts to the community. Don't get sucked, keep up the great and enjoyable work you do which we support, learn and benefit from.

Link to comment
Share on other sites

And I see (in your config/settings.h) that you are using static SMBIOS data. Making me wonder if booting with dynamic SMBIOS data gathering solves this mysterious problem. Can you please check this for me?

 

OK I'll check with dynamic SMBIOS in a mo.

 

As it stands the only cache I need to clear to boot is:

 

Users/Me/Library/Caches/com.apple.nsservicescache.plist

Link to comment
Share on other sites

LOL I didn't even knew this existed. Sounds like a nameserver (ns) things. Checking... Ok. I ran:
plutil -convert xml1 com.apple.nsservicescache.plist

And now I can open it. So what change do you see in the before/after copies?

 

I can't see any difference ... and I don't think it's as simple as this. But I don't think the file had been rewritten between shut down, boot and KP, boot to other install, copy com.apple.nsservicescache.plist!

 

I seem to have to have also booted using my custom boot132 disk, then delete com.apple.nsservicescache.plist then reboot - So some other cache is being written buy the custom boot132.

 

Any ideas welcome - I'll keep playing around with it.

 

D

Link to comment
Share on other sites

Revolution nightly update: Attached are four new (zipped up) files:

 

i386/libsaio/platform.h

i386/libsaio/cpu/cpuid.h

i386/libsaio/cpu/essential.h

i386/libsaio/cpu/intel/dynamic_data.h

 

Please copy them to the correct place and compile Revolution.

 

Note: Patch to fix the core / thread count bug in debug output (for dynamic runs only).

 

Bed time for me now. Good night all ;)

 

Just tried these and no issues to report, done a dynamic run on cpu and all as expected and as my static normally reports. Probably not the confirmation you need in terms of I had nothing broke previous but confirms nothing broken by the changes.

Link to comment
Share on other sites

Revolution nightly update: Attached are four new (zipped up) files:

Thanks again for your work DHP.

I'm testing these now but as DB1, I don't expect to notice anything different with my CPU but I'll report back a successful boot shortly.

 

EDIT: I'm back after a successful boot with the new changes and I don't notice any difference to with dynamic CPU debug. So I take it that's a good thing.

 

I still had the code set with the // gPlatform.RootVolume = rootVolume; uncommented so my machine wouldn't boot until I put it back. lol.

 

Something I spotted which I hadn't tried before DHP, is this time I had two USB flash drives plugged in to the machine and after selecting to boot from the one with Revolution, the code found the other USB and started booting that one. Swapping the order of the USB flash drives solved this, as did removing the other USB (obviously) ;D

 

Time for me to have a(nother) look at that boot problem blackosx reported. The good news is that my brother finished a two (boot) drive test system for me. Like I said I would arrange. Let's find out what this is about.

Nice one DHP's brother. Fingers crossed it helps to solve my issue and I hope it's not just an issue with this mobo here...

Link to comment
Share on other sites

Ahh.. Really?.. bummer!

 

So can I just confirm you have revolution installed on one HDD only?

And would it make a difference that I don't have revolution's stage 2 boot file installed to the system partition? I have a small 1GB partition at the start of each HDD which I use for my bootloader installations.

Link to comment
Share on other sites

No. I have one on both drives. How else could I boot from the drives? Are you saying that I should have it on only one drive? That is new to me.

I have boot0, boot1h and revolution's boot2 on HDD0.

I have boot0, boot1h and Chameleon's boot2 on HDD1.

I have boot0, boot1h and revolution's boot2 on USB

 

Setting HDD0 as default drive in BIOS, then using the drive selection menu (F12 from BIOS) to choose HDD0 to boot from, boots OS X installed on HDD0.

 

Setting HDD0 as default drive in BIOS, then using the drive selection menu (F12 from BIOS) to choose HDD1 to boot from boots Chameleon where I choose to boot OS X installed on HDD0 or OS X installed on HDD1.

 

Setting HDD1 as default drive in BIOS, then using the drive selection menu (F12 from BIOS) to choose HDD0 to boot from, boots OS X installed on HDD0.

 

Setting HDD1 as default drive in BIOS, then using the drive selection menu (F12 from BIOS) to choose HDD1 to boot from boots Chameleon where I choose to boot OS X installed on HDD0 or OS X installed on HDD1.

 

Setting HDD0 as default drive in BIOS, then using the drive selection menu (F12 from BIOS) to choose USB to boot from, boots OS X installed on HDD0.

 

Setting HDD1 as default drive in BIOS, then using the drive selection menu (F12 from BIOS) to choose USB to boot from, boots OS X installed on HDD1

 

So with the Revolution code:

The USB can boot the OS X installation on both of my HDD's depending on default drive in BIOS.

But the HDD can only boot the OS X installation that it's installed on regardless of default drive in BIOS.

 

Am I going crazy or is this how it's supposed to work?

Link to comment
Share on other sites

I think that is how it is supposed to work. One thing I do know about the gigabyte bios and f12, when using f12 it overrides the bios and makes the selected drive the master/1st drive. I have been proven wrong before, but I think it works correctly.

 

I have my main drive (SSD with revolution) set as boot, and connected to Sata2_0 and my backup drive (with chameleon) to Sata2_1. If I boot normal with no f12 I end up in my main drive the way I want it. If I need to recover I use F12 and boot from backup drive, where I can choose main or backup install to boot.

When I boot from USB with Revolution on it my main drive boots, the way I want it.

 

Now except for getting the boot file smaller, is there any other reason we don't have a boot selection menu, or at least the option to have one ? I am not sure, but think it could be good to have this type of option (command-line is fine)

Just a simple "There is two system drives, choose one" or there is only one system drive seen, and I am booting it.

Link to comment
Share on other sites

Hi Groot

 

Thanks for your take on this.

When I boot from USB with Revolution on it my main drive boots, the way I want it.

If you swap drive order in BIOS and boot from USB with revolution will your backup drive be booted?

 

Now except for getting the boot file smaller, is there any other reason we don't have a boot selection menu, or at least the option to have one ? I am not sure, but think it could be good to have this type of option (command-line is fine)

Just a simple "There is two system drives, choose one" or there is only one system drive seen, and I am booting it.

I guess coming from using Chameleon I have been used to being able to select which drive I want to boot in to. And even on my iMac I can hold down the alt key at boot and choose to select a secondary install. So I think it's a good idea to be able to choose (somehow) which partition we can boot from. I know DHP mentioned before about possibly using the 'Startup Disk' preference pane in the future but I still like to able to choose at boot time.

Link to comment
Share on other sites

I have my main drive (SSD with revolution) set as boot, and connected to Sata2_0 and my backup drive (with chameleon) to Sata2_1. If I boot normal with no f12 I end up in my main drive the way I want it. If I need to recover I use F12 and boot from backup drive, where I can choose main or backup install to boot.

When I boot from USB with Revolution on it my main drive boots, the way I want it.

 

This is interesting - If I have chameleon (or chameleon and revolution.) installed on more than one drive then no matter which drive I select (from boot132, chameleon or (in my case) pressing f11 for boot menu.) I boot to the drive set as '0' in BIOS.

Cashes may well come from the drive I selected to boot from but the desktop is that of the drive set to 0 in BIOS!

 

If I have chameleon installed to just 1 drive then i can select my back up drive from chameleon menu (no bootloader installed to bup drive, chameleon installed to main drive.) and actually boot from the backup drive and write caches to that drive. Same with boot132 disk

 

This is what's giving me such a ball ache trying to sus out the KP issue I have...

 

With Revolution - I can only boot once all caches are cleared, as I've said. I can then sleep and restart but if i shut down the next boot gives KP.

 

After clearing caches, booting and/ or after restart with Revolution I dont see a prelinked kernel and my mkext has a date /time prior to me clearing caches, the date/ time matches that of the mkext on my other install!

 

With Revolution installed on only 1 HDD:- If I shut down and restart, letting my install KP and then manage to boot back into my none Revolution install, the mkext contents on the Revolution HDD have not changed!

 

I will try some more tomorrow, if I have time, with just one HDD connected and Revolution .. but for me this defeats the object.

If I can only have Revolution and OSX installed to one HDD then how can I boot to another install without reconnecting a HDD and getting out a USB drive or boot132??

 

+1 for a boot select option! :)

 

D

Link to comment
Share on other sites

Good morning DHP.

I mean there isn't a single case where you (always) end up booting drive 0. Which is what you said a number of posts ago. Remember?
From HDD with Revolution there is. Scenario's 1 & 3 show that. The successful boots to HDD1 from HDD are both from Chameleon.

 

 

However, Thanks for spelling it out for me in black and white and sorry to have caused you all this grief. I guess the problem here is just my understanding of what to expect.

 

When I first started testing Revolution, the automatic detection of UUID wasn't working so I was using a UUID in my c.a.B.p to instruct the code to boot whichever OS X installation I wanted.

 

When you fixed the auto UUID detection and I stopped using the UUID in c.a.B.p and I subsequently lost the ability to boot my second OS X installation from HDD. This had me confused as I still wanted to boot my second OS X installation, and as I could boot it from my USB by swapping drive order in BIOS then I thought it would also work from HDD.

 

Now I know I'm wrong, because as you say, the USB doesn't contain boot.efi so the code goes off looking for the first drive/partition with both a system volume and boot.efi on it. In which case it finds the HDD that's set as default in BIOS first. Simple now.

 

So the choices I have available for me to boot my OS X install on HDD1 are:

* Remove boot.efi from my system on HDD0 (which I don't want to do)

* Add the UUID for my system on HDD1 in to c.a.B.p (which I used to do)

* Install Revolution on to HDD1 and select it from BIOS (F12) (which I don't wish as I use Chameleon to boot Windows)

• Carry on booting my system from USB (which is what I'll probably choose)

Link to comment
Share on other sites

Just a quick Question at FKA. when last did you repair permissions on your drive. Can you do this and tray a power off restart to see if it has again the same symptoms. I have a suspicion you have the wrong permissions on this file.

 

Also what happens if you change this file to read only ?

 

Also all the boot options you have could cause the problems, is it at all possible you can try a clean install on a separate drive (and have all other drives removed) to test and see?

 

@Blackosx,

I boot windows using F12 (I have it on a separate (IDE) drive)

* Install Revolution on to HDD1 and select it from BIOS (F12) (which I don't wish as I use Chameleon to boot Windows)

You could put chameleon on a usb stick, and add revo to both drive 0 and 1 and then it should boot the one selected in bios (or I believe even without changing bios just using f12)

then if you want windows or a choice use the usb to boot and select. I take it your windows is on a partition on drive 1 right ?

Link to comment
Share on other sites

You could put chameleon on a usb stick, and add revo to both drive 0 and 1 and then it should boot the one selected in bios (or I believe even without changing bios just using f12)

Hi Groot.

Yes, that's another option I hadn't considered. I might just do that, thanks :(

Link to comment
Share on other sites

Good morning blackosx,

 

The six scenarios you wrote up in your post are fine. No errors. That's how it should be, but where's the error case in which Revolution fails? I mean there isn't a single case where you (always) end up booting drive 0. Which is what you said a number of posts ago. Remember?

 

Now. Let me re-iterate that when Revolution boots, from either SD/USB or HDD media, then it boots with the same source code. There's not a single if/else/switch clause interfering with this. The main difference here is that you don't have a system volume and/or boot.efi on the USB-stick, and thus it goes out looking for a system volume. Starting with the first drive number of course. Just remove/rename boot.efi on a drive and see for yourself what happens :)

 

Also. You can boot from drive 0 and load a system volume on drive 1, 2, 3, 4, 5 or 6 (which are the drive numbers we support by default) either by using a UUID in com.apple.Boot.plist or by letting Revolution search for one. It doesn't care about the drive number, but it will use the first drive/partition with both a system volume and boot.efi on it. The search starts on the boot drive, which to me is the most logical thing to do, and keep on searching for a drive/partition until it finds one.

 

And not having a drive selection menu in Revolution is another story, which I will skip for now (bugs are to be fixed first). Now back to your original complaint, which was that you always ended up booting from the first drive. That I cannot, for the life of me, reproduce here.

 

p.s. I now have four drives and still can't reproduce this (I did not copy Revolution to all boot drives, but use the boot.efi trick to automatically select a target drive).

 

@FKA: What KP? Didn't it hang at "mig_table_max_displ = 73" (previously)? Also. I wouldn't be surprised when all this boot loader 'mixing' is causing you troubles.

 

BTW: mig_table_max_displ is right before or during AppleACPIPlatform.kext (ACPI and SMBIOS related) gets loaded / executed.

 

Hi DHP

 

I either get a freeze as per scrax pic here

Or I get an appleACPI related KP as per my pic below:

 

post-275122-1299156766_thumb.jpg

 

Regarding booting the correct HDD - Please note I have the same problem with Revolution installed to 2 drives. And I'm not expecting a fix as this I believe is symptomatic of having boot0 and boot1h installed to 2 drives and is the same with Chameleon!

I'm just saying that having a boot option menu would help me fault find without the need to pull my machine apart - but I can work around this.

 

EDIT - Will try adding UUID to both c.b.a.p

 

And Groot - I regularly repair permissions but will try again as per your suggestion.

 

Take care

D

Link to comment
Share on other sites

OK - I think there must be something wrong with my static data. If I disable static ACPI data and load dsdt from extra/acpi no more KP ..

 

Going back to the beginning and collecting ACPI data again!

 

D

Link to comment
Share on other sites

I've gone back and reconverted my DSDT and FACS to liitle e and added to ACPI data.h

have set in settings.h:

 

#define ACPI_10_SUPPORT 1

 

#define PATCH_ACPI_TABLE_DATA 1

 

#define USE_STATIC_ACPI_BASE_ADDRESS 1

 

#define STATIC_APIC_TABLE_INJECTION 0

 

#define STATIC_APIC2_TABLE_INJECTION 0

 

#define STATIC_DSDT_TABLE_INJECTION 1

 

#define STATIC_ECDS_TABLE_INJECTION 0

 

#define STATIC_FACS_TABLE_INJECTION 0

 

#define STATIC_HPET_TABLE_INJECTION 0

 

#define STATIC_SSDT_GPU_TABLE_INJECTION 0

 

#define STATIC_SSDT_PR_TABLE_INJECTION 0

 

#define STATIC_SSDT_SATA_TABLE_INJECTION 0

 

#define STATIC_SSDT_USB_TABLE_INJECTION 0

 

#define LOAD_DSDT_TABLE_FROM_EXTRA_ACPI 0

 

#define LOAD_SSDT_TABLE_FROM_EXTRA_ACPI 0

 

#define LOAD_EXTRA_ACPI_TABLES (LOAD_DSDT_TABLE_FROM_EXTRA_ACPI || LOAD_SSDT_TABLE_FROM_EXTRA_ACPI)

 

#define DROP_SSDT_TABLES 0

 

#define REPLACE_EXISTING_SSDT_TABLES 0

 

#define APPLE_STYLE_ACPI 1 // and 0 tried

 

#define DEBUG_ACPI 1

 

#if USE_STATIC_ACPI_BASE_ADDRESS

#define STATIC_ACPI_BASE_ADDRESS 0x000F96B0

#endif

 

And I get appleACPI KP at boot. ACPI debug:

 

post-275122-1299172289_thumb.jpg

post-275122-1299172310_thumb.jpg

post-275122-1299172334_thumb.jpg

 

If I set:

 

#define PATCH_ACPI_TABLE_DATA 0

#define STATIC_DSDT_TABLE_INJECTION 0

#define LOAD_DSDT_TABLE_FROM_EXTRA_ACPI 1

 

I can boot but some values from DSDT (obviously) are not being patched (SMBus, audio etc ..)

However dsdt must be being read as a: I have no cst errors (pstates work OTB for me.) b: I have alias in scope PR of OEM table so it wouldn't boot if oem table is loaded.

 

debug:

post-275122-1299172489_thumb.jpg

 

 

If I set:

#define PATCH_ACPI_TABLE_DATA 1

#define STATIC_DSDT_TABLE_INJECTION 0

#define LOAD_DSDT_TABLE_FROM_EXTRA_ACPI 1

 

I get same ACPI KP - debug pics to follow:

 

post-275122-1299174999_thumb.jpg

post-275122-1299175020_thumb.jpg

post-275122-1299175044_thumb.jpg

 

Obviously ACPI patcher is patching some OEM table that (for me!) it shouldn't be!

 

I'm afraid that's all I can do for now ... few days of work ahead

 

EDIT - Here's my ACPI data.h (note FACS removed, as have run above tests with and without FACS in data.h - despite: #define STATIC_FACS_TABLE_INJECTION 0) and get the same results

 

data.h.zip

 

EDIT - "rdsp Reserved" seems to return and odd value or no value when "#define PATCH_ACPI_TABLE_DATA 1"

 

Be seeing you

D :)

Link to comment
Share on other sites

Here is something to consider. Do a Google search on "Revo Drive" or simply check your motherboard manual to see if you have spare / unused USB ports on it. These can be used to connect a micro USB to. Adding one or two boot options to the boot drive selection menu.

p.s. My dad practically invented the flash boot drive in 1989 for an industrial setting where normal drives were out of the question (has 51 patents now) so yeah... we have a couple of them here. You wouldn't believe what this does to boot times:

My new Asus Hack boots up in under 1 spin :)

 

ermmm wish I can get one of those ....I have to get one sooooon!!! (my daughter will be happy with a SSD in the mac mini)

My curent SSD does

Sequential Read: up to 210MB/s

Sequential Write: up to 150MB/s

And I thought it was Fast ....

 

 

on the Revo Drive X2 specks are:

100GB-160GB Max Performance

 

* Read: Up to 740 MB/s

* Write: Up to 690 MB/s

* Sustained Write: Up to 550 MB/s

* Random Write 4KB (Aligned): 100,000 IOPS

 

240GB-960GB Max Performance

 

* Read: Up to 740 MB/s

* Write: Up to 720 MB/s

* Sustained Write: Up to 600 MB/s

* Random Write 4KB (Aligned): 120,000 IOPS

Link to comment
Share on other sites

p.s. My dad practically invented the flash boot drive in 1989 for an industrial setting where normal drives were out of the question (has 51 patents now) so yeah... we have a couple of them here. You wouldn't believe what this does to boot times:

My new Asus Hack boots up in under 1 spin :)

 

Unbelievable! :wacko:

Link to comment
Share on other sites

Hi Dutch!

 

Just like I expected. And yes, it is AppleACPIPlatform.kext releted in both cases.

 

Indeed but why? and why only when i set '#define PATCH_ACPI_TABLE_DATA 1' and only inject static DSDT info ? can my custom DSDT be to fault? and if so how?

 

I've made a minimal edits to my dsdt as my MSI ACPI tables are rather hack friendly already!

 

Hi FKA,

 

Nope. Revolution is not cursed with the same bug(s) as Chameleon. You can boot from any drive, no matter how many you have, and Revolution will always use the boot drive to search and load com.apple.Boot.plist, the (system) MKext(s) and (pre-linked) kernel from. I have checked and double checked this so... Revolution loads all files from the boot drive, unlike Chameleon. It simply ignores all helper partitions. And we can do that because of all source code changes.

 

Even if Revolution (inc' boot0 and boot1h) is installed to multiple drives, without the use of UUID in c.a.b.p?

 

Sure, but please understand that we have to make progress in a way that we're not leaving bugs unnoticed / unfixed. This will certainly take some time, before other options and features can be added, but there is the developers point of view / perspective where we first test and retest everything. Feel / be comfortable with it. And then move on to the next step. But not before we are sure that it works.

 

No worries - I'm defining UUID for each drive in respective c.a.b.p and 'that part' is now not causing me any problems!

 

p.s. Keep an eye on your ACPI base address, which may have changed after making changes!

 

Seems to be constant throughout my tests.

 

Anyway thanks again for your responses, I'd love to get to the bottom of my ACPI problems.

 

Cheers

D

Link to comment
Share on other sites

Hi DHP

That isn't true. Not entirely, because scenario's 1 & 3 clearly read: "choose HDD0 to boot from" and thus that is what you want, and that is what you get. No error here. There is no case where you select HDD1 and end up booting HDD0. That would be a/the bug, but there is no bug like that. And this is important for me before I can close this case.

Then it's case closed on that one and hopefully the procedure will be clear for others too if they come across it.

 

That's what the automatic drive selecting is all about. To help people get past the notorious: "Still waiting for root drive" error.

Roger that, and I've seen plenty of posts about that one.

 

Here is something to consider. Do a Google search on "Revo Drive"...

../snip/..

You wouldn't believe what this does to boot times:

My new Asus Hack boots up in under 1 spin :D

I'll join the others here by saying WOW.. that's impressive.

 

Flash is amazing and it reminds me of an Engadget video I watched where Woz spoke about the Fusion IO boards that he helped design (I think?). The future looks very fast indeed..

 

;)

Interesting ;)

Link to comment
Share on other sites

It boots fine when you set PATCH_ACPI_TABLE_DATA set to 0. In which case Revolution doesn't do anything for ACPI patching. Just supplies the base address to the efi-configuration (adding a new table for it) so this makes me think that the supplied / patched DSDT is instead not ok. Try to load / use the original DSDT (as a test) as static data, and see what happens.

 

Have converted stock dsdt and added to data.h. no change, I get the same KP!

 

I have to say the appleACPI KP I'm seeing is identical to the KP I get if I try to boot without loading a dsdt that has had Alias from scope PR section - which would lead me to believe that my DSDT, whether as static data or picked up from /Extra/ACPI isn't being loaded at all when Patch ACPI is set to 1 in settings.h.

 

As per my ACPI debug pics this line makes me wonder:

"FACP Table Patching, fixed reset GAS, replacing factory DSDT"

 

replacing factory DSDT with what?

 

D

Link to comment
Share on other sites

... "Revo Drive" or simply check your motherboard manual..

.. invented the flash boot drive...

..1 spin.. etc

 

We're only 22 years behind ..... ;)

 

My 2011 "flash boot drive" (a.k.a. USB stick) delivers a blistering 22MB/s peak read.

Lost count of the number of spins it takes to boot !!

Link to comment
Share on other sites

 Share

×
×
  • Create New...