Jump to content
12 posts in this topic

Recommended Posts

Hello there!
I have built a new PC for myself and I would like to use two operating systems - macOS Catalina and Windows 10.

 

My configuration:

  • Ryzen 5 3600
  • Asus Prime X570-P
  • Sapphire RX 5500 XT 8GB
  • Kingston A2000 500GB Nvme
  • WD Blue 1TB
  • and other components

 

I tried to install macOS Catalina using OpenCore, on the second attempt I did it and everything started. I installed macOS Catalina on my WD Blue HDD with a 120GB allocation. But I also wanted to install Windows 10 on a Kingston A2000 500GB Nvme since I am using Win10 about 90% of the time. After I installed Win10, I lost the ability to boot my MacOS Catalina :( I can boot macOS Catalina using USB Flash. But I wanted both systems to boot without using USB Flash, as is on my laptop, but I use Clover there.

 

After that, I deleted everything and installed Windows 10 from scratch on Kingston A2000 500GB Nvme. And now I only use Win10, but I sometimes need MacOS and would like to have it beside me.

So I want to know if it is even possible to install these two operating systems on my PC so that they work well?
If so, how can I do that? Is it possible to do it so that my current Win10 system is not damaged?

 

Thanks.

  • 1 month later...
  • 2 weeks later...

Why ? Works better than open core, why emulate a mac on PC to boot windows? Just run it natively on the hardware. I had open core booting windows, right up to the point where I had to re-install windows. Now I just use the bios, not like I'm doing it everyday.

 

  • Like 1
On 4/26/2020 at 11:44 AM, moozuki said:

Why ? Works better than open core, why emulate a mac on PC to boot windows? Just run it natively on the hardware. I had open core booting windows, right up to the point where I had to re-install windows. Now I just use the bios, not like I'm doing it everyday.

 

Windows tried to control UEFI settings including boot device etc

If opencore boots Windows modify of boot order can’t happen 

I had windows modify clover and OC efi partitions a few times

where I had to boot from usb so could boot macOS the fix what Microsoft screwed up 

 

I actually just solved my Windows multiboot issues with both the standard OC 5.8 release and the NDK fork which supposedly masks all acpi modifications from Windows. The trick was to blessoverride the windows boot manager path. Also think that the alphabet case was important. The path may be case sensitive.
 

I used Clover to get the proper path by pressing spacebar on Windows in the menu and take that exact path and plug it into the BlessOverride section of your config.plist. Someone else here on Insanelymac came up with that idea.
 

Anyhow all works now. Only issue is that one or two of my usb ports or devices fails to be recognized in Windows if booting from Opencore sometimes. Think its my airport wifi card. Also sometimes the boot order flips in bios and skips the opencore menu and goes straight into Windows but if its Windows thats doing this like you say and that booting from Opencore directly solves this its good to know. Just have to fix my usb issue.

 

Thanks
 

  • 3 months later...

You can boot into Windows or any other OS with a vanilla OpenCore, provide you meet two requisites:

 

1. Don't do any ACPI patching from OC. I.e., nothing under ACPI > Patches. This is ugly and not recommended, anyway.

2. Any DSDT/SSDT table you are modifying must have a definition of the OS such changes are applicable. See example below:

/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20200110 (64-bit version)
 * Copyright (c) 2000 - 2020 Intel Corporation
 * 
 * Disassembling to symbolic ASL+ operators
 *
 * Disassembly of iASLEKL6XS.aml, Sat Aug  1 11:42:33 2020
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x000000A1 (161)
 *     Revision         0x02
 *     Checksum         0x79
 *     OEM ID           "ACDT"
 *     OEM Table ID     "CpuPlug"
 *     OEM Revision     0x00003000 (12288)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20200110 (538968336)
 */
DefinitionBlock ("", "SSDT", 2, "ACDT", "CpuPlug", 0x00003000)
{
    External (_PR_.CPU0, ProcessorObj)

    If (_OSI ("Darwin"))
    {
        Method (PMPM, 4, NotSerialized)
        {
            If ((Arg2 == Zero))
            {
                Return (Buffer (One)
                {
                     0x03                                             // .
                })
            }

            Return (Package (0x02)
            {
                "plugin-type", 
                One
            })
        }

        If (CondRefOf (\_PR.CPU0))
        {
            If ((ObjectType (\_PR.CPU0) == 0x0C))
            {
                Scope (\_PR.CPU0)
                {
                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        Return (PMPM (Arg0, Arg1, Arg2, Arg3))
                    }
                }
            }
        }
    }
}

The kicker here is the line "If (_OSI ("Darwin")) { ... }". This causes its contents (aka "anything in between the { }") to be applicable ONLY on macOS, and skipped if any other OS - Windows, Linux, BSD, Solaris, Minix, BeOS, you name it.

 

Obviously, other OS might decide to change things on your ESP partition/EFI files, so be aware while using this in one single disk. While the advice of one physical disk per OS still applies, this is not an option for laptop users or ultra compact systems, so the above should fix your needs of multiple OS.

Edited by Alex HQuest
  • 1 month later...
On 8/1/2020 at 8:50 AM, Alex HQuest said:

You can boot into Windows or any other OS with a vanilla OpenCore, provide you meet two requisites:

 

1. Don't do any ACPI patching from OC. I.e., nothing under ACPI > Patches. This is ugly and not recommended, anyway.

2. Any DSDT/SSDT table you are modifying must have a definition of the OS such changes are applicable. See example below:


/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20200110 (64-bit version)
 * Copyright (c) 2000 - 2020 Intel Corporation
 * 
 * Disassembling to symbolic ASL+ operators
 *
 * Disassembly of iASLEKL6XS.aml, Sat Aug  1 11:42:33 2020
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x000000A1 (161)
 *     Revision         0x02
 *     Checksum         0x79
 *     OEM ID           "ACDT"
 *     OEM Table ID     "CpuPlug"
 *     OEM Revision     0x00003000 (12288)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20200110 (538968336)
 */
DefinitionBlock ("", "SSDT", 2, "ACDT", "CpuPlug", 0x00003000)
{
    External (_PR_.CPU0, ProcessorObj)

    If (_OSI ("Darwin"))
    {
        Method (PMPM, 4, NotSerialized)
        {
            If ((Arg2 == Zero))
            {
                Return (Buffer (One)
                {
                     0x03                                             // .
                })
            }

            Return (Package (0x02)
            {
                "plugin-type", 
                One
            })
        }

        If (CondRefOf (\_PR.CPU0))
        {
            If ((ObjectType (\_PR.CPU0) == 0x0C))
            {
                Scope (\_PR.CPU0)
                {
                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        Return (PMPM (Arg0, Arg1, Arg2, Arg3))
                    }
                }
            }
        }
    }
}

The kicker here is the line "If (_OSI ("Darwin")) { ... }". This causes its contents (aka "anything in between the { }") to be applicable ONLY on macOS, and skipped if any other OS - Windows, Linux, BSD, Solaris, Minix, BeOS, you name it.

 

Obviously, other OS might decide to change things on your ESP partition/EFI files, so be aware while using this in one single disk. While the advice of one physical disk per OS still applies, this is not an option for laptop users or ultra compact systems, so the above should fix your needs of multiple OS.

 

Can this be done for any of the aml files?

  • Thanks 1
×
×
  • Create New...