Piker-Alpha / macosxbootloader

Pike's bootloader
http://piker-alpha.github.io/macosxbootloader/
Other
259 stars 52 forks source link

All patched machines end up with same HW UUID? #14

Open jim-cathey opened 8 years ago

jim-cathey commented 8 years ago

I have patched two MP1,1 machines, and both end up with the same HW UUID when running El Capitan. Other people apparently also end up with this same UUID. Not a problem... unless you're using Time Machine! The two machines think they're using the same data set, and fight over it, making a mess. Is there a way to get one of them to use something else for a UUID?

Googling the particular Hardware UUID, "2B12FE1B-1090-593B-B740-2E45F371D1E4", shows that other people running this patched boot.efi have it too. For sure one of my machines started life as a 1,1 and I've upgraded its firmware and CPU's to a 2,1 8x3GHz state. The other one says it's a 2,1 and is also is 8x3GHz, but I don't know if it was built that way or was also patched up as I did.

Piker-Alpha commented 8 years ago

Please check IODeviceTree:/efi/platform/system-id and let me know if they are the same, or not. Thanks

jim-cathey commented 8 years ago

Using "ioreg -p IODeviceTree -l", the only "system-id" in there is this:

Machine #1 (MacPro): | { | "SystemSerialNumber" = <"","","","","","","","","","","*"> | "Model" = <4d0061006300500072006f0032002c0031000000> | "DevicePathsSupported" = <01000000> | "name" = <"platform"> | "system-id" = <7ea011783f57a94cb2c8540e8ce14aad> | "FSBFrequency" = | }

Machine #2 (MacPro2): | { | "SystemSerialNumber" = <"","","","","","","","","","","*"> | "Model" = <4d0061006300500072006f0032002c0031000000> | "DevicePathsSupported" = <01000000> | "name" = <"platform"> | "system-id" = <7ea011783f57a94cb2c8540e8ce14aad> | "FSBFrequency" = | }

Piker-Alpha commented 8 years ago

Right. Just what I thought. The SMBIOS data, that is where the system-id is coming from, is the same. We set that value here: https://github.com/Piker-Alpha/macosxbootloader/blob/El-Capitan/src/boot/PlatformExpert.cpp#L26 And sure enough. We can set it to any value you like, on one or both machines with my version of boot.efi Problem is that I don't have the time for it right now. Will do my best. Keep you posted here.

jim-cathey commented 8 years ago

It seems like the HW UUID should seed from something like the machine's serial number, or base MAC address, or something like that. I don't have an explanation for why the two system-id values are the same. Is it possible that the 2,1 flasher that is running around out there, which many including myself have used in order to upgrade to the x8 CPU's, could be messing up system-id?

Piker-Alpha commented 8 years ago

That is very likely, but I made a test version of boot.efi that you may try:

https://ci.appveyor.com/project/Piker-Alpha/macosxbootloader

This should result in a different system-id and Platform UUID. Please give it a try.

jim-cathey commented 8 years ago

It works!

    |     {
    |       "SystemSerialNumber" = <"","","","","","","","","","","">
    |       "Model" = <4d0061006300500072006f0032002c0031000000>
    |       "DevicePathsSupported" = <01000000>
    |       "name" = <"platform">
    |       "system-id" = <0102030405060708090a0b0c0d0e0f10>
    |       "FSBFrequency" = <f58bd11300000000>
    |     }

and

Hardware Overview:

  Model Name:   Mac Pro
  Model Identifier: MacPro2,1
  Processor Name:   Quad-Core Intel Xeon
  Processor Speed:  3 GHz
  Number of Processors: 2
  Total Number of Cores:    8
  L2 Cache (per Processor): 8 MB
  Memory:   11 GB
  Bus Speed:    1.33 GHz
  Boot ROM Version: MP21.007F.B06
  SMC Version (system): 1.7f10
  Serial Number (system):   G...K9UPZ
  Hardware UUID:    DF557FA2-C304-556B-A442-960AB835CB5D

I used the black version, since I normally use gray, and it did echo a lot of single-user type stuff before coming up. But it gets a different systemid and UUID, which is a big step in the right direction.

Piker-Alpha commented 8 years ago

Great, but now the UUID is still static (set to 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10) so you have to change the UUID and compile boot.efi yourself if you want to use this one more computers. Note that you can run uuidgen in a terminal window to get a new UUID.