HaswellにOpenCoreでmacOS 10.15.3をinstallする。

2020/03/01にOpenCore-0.5.6がreleaseされた。
この新しいversionでHaswell搭載の自作PCにmacOS 10.15.3 Catalinaをinstallする。

# 参考にしたガイド
- https://khronokernel-2.gitbook.io/opencore-vanilla-desktop-guide/
　ここの手順に従う。
- 現在稼働しているmacOSでの作業を前提としている。

#Hardware
graphicボードはなし。CPU内臓のHD4600を使う。
- CPU : core i7 4790S Haswell LGA1150
- MB : ASUS  B85M-G
- Memory : CFD DDR3 1600 8Gx2
- SSD : SanDisk SDSSDHII 120
- HDD : WD20EZRX

#Software
- macOS 10.15.3 Catalina ： ApplicationフォルダにDL
- OpenCore : https://github.com/acidanthera/OpenCorePkg/releases/tag/0.5.6
- MountEFI : https://github.com/corpnewt/MountEFI
- ProperTree : https://github.com/corpnewt/ProperTree
- AppleSupport : https://github.com/acidanthera/AppleSupportPkg/releases
- GenSIMBOS : https://github.com/corpnewt/GenSMBIOS
- iasl : https://www.acpica.org/downloads/




# USB installerを作成
- 16GBのUSBメモリを用意
- Disk UtilityでUSBメモリを初期化。 HFS+/MacOS Journaled,GUID partitionでMyVolumeという名前に
- Terminalで以下を実行

`sudo /Applications/Install\ macOS\ Catalina.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume
`

# EFIフォルダをコピー
- MountEFI.commandでUSBメモリ"Install macOS Catalina"を選択しEFIをマウントする。
- OpenCore-0.5.6-DEBUG.zipを展開
- EFIフォルダを/Volume/EFIにコピー
`cp -R OpenCore-0.5.6-DEBUG/EFI /Volume/EFI`
- Sample.plistをconfig.plistとしてコピー
`cp OpenCore-0.5.6-DEBUG/Docs/Sample.plist /Volumes/EFI/EFI/OC/config.plist`

# AMLファイル
OpenCore-0.5.6-DEBUG/Docs/AcpiSamplesのdslファイルのうち、Haswellでは以下の３つが必要
SSDT-PLUG 、SSDT-EC、SSDT-EHCx_OFF

- iaslでcompileする
` iasl SSDT-PLUG.dsl`でSSDT-PLUG.amlができる。あと２つも同様に作成。
- amlファイルを /Volume/EFI/EFI/OC/ACPIにコピー
`cp *.aml /Volumes/EFI/EFI/OC/ACPI`

# Drivers
- /Volume/EFI/EFI/OC/DriversにはAppleUsbKbDxe.efi,FwRuntimeServices.efi,NvmExpressDxe.efi,XhciDxe.efiが存在している。
- 通常使用するのはFwRuntimeServices.efiのみ。他は削除。
- AppleSupport-2.1.6-DEBUG/Drivers/からApfsDriverLoader.efiとVBoxHfs.efiをOC/Driversにコピーする


#Kextsを集める
- VirtualSMC.kext : https://github.com/acidanthera/VirtualSMC/releases
- Lilu.kext : https://github.com/acidanthera/lilu/releases
- WhateverGreen.kext : https://github.com/acidanthera/whatevergreen/releases
- AppleALC.kext : https://github.com/acidanthera/applealc/releases
- Ethernetのkext: MB/boardのchipに合わせる
 B85M-GのイーサネットカードはRealtek RTL8168G/8111GなのでRealtekを選ぶ。
    - SmallTreeIntel82576 : https://github.com/khronokernel/SmallTree-I211-AT-patch/releases
    - IntelMausiEthernet : https://github.com/Mieze/IntelMausiEthernet
    - AtherosE2200Ethernet : https://github.com/Mieze/AtherosE2200Ethernet/releases
    - RealtekRTL8111 : https://github.com/Mieze/RTL8111_driver_for_OS_X/releases

- 必要なkextsを /Volume/EFI/EFI/OC/Kextsにコピーする 

# GenSIMBIOS
- GenSIMBIOSはgit cloneしてchmod +xしておく
- GenSIMBIOSを起動しGenerate SMBIOSする。今回はiMac17,1を選択しデータを保存しておく。
    - Type:  iMac17,1
    - Serial:  CXXXXXXXXXXL
    - Board Serial: CXXXXXXXXXXXXXXX8
    - SmUUID:  EXXXXXXF-BXXX-4XXX-BXXX-6XXXXXXXXXX5

# ProperTreeでOCのsnapshotをとる
- ProperTreeはgit cloneしてchmod +xして実行可能にしておく
- ProperTreeを起動し /Volume/EFI/EFI/OC/config.plistを開く
- Command+Shift+Rで /Volume/EFI/EFI/OCを選択しsnapshotをとる
　　　　これにより準備したファイル・kextが自動的にconfig.plistに記載される

# ProperTreeでconfig.plistを編集
- ACPI
    - Add : 準備した3つのamlがEnabled Trueになっていることを確認。
    - Block : そのまま
    - Patch : そのまま
    - Quirk : そのまま
- Booter
    - MmioWhitelist : そのまま
    - Quirks : そのまま
- DeviceProperties
    - Add
        - PciRoot(0x0)/Pci(0x1b,0x0) : そのまま
        - PciRoot(0x0)/Pci(0x2,0x0)
            - AAPL,ig-platform-id : 0300220D
            - framebuffer-patch-enable Data 01000000 と行を追加
            - device-id Data 12040000 と行を追加
    - Block : 項目を削除
- Kernel
    - Add : 準備したkextが記載されているか確認。順番はこのまま。
    - Block : そのまま
    - Emulate : そのまま
    - Patch : そのまま
    - Quirks : 
        - AppleCpuPmCfgLock : Trueに
        - AppleXcpmCfgLock : Trueに
        - DisableIoMapper : Trueに
        - PanicNoKextDump : Trueに
        - PowerTimeoutKernelPanic : Trueに
        - XhciPortLimit : Trueに
- Misc
    - BlessOverride : そのまま
    - Boot : そのまま
    - Debug
        - DisableWatchDog : Trueに
    - Entries : そのまま
    - Security
        - Boot
            - AllowNvramReset : Trueに
            - AllowSetDefault : Trueに
            - Vault : Optional　に
            - ScanPolicy : 0　に
        - Tools : そのまま
- NVRAM
    - Add
        - 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 : そのまま
        - 7C436110-AB2A-4BBB-A880-FE41995C9F82
            - boot-args : -v keepsyms=1 alcid=1　に
            - nvda_drv : 00 に
            - prev-lang:kbd : 空に
   - Block : そのまま
   - LegacyEnable : そのまま
   - LegacyOverwrite : そのまま
   - LegacySchema : そのまま
   - WriteFlash : Trueに
- Platforminfo
    - Generic
        - MLB : GenSMBIOSで作成した値を入れる
        - SystemProductName : iMac17,1 
        - SystemSerialNumber : GenSMBIOSで作成した値を入れる
        - SystemUUID : GenSMBIOSで作成した値を入れる
- UEFI
    - Audio : そのまま
    - ConnectDrivers : そのまま
    - Drivers : 準備した３つのdriverが入っていることを確認
    - Input
        - PointerSupportMode : 空に
    - Output : そのまま
    - Protocols : そのまま
    - Quirks
        - IgnoreInvalidFlexRatio : Trueに
        - RequestBootVarFallback : Trueに

# config.plistのチェック

- OpenCore Sanity Checker : https://opencore.slowgeek.com/
- Haswell OC 0.5.6 を選んで、config.plistをDrag&Dropします。 
- チェックされた項目を修正します


# USBメモリから起動
config.plistを保存してrestartしUSBメモリから起動させます。

# Install
DiskUtilityでSSDをAPFS/GUIDでフォーマット。
SSDを選択してインストール。
しばらく時間がかかるが、自然にrebootするので再びinstaller USBで起動。
macOS Installer　が選択されているのでそのまま起動。
インストールが進み、再び自動でrebootする。
もう一度 installer USBで起動し、Catalinaを選択。
無事に起動した。

![Screen Shot 2020-03-09 at 12.19.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85156/50af7a59-a5aa-1b5b-edab-7e594b1b2883.png)

# post install
SSDから起動するには、Installer USBのEFI/EFIフォルダを
SSDのEFIにコピーするだけ。
起動diskをSSDにすれば自動でCatalinaが立ち上がる。