If you own a UX430UA or similar and ever wanted to install macOS Monterey, be it for development purposes or just for fun, but couldn’t afford a macbook, then this is for you.
Disclaimer
This process requires basic knowledge of command lines, linux, hackintoshing and preferably an Ethernet connection, but I tried to keep it as pain-free as possible.
I will be working on an Asus Zenbook UX430UA with a 7th gen i5 and 4gb of RAM. I do not know whether it’s going to work on the other models since I only have a UX430UA, but they have been reported to be very similar and I assume they should only require a few changes based on the processor.
Don’t start working on this if you have deadlines or important work. Hackintoshes are not something you should be relying on as a work machine, although they worked for me so far.
Last but not least, I want to say huge thanks to the contributors of OpenCore and to everyone who helped in making hackintoshing possible.
This guide uses OpenCore in favor of Clover as it is the new standard and just overall worked better for me. Hackintoshing can be seen as a pretty tedious process, full of bugs, hardware limitations and overall a pain…but thanks to the effors of the Intel Wifi Kext I have found UX430UA to be one of the most compatible laptops I’ve ever owned.
Before starting, make sure to disable Secure Boot
and Fast Boot
in the bios and that you are booted in a GNU/Linux distro, I recommend Linux Mint.
To begin you’ll need the following:
= 4GB USB Stick
Downloading macOS
Now cd
into macrecovery’s folder:
# Adjust below command to the correct folder
cd ~/Downloads/OpenCore-0/Utilities/macrecovery/
Copy
Next, run the following command, currently Monterey is the latest but this may change in the future:
# Latest version
# ie. Monterey (12)
python3 ./macrecovery.py -b Mac-E43C1C25D4880AD6 -m 00000000000000000 download
Copy
From here, run one of those commands in terminal and once finished your folder will look similar to this:
mihai@PC:~/Downloads/Open-Core/Utilities/macrecovery$ ls
BaseSystem.chunklist boards.json macrecovery.py recovery_urls.txt
BaseSystem.dmg build-image.sh README.md
Copy
Making the installer
I will be using gdisk
as that’s what the original guide is using and I admit, it’s nice, but you can use whatever you’d like.
Credit to OpenCore’s Install Guide which this is based off of.
1. In a terminal emulator run lsblk
and determine your USB device block
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465,8G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
└─sda2 8:2 0 465,3G 0 part /run/timeshift/backup
sdb 8:16 0 931,5G 0 disk
├─sdb1 8:17 0 630G 0 part
├─sdb2 8:18 0 16M 0 part
├─sdb3 8:19 0 216,6G 0 part
├─sdb4 8:20 0 512M 0 part
├─sdb5 8:21 0 511M 0 part
└─sdb6 8:22 0 83,9G 0 part
sdc 8:32 1 57,6G 0 disk
└─sdc1 8:33 1 57,6G 0 part /media/mihai/USBSTICK
Copy
2. Run sudo gdisk /dev/<your USB block>
3. If you’re asked what partition table to use, select GPT.
GPT fdisk (gdisk) version 1.0.5
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: present
Found valid MBR and GPT. Which do you want to use?
1 - MBR
2 - GPT
3 - Create blank GPT
Your answer: 3
Copy
4. Send p
to print your block’s partitions and verify if it’s the one needed
Command (? for help): p
Disk /dev/sdc: 120845300 sectors, 57.6 GiB
Model: DataTraveler 3.0
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 3DA86040-2EBF-4CB3-A0D7-1EBA61B6F12B
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 120845266
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
Number Start (sector) End (sector) Size Code Name
Copy
5. Send o
to clear the partition table and make a new GPT one (if not empty)
Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): y
Copy
6. Send n
with:
partition number
: keep blank for defaultfirst sector
: keep blank for defaultlast sector
: keep blank for whole diskHex code or GUID
: 0700 for Microsoft basic data partition type
7. Send w
and confirm with y
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!!
Do you want to Proceed? (Y/N): y
Copy
8. After gdisk closes replug your USB stick
9. Use lsblk
to determine your partition’s identifiers
10. Run sudo mkfs.vfat -F 32 -n "OPENCORE" /dev/<your USB partition block>
to format your USB to FAT32 and name it OPENCORE
11. Copy the content from the repo
For this part, you will need some fort of plist editing. I recommend ProperTree and GenSMBIOS for automating the tedious work.
Once ProperTree is running, open your config.plist by pressing Ctrl + O
and select the config.plist file on your USB.
The config is already set up with the required SSDTs, Kexts and Firmware dirvers, but in case you wish to modify it, you can perform a “Clean Snapshot” to update it by pressing Ctrl + Shift + R
and point it at your EFI/OC folder. The config.plist must match the contents of the EFI folder. If you delete a file but leave it listed in config.plist, OpenCore will stop booting.
Note: If you get a popup about disabling kexts with Duplicate CFBundleIdentifiers, press Yes. This is to ensure duplicate kexts aren’t injected as some kexts may have the same plugins (i.e. VoodooInput exists in both VoodooPS2 and VoodooI2C)
Note: If you wish to clean up the file, you can remove the
#WARNING
entries, but that’s just up to preference.
For setting up your own SMBIOS info, you can use GenSMBIOS. I chose the MacBookPro14,1 SMBIOS for compatibility’s sake.
Run GenSMBIOS, pick option 1 for downloading MacSerial and Option 3 for selecting out SMBIOS and you will get an output similar to this:
#######################################################
# MacBookPro14,1 SMBIOS Info #
#######################################################
Type: MacBookPro14,1
Serial: C02Z2CZ5H7JY
Board Serial: C02928701GUH69FFB
SmUUID: AA043F8D-33B6-4A1A-94F7-46972AAD0607
Copy
Copy Type to
Generic -> SystemProductName
Copy Serial to
Generic -> SystemSerialNumber
Copy Board Serial to
Generic -> MLB
Copy SmUUID to
Generic -> SystemUUID
Generic -> ROM
can be set to either an Apple ROM, your NIC MAC address or any random MAC address (it can just be 6 random bytes, which is the default 11223300 0000
).
Reminder that you need either an invalid serial or a valid serial number but those not one in use, you want to get a message back like: “Invalid Serial” or “Purchase Date not Validated”
12. Now reboot and boot the live usb
13. Open disk utility, format your ssd with APFS
14. Follow the installer
15. Congratulations! You’ve installed macOS Monterey!
Booting without a USB stick
The reason you cannot currently boot without a USB stick is because OpenCore doesn’t yet exit on your SSD. You will need to move the EFI folder from it on your EFI partition.
To do this, there is a useful tool called MountEFI which automates the process of mounting your macOS' EFI partition.
For example:
##############################################
# MountEFI #
##############################################
1. Monterey HD (disk1s1)
2. Install macOS Monterey (disk4s2)
S. Switch to Full Output
L. Set As Default Layout (Current: Slim)
B. Mount the Boot Drive's EFI
D. Pick Default Disk (None Set)
M. After Mounting: Return to Menu
Q. Quit
(* denotes the booted EFI (Clover/OC))
Pick the drive containing your EFI: 1
Copy
Pick the disk you installed Monterey on disk1s1
and then quit with q
.
Now when you open your main drive’s EFI with finder, you’ll see a folder called APPLE
inside the existing EFI folder. This is used for updating firmware on real Macs but has no effect on our hardware. You can wipe everything on the EFI partition and replace it with the one from your USB stick but merging them also works.
Congratulations! You got a fully working macbook….from Asus!
I recommend checking out the PostInstall guide for more fixes and tips.
FAQ
The repo’s config.plist is intended for the 7th gen i5 UX430UA, if you have a different model similar to it adapt it as you need by following the official docs and validate it with the config.plist validator. If it is one of the models listed in the title it should be pretty painless to setup. Best of luck!