{"video_id":"ATnpEOo3GJA","title":"Apple won't like this... - Run MacOS on ANY PC","channel":"Linus Tech Tips","show":"Linus Tech Tips","published_at":"2019-05-06T14:53:45Z","duration_s":1069,"segments":[{"start_s":0.24,"end_s":2.4,"text":"Okay, so imagine for a moment","speaker":null,"is_sponsor":0},{"start_s":2.4,"end_s":5.72,"text":"that I am a long time Mac user.","speaker":null,"is_sponsor":0},{"start_s":5.72,"end_s":7.32,"text":"I know it's a bit of a stretch,","speaker":null,"is_sponsor":0},{"start_s":7.32,"end_s":9.24,"text":"but just bear with me for a second here.","speaker":null,"is_sponsor":0},{"start_s":9.24,"end_s":14.24,"text":"Now, imagine that I've been putting off an upgrade for years","speaker":null,"is_sponsor":0},{"start_s":14.64,"end_s":18.0,"text":"because I just don't like what Apple's done","speaker":null,"is_sponsor":0},{"start_s":18.0,"end_s":19.8,"text":"with their pro hardware.","speaker":null,"is_sponsor":0},{"start_s":19.8,"end_s":22.12,"text":"What with the soldering all the components","speaker":null,"is_sponsor":0},{"start_s":22.12,"end_s":25.26,"text":"and minimal upgradeability.","speaker":null,"is_sponsor":0},{"start_s":25.26,"end_s":27.12,"text":"What am I to do?","speaker":null,"is_sponsor":0},{"start_s":27.12,"end_s":30.38,"text":"Well, I can just use old hardware","speaker":null,"is_sponsor":0},{"start_s":30.38,"end_s":32.12,"text":"that's losing support,","speaker":null,"is_sponsor":0},{"start_s":32.12,"end_s":36.82,"text":"or I can cobble together a hopefully compatible bundle","speaker":null,"is_sponsor":0},{"start_s":36.82,"end_s":38.92,"text":"of components to build a Hackintosh","speaker":null,"is_sponsor":0},{"start_s":38.92,"end_s":41.16,"text":"that even if it works perfectly today","speaker":null,"is_sponsor":0},{"start_s":41.16,"end_s":44.2,"text":"is liable to be borked by a future macOS update.","speaker":null,"is_sponsor":0},{"start_s":44.2,"end_s":47.36,"text":"But those options suck.","speaker":null,"is_sponsor":0},{"start_s":47.36,"end_s":50.72,"text":"Fortunately, I've got one of these.","speaker":null,"is_sponsor":0},{"start_s":50.72,"end_s":55.68,"text":"And Anthony, and he comes bearing another way.","speaker":null,"is_sponsor":0},{"start_s":55.68,"end_s":57.12,"text":"So come along with us","speaker":null,"is_sponsor":0},{"start_s":57.12,"end_s":60.38,"text":"because we are gonna be using the power of virtualization","speaker":null,"is_sponsor":0},{"start_s":60.38,"end_s":65.38,"text":"to build the no compromises and fully upgradable Mac Pro.","speaker":null,"is_sponsor":0},{"start_s":67.0,"end_s":69.0,"text":"And it looks like this.","speaker":null,"is_sponsor":0},{"start_s":69.0,"end_s":78.28,"text":"What?","speaker":null,"is_sponsor":0},{"start_s":78.28,"end_s":79.32,"text":"Before we get started,","speaker":null,"is_sponsor":0},{"start_s":79.32,"end_s":81.4,"text":"there are a few requirements we need to meet.","speaker":null,"is_sponsor":0},{"start_s":81.4,"end_s":83.98,"text":"We need to have a dedicated graphics card.","speaker":null,"is_sponsor":0},{"start_s":83.98,"end_s":85.14,"text":"Is that NVIDIA?","speaker":null,"is_sponsor":0},{"start_s":85.14,"end_s":85.98,"text":"Yup.","speaker":null,"is_sponsor":0},{"start_s":85.98,"end_s":87.4,"text":"Ooh, spicy.","speaker":null,"is_sponsor":0},{"start_s":87.4,"end_s":89.16,"text":"We'll also need a USB controller","speaker":null,"is_sponsor":0},{"start_s":89.16,"end_s":90.66,"text":"that we can pass through our virtual machine","speaker":null,"is_sponsor":0},{"start_s":90.66,"end_s":92.12,"text":"for hot plug support.","speaker":null,"is_sponsor":0},{"start_s":92.12,"end_s":94.5,"text":"We'll need to access to a real Mac.","speaker":null,"is_sponsor":0},{"start_s":94.5,"end_s":96.88,"text":"Got it.","speaker":null,"is_sponsor":0},{"start_s":96.88,"end_s":97.72,"text":"Cool.","speaker":null,"is_sponsor":0},{"start_s":97.72,"end_s":99.76,"text":"And finally, although this might seem obvious,","speaker":null,"is_sponsor":0},{"start_s":99.76,"end_s":102.06,"text":"we'll need a computer.","speaker":null,"is_sponsor":0},{"start_s":102.06,"end_s":105.18,"text":"One with virtualization, both supported and enabled.","speaker":null,"is_sponsor":0},{"start_s":105.18,"end_s":108.06,"text":"Intel calls this VTD and VTX","speaker":null,"is_sponsor":0},{"start_s":108.06,"end_s":111.46,"text":"and AMD calls this SVM for secure virtual machine.","speaker":null,"is_sponsor":0},{"start_s":111.46,"end_s":113.04,"text":"That's what we'll be using today.","speaker":null,"is_sponsor":0},{"start_s":113.04,"end_s":117.3,"text":"Wait, so we're gonna be running Ryzen 2?","speaker":null,"is_sponsor":0},{"start_s":117.3,"end_s":120.14,"text":"Not bad, love it.","speaker":null,"is_sponsor":0},{"start_s":120.14,"end_s":122.06,"text":"It's even spicier.","speaker":null,"is_sponsor":0},{"start_s":122.06,"end_s":125.36,"text":"Yeah, but before we can do that,","speaker":null,"is_sponsor":0},{"start_s":125.36,"end_s":127.24,"text":"we'll need to install Linux.","speaker":null,"is_sponsor":0},{"start_s":127.24,"end_s":129.98,"text":"Specifically one with QEMU 3.1 or newer.","speaker":null,"is_sponsor":0},{"start_s":130.36,"end_s":133.56,"text":"We used Manjaro because as a rolling release distro,","speaker":null,"is_sponsor":0},{"start_s":133.56,"end_s":135.98,"text":"its packages are typically more up-to-date,","speaker":null,"is_sponsor":0},{"start_s":135.98,"end_s":137.82,"text":"but you might prefer something lighter like Arch","speaker":null,"is_sponsor":0},{"start_s":137.82,"end_s":139.86,"text":"if you intend to ignore your Linux install","speaker":null,"is_sponsor":0},{"start_s":139.86,"end_s":142.56,"text":"and use your machine purely as a Mac.","speaker":null,"is_sponsor":0},{"start_s":142.56,"end_s":143.9,"text":"Regardless of the distro,","speaker":null,"is_sponsor":0},{"start_s":143.9,"end_s":145.56,"text":"you'll need the following software.","speaker":null,"is_sponsor":0},{"start_s":145.56,"end_s":149.62,"text":"Libvirt, QEMU, OVMF, and Virtual Machine Manager","speaker":null,"is_sponsor":0},{"start_s":149.62,"end_s":151.2,"text":"via our Package Manager.","speaker":null,"is_sponsor":0},{"start_s":151.2,"end_s":153.98,"text":"So in Manjaro's case, that would be PAMAC.","speaker":null,"is_sponsor":0},{"start_s":153.98,"end_s":154.82,"text":"PAMAC?","speaker":null,"is_sponsor":0},{"start_s":154.82,"end_s":156.4,"text":"I think it's PAMAC, Package Manager.","speaker":null,"is_sponsor":0},{"start_s":156.4,"end_s":157.24,"text":"Cool.","speaker":null,"is_sponsor":0},{"start_s":157.24,"end_s":158.66,"text":"Then what we'll need to do is enable the KVM server,","speaker":null,"is_sponsor":0},{"start_s":158.66,"end_s":159.66,"text":"and then we'll need to do is enable the KVM server,","speaker":null,"is_sponsor":0},{"start_s":159.66,"end_s":160.82,"text":"and then we'll need to do is enable the KVM server,","speaker":null,"is_sponsor":0},{"start_s":160.82,"end_s":164.04,"text":"which for us can be achieved by firing up a terminal","speaker":null,"is_sponsor":0},{"start_s":164.04,"end_s":166.99,"text":"and typing these two commands.","speaker":null,"is_sponsor":0},{"start_s":166.99,"end_s":170.04,"text":"But I'm sure you're thinking to yourself,","speaker":null,"is_sponsor":0},{"start_s":170.04,"end_s":172.78,"text":"come on Linus, it can't be that simple.","speaker":null,"is_sponsor":0},{"start_s":172.78,"end_s":175.58,"text":"Surely Apple thought of virtual machines","speaker":null,"is_sponsor":0},{"start_s":175.58,"end_s":178.2,"text":"and locked down their OS in some way","speaker":null,"is_sponsor":0},{"start_s":178.2,"end_s":180.24,"text":"to keep this from working.","speaker":null,"is_sponsor":0},{"start_s":180.24,"end_s":183.54,"text":"And well, of course they did.","speaker":null,"is_sponsor":0},{"start_s":183.54,"end_s":185.5,"text":"Yeah, but thanks to some really amazing work","speaker":null,"is_sponsor":0},{"start_s":185.5,"end_s":187.8,"text":"by the team over at Pass Through Post,","speaker":null,"is_sponsor":0},{"start_s":187.8,"end_s":189.54,"text":"there's finally a workaround.","speaker":null,"is_sponsor":0},{"start_s":189.54,"end_s":190.92,"text":"It is a little bit tedious,","speaker":null,"is_sponsor":0},{"start_s":190.92,"end_s":192.58,"text":"but if you follow the steps carefully,","speaker":null,"is_sponsor":0},{"start_s":192.58,"end_s":193.92,"text":"it shouldn't take you more than an hour or two","speaker":null,"is_sponsor":0},{"start_s":193.92,"end_s":195.12,"text":"to do this at home.","speaker":null,"is_sponsor":0},{"start_s":195.12,"end_s":198.08,"text":"So first, we'll fire up the Linux terminal","speaker":null,"is_sponsor":0},{"start_s":198.08,"end_s":199.92,"text":"and type git clone,","speaker":null,"is_sponsor":0},{"start_s":199.92,"end_s":203.74,"text":"and paste the URL for the Hackintosh KVM repository,","speaker":null,"is_sponsor":0},{"start_s":203.74,"end_s":205.34,"text":"which will give us a folder","speaker":null,"is_sponsor":0},{"start_s":205.34,"end_s":208.12,"text":"with most of the files that we'll need.","speaker":null,"is_sponsor":0},{"start_s":208.12,"end_s":212.62,"text":"The last two that we'll need are ovmf__code.fd","speaker":null,"is_sponsor":0},{"start_s":212.62,"end_s":217.62,"text":"and ovmf__vars.fd from Kolya's OSX KVM Git repository.","speaker":null,"is_sponsor":0},{"start_s":219.74,"end_s":221.12,"text":"So as you guys can see,","speaker":null,"is_sponsor":0},{"start_s":221.12,"end_s":225.16,"text":"we are really getting into the weeds now.","speaker":null,"is_sponsor":0},{"start_s":225.16,"end_s":228.46,"text":"Our next step is then relatively simple,","speaker":null,"is_sponsor":0},{"start_s":228.46,"end_s":231.24,"text":"but the most legally problematic.","speaker":null,"is_sponsor":0},{"start_s":231.24,"end_s":236.24,"text":"See, downloading macOS is technically free.","speaker":null,"is_sponsor":0},{"start_s":237.54,"end_s":240.38,"text":"You just fire up the app store here,","speaker":null,"is_sponsor":0},{"start_s":240.38,"end_s":243.2,"text":"but only if it's going to be used","speaker":null,"is_sponsor":0},{"start_s":243.2,"end_s":247.16,"text":"according to the end user license agreement from Apple.","speaker":null,"is_sponsor":0},{"start_s":247.16,"end_s":248.2,"text":"So on a real Mac.","speaker":null,"is_sponsor":0},{"start_s":248.2,"end_s":249.5,"text":"So on a real Mac.","speaker":null,"is_sponsor":0},{"start_s":249.5,"end_s":250.38,"text":"So on a real Mac.","speaker":null,"is_sponsor":0},{"start_s":250.38,"end_s":252.26,"text":"Which means that technically,","speaker":null,"is_sponsor":0},{"start_s":252.26,"end_s":256.22,"text":"everything we do from this point on is piracy.","speaker":null,"is_sponsor":0},{"start_s":256.22,"end_s":257.54,"text":"Which means that whether or not","speaker":null,"is_sponsor":0},{"start_s":257.54,"end_s":260.58,"text":"you were to actually deploy a solution like this","speaker":null,"is_sponsor":0},{"start_s":260.58,"end_s":263.18,"text":"is up to your personal moral compass","speaker":null,"is_sponsor":0},{"start_s":263.18,"end_s":265.04,"text":"and your risk tolerance.","speaker":null,"is_sponsor":0},{"start_s":265.04,"end_s":266.22,"text":"So using our Mac,","speaker":null,"is_sponsor":0},{"start_s":266.22,"end_s":267.38,"text":"we're gonna download and run","speaker":null,"is_sponsor":0},{"start_s":267.38,"end_s":270.26,"text":"DOSDUDE1's High Sierra Patcher tool","speaker":null,"is_sponsor":0},{"start_s":270.26,"end_s":273.62,"text":"to download and create our installation media.","speaker":null,"is_sponsor":0},{"start_s":273.62,"end_s":275.38,"text":"Go ahead and fire this up here","speaker":null,"is_sponsor":0},{"start_s":275.38,"end_s":277.22,"text":"from an unknown developer.","speaker":null,"is_sponsor":0},{"start_s":277.22,"end_s":278.38,"text":"Beware.","speaker":null,"is_sponsor":0},{"start_s":278.38,"end_s":279.58,"text":"Yeah, we know.","speaker":null,"is_sponsor":0},{"start_s":279.58,"end_s":281.28,"text":"So we get this little error that says","speaker":null,"is_sponsor":0},{"start_s":281.28,"end_s":283.62,"text":"your machine is natively supported by High Sierra.","speaker":null,"is_sponsor":0},{"start_s":283.62,"end_s":285.12,"text":"You don't need to use this patch.","speaker":null,"is_sponsor":0},{"start_s":285.12,"end_s":287.12,"text":"One of the other purposes of this patch","speaker":null,"is_sponsor":0},{"start_s":287.12,"end_s":290.0,"text":"is running the latest macOS software","speaker":null,"is_sponsor":0},{"start_s":290.0,"end_s":292.92,"text":"on outdated Macs that Apple no longer supports.","speaker":null,"is_sponsor":0},{"start_s":292.92,"end_s":294.2,"text":"Anyway, that's fine.","speaker":null,"is_sponsor":0},{"start_s":294.2,"end_s":295.04,"text":"We knew that.","speaker":null,"is_sponsor":0},{"start_s":295.04,"end_s":296.96,"text":"So all we do is go down into tools,","speaker":null,"is_sponsor":0},{"start_s":296.96,"end_s":298.7,"text":"download macOS High Sierra,","speaker":null,"is_sponsor":0},{"start_s":298.7,"end_s":300.12,"text":"and then we're gonna save that file","speaker":null,"is_sponsor":0},{"start_s":300.12,"end_s":301.54,"text":"to the applications folder.","speaker":null,"is_sponsor":0},{"start_s":301.54,"end_s":302.38,"text":"Once that's done,","speaker":null,"is_sponsor":0},{"start_s":302.38,"end_s":305.24,"text":"we just copy the create ISO High Sierra file","speaker":null,"is_sponsor":0},{"start_s":305.24,"end_s":309.31,"text":"over to our flash drive so we can bring it over to our Mac.","speaker":null,"is_sponsor":0},{"start_s":309.31,"end_s":310.15,"text":"Got it.","speaker":null,"is_sponsor":0},{"start_s":310.15,"end_s":313.15,"text":"Then we launch a Mac terminal","speaker":null,"is_sponsor":0},{"start_s":313.15,"end_s":316.11,"text":"and navigate to the folder containing that file.","speaker":null,"is_sponsor":0},{"start_s":316.11,"end_s":317.43,"text":"Before we run it though,","speaker":null,"is_sponsor":0},{"start_s":317.43,"end_s":321.01,"text":"we'll set the executable flag by typing this command","speaker":null,"is_sponsor":0},{"start_s":321.01,"end_s":322.23,"text":"and hitting enter.","speaker":null,"is_sponsor":0},{"start_s":322.23,"end_s":323.27,"text":"And then after that,","speaker":null,"is_sponsor":0},{"start_s":323.27,"end_s":326.01,"text":"we type dot slash create underscore ISO","speaker":null,"is_sponsor":0},{"start_s":326.01,"end_s":328.11,"text":"underscore High Sierra dot sh","speaker":null,"is_sponsor":0},{"start_s":328.11,"end_s":329.73,"text":"and hit enter again.","speaker":null,"is_sponsor":0},{"start_s":329.73,"end_s":331.73,"text":"The process will begin automatically.","speaker":null,"is_sponsor":0},{"start_s":331.73,"end_s":332.97,"text":"And once it's done,","speaker":null,"is_sponsor":0},{"start_s":332.97,"end_s":335.97,"text":"we're going to have a bootable High Sierra ISO","speaker":null,"is_sponsor":0},{"start_s":335.97,"end_s":337.47,"text":"on our Mac's desktop,","speaker":null,"is_sponsor":0},{"start_s":337.47,"end_s":339.11,"text":"which we will then copy,","speaker":null,"is_sponsor":0},{"start_s":339.31,"end_s":343.88,"text":"back onto our USB over to our Linux machine.","speaker":null,"is_sponsor":0},{"start_s":343.88,"end_s":346.54,"text":"I mean, we could copy it over the network as well.","speaker":null,"is_sponsor":0},{"start_s":346.54,"end_s":347.38,"text":"We could.","speaker":null,"is_sponsor":0},{"start_s":347.38,"end_s":349.68,"text":"I mean, we do have that 10 gigabit network.","speaker":null,"is_sponsor":0},{"start_s":349.68,"end_s":351.6,"text":"This seems simpler right now.","speaker":null,"is_sponsor":0},{"start_s":351.6,"end_s":352.42,"text":"Yeah.","speaker":null,"is_sponsor":0},{"start_s":352.42,"end_s":353.26,"text":"While we wait,","speaker":null,"is_sponsor":0},{"start_s":353.26,"end_s":355.1,"text":"we can set up our VM on our Linux host.","speaker":null,"is_sponsor":0},{"start_s":355.1,"end_s":358.26,"text":"So inside the Hackintosh KVM folder","speaker":null,"is_sponsor":0},{"start_s":358.26,"end_s":361.22,"text":"is a sub folder called example XML files,","speaker":null,"is_sponsor":0},{"start_s":361.22,"end_s":362.18,"text":"containing two files,","speaker":null,"is_sponsor":0},{"start_s":362.18,"end_s":364.8,"text":"helpfully labeled for AMD and Intel users.","speaker":null,"is_sponsor":0},{"start_s":364.8,"end_s":365.8,"text":"We're running Ryzen.","speaker":null,"is_sponsor":0},{"start_s":365.8,"end_s":367.56,"text":"So we'll copy the AMD file","speaker":null,"is_sponsor":0},{"start_s":367.56,"end_s":369.68,"text":"to the root of the Hackintosh KVM folder.","speaker":null,"is_sponsor":0},{"start_s":369.72,"end_s":373.48,"text":"And rename to something more useful like hackintosh.xml.","speaker":null,"is_sponsor":0},{"start_s":373.48,"end_s":375.68,"text":"Now at the time of writing,","speaker":null,"is_sponsor":0},{"start_s":375.68,"end_s":377.72,"text":"this file is partially corrupt.","speaker":null,"is_sponsor":0},{"start_s":377.72,"end_s":380.06,"text":"So Anthony is going to need to fix it","speaker":null,"is_sponsor":0},{"start_s":380.06,"end_s":382.14,"text":"by opening it in a text editor,","speaker":null,"is_sponsor":0},{"start_s":382.14,"end_s":383.8,"text":"scrolling to the very bottom","speaker":null,"is_sponsor":0},{"start_s":383.8,"end_s":387.8,"text":"and typing slash domain to finish the file.","speaker":null,"is_sponsor":0},{"start_s":387.8,"end_s":392.8,"text":"And then by removing all of the value equals dash object lines","speaker":null,"is_sponsor":0},{"start_s":392.96,"end_s":394.56,"text":"and their subsequent input lines,","speaker":null,"is_sponsor":0},{"start_s":394.56,"end_s":397.92,"text":"because those are actually specific to the author's","speaker":null,"is_sponsor":0},{"start_s":397.92,"end_s":398.84,"text":"computer,","speaker":null,"is_sponsor":0},{"start_s":398.84,"end_s":399.68,"text":"not to us.","speaker":null,"is_sponsor":0},{"start_s":399.72,"end_s":400.68,"text":"Ours.","speaker":null,"is_sponsor":0},{"start_s":400.68,"end_s":401.64,"text":"Now that that's done,","speaker":null,"is_sponsor":0},{"start_s":401.64,"end_s":403.02,"text":"we can get back on track here.","speaker":null,"is_sponsor":0},{"start_s":403.02,"end_s":405.22,"text":"So at the top of the file,","speaker":null,"is_sponsor":0},{"start_s":405.22,"end_s":408.96,"text":"we want to edit the loader and the NBRAM lines","speaker":null,"is_sponsor":0},{"start_s":408.96,"end_s":412.84,"text":"to point to files that we got from Coleus Git earlier.","speaker":null,"is_sponsor":0},{"start_s":412.84,"end_s":415.26,"text":"Then we can save and close the file.","speaker":null,"is_sponsor":0},{"start_s":415.26,"end_s":417.96,"text":"So it's ready to import.","speaker":null,"is_sponsor":0},{"start_s":417.96,"end_s":418.8,"text":"Yeah.","speaker":null,"is_sponsor":0},{"start_s":418.8,"end_s":421.06,"text":"So I've got virtual machine manager right here.","speaker":null,"is_sponsor":0},{"start_s":421.06,"end_s":423.18,"text":"You can see that there's nothing there,","speaker":null,"is_sponsor":0},{"start_s":423.18,"end_s":427.38,"text":"but if I go into our Hackintosh folder","speaker":null,"is_sponsor":0},{"start_s":427.38,"end_s":428.84,"text":"and do ver.sh,","speaker":null,"is_sponsor":0},{"start_s":428.84,"end_s":429.68,"text":"define,","speaker":null,"is_sponsor":0},{"start_s":429.72,"end_s":435.59,"text":"hackintosh.","speaker":null,"is_sponsor":0},{"start_s":435.59,"end_s":436.91,"text":"There it is.","speaker":null,"is_sponsor":0},{"start_s":436.91,"end_s":439.21,"text":"Our Hackintosh VM.","speaker":null,"is_sponsor":0},{"start_s":439.21,"end_s":440.53,"text":"So from here,","speaker":null,"is_sponsor":0},{"start_s":440.53,"end_s":441.99,"text":"it's a GUI interface.","speaker":null,"is_sponsor":0},{"start_s":441.99,"end_s":444.07,"text":"So we can just open this puppy up","speaker":null,"is_sponsor":0},{"start_s":444.07,"end_s":446.21,"text":"and we can configure our Hackintosh","speaker":null,"is_sponsor":0},{"start_s":446.21,"end_s":447.99,"text":"however it is that we want.","speaker":null,"is_sponsor":0},{"start_s":447.99,"end_s":450.49,"text":"We can set our CPU core assignments,","speaker":null,"is_sponsor":0},{"start_s":450.49,"end_s":453.41,"text":"allocate however much memory we think we need","speaker":null,"is_sponsor":0},{"start_s":453.41,"end_s":455.07,"text":"and set up our storage media.","speaker":null,"is_sponsor":0},{"start_s":455.07,"end_s":456.17,"text":"So in this case,","speaker":null,"is_sponsor":0},{"start_s":456.17,"end_s":458.75,"text":"we're going to be booting from an NVMe SSD.","speaker":null,"is_sponsor":0},{"start_s":458.75,"end_s":460.07,"text":"One thing to watch out for here,","speaker":null,"is_sponsor":0},{"start_s":460.07,"end_s":461.51,"text":"every CPU is different,","speaker":null,"is_sponsor":0},{"start_s":461.51,"end_s":462.75,"text":"but for Ryzen 7,","speaker":null,"is_sponsor":0},{"start_s":462.75,"end_s":465.05,"text":"assigning eight cores in sequence from one to eight","speaker":null,"is_sponsor":0},{"start_s":465.05,"end_s":466.75,"text":"gives us exactly one CCX,","speaker":null,"is_sponsor":0},{"start_s":466.75,"end_s":468.71,"text":"which produces the on-chip communication overhead","speaker":null,"is_sponsor":0},{"start_s":468.71,"end_s":469.99,"text":"for better performance.","speaker":null,"is_sponsor":0},{"start_s":469.99,"end_s":472.95,"text":"Now next, in order to actually boot this thing,","speaker":null,"is_sponsor":0},{"start_s":472.95,"end_s":475.25,"text":"we'll need to add a virtual hard drive","speaker":null,"is_sponsor":0},{"start_s":475.25,"end_s":478.59,"text":"and point it to the clover.qcow2 file","speaker":null,"is_sponsor":0},{"start_s":478.59,"end_s":480.83,"text":"in our Hackintosh KVM folder.","speaker":null,"is_sponsor":0},{"start_s":480.83,"end_s":484.59,"text":"And we'll also need to add a virtual optical drive loaded","speaker":null,"is_sponsor":0},{"start_s":484.59,"end_s":488.09,"text":"with the High Sierra ISO that we created earlier.","speaker":null,"is_sponsor":0},{"start_s":488.09,"end_s":489.71,"text":"And theoretically,","speaker":null,"is_sponsor":0},{"start_s":489.71,"end_s":492.55,"text":"we are finally ready to install macOS.","speaker":null,"is_sponsor":0},{"start_s":492.75,"end_s":494.67,"text":"Before we pass the boot screen though,","speaker":null,"is_sponsor":0},{"start_s":494.67,"end_s":496.05,"text":"we're going to need to hit escape","speaker":null,"is_sponsor":0},{"start_s":496.05,"end_s":497.75,"text":"to go into the firmware settings","speaker":null,"is_sponsor":0},{"start_s":497.75,"end_s":501.59,"text":"and change the resolution to 1920 by 1080.","speaker":null,"is_sponsor":0},{"start_s":501.59,"end_s":504.01,"text":"This is the resolution that our Clover bootloader","speaker":null,"is_sponsor":0},{"start_s":504.01,"end_s":505.17,"text":"is set to use.","speaker":null,"is_sponsor":0},{"start_s":505.17,"end_s":506.87,"text":"And we're going to get garbled graphics","speaker":null,"is_sponsor":0},{"start_s":506.87,"end_s":509.05,"text":"if we don't change the setting.","speaker":null,"is_sponsor":0},{"start_s":509.05,"end_s":510.51,"text":"Once Clover is booted,","speaker":null,"is_sponsor":0},{"start_s":510.51,"end_s":512.75,"text":"we'll choose the macOS installer","speaker":null,"is_sponsor":0},{"start_s":512.75,"end_s":516.95,"text":"and everything from here on out should be","speaker":null,"is_sponsor":0},{"start_s":516.95,"end_s":521.41,"text":"as though it was on a real Mac, theoretically.","speaker":null,"is_sponsor":0},{"start_s":521.41,"end_s":522.23,"text":"It'll take a minute.","speaker":null,"is_sponsor":0},{"start_s":522.23,"end_s":542.36,"text":"Is that it?","speaker":null,"is_sponsor":0},{"start_s":542.36,"end_s":543.2,"text":"Yeah.","speaker":null,"is_sponsor":0},{"start_s":543.2,"end_s":544.02,"text":"That's it.","speaker":null,"is_sponsor":0},{"start_s":544.02,"end_s":544.86,"text":"That's it?","speaker":null,"is_sponsor":0},{"start_s":544.86,"end_s":549.56,"text":"A functional macOS desktop on AMD Ryzen","speaker":null,"is_sponsor":0},{"start_s":549.56,"end_s":553.38,"text":"and oh my God, it's slow.","speaker":null,"is_sponsor":0},{"start_s":553.38,"end_s":554.98,"text":"It's very laggy.","speaker":null,"is_sponsor":0},{"start_s":556.3,"end_s":557.14,"text":"Yeah.","speaker":null,"is_sponsor":0},{"start_s":557.14,"end_s":559.14,"text":"So we can fix that.","speaker":null,"is_sponsor":0},{"start_s":559.14,"end_s":559.98,"text":"Cool.","speaker":null,"is_sponsor":0},{"start_s":559.98,"end_s":562.02,"text":"It's just, it's got all the patches and drivers we need","speaker":null,"is_sponsor":0},{"start_s":562.02,"end_s":564.3,"text":"except for our display.","speaker":null,"is_sponsor":0},{"start_s":564.3,"end_s":565.72,"text":"Right.","speaker":null,"is_sponsor":0},{"start_s":565.72,"end_s":569.56,"text":"But are we ready to install that yet?","speaker":null,"is_sponsor":0},{"start_s":569.56,"end_s":570.4,"text":"No.","speaker":null,"is_sponsor":0},{"start_s":570.4,"end_s":571.36,"text":"No. Okay.","speaker":null,"is_sponsor":0},{"start_s":571.36,"end_s":572.22,"text":"Great.","speaker":null,"is_sponsor":0},{"start_s":572.22,"end_s":573.1,"text":"But wait.","speaker":null,"is_sponsor":0},{"start_s":573.1,"end_s":574.48,"text":"There's more.","speaker":null,"is_sponsor":0},{"start_s":574.48,"end_s":579.26,"text":"So first we need to download and install Clover","speaker":null,"is_sponsor":0},{"start_s":579.26,"end_s":581.56,"text":"to our main storage media.","speaker":null,"is_sponsor":0},{"start_s":581.56,"end_s":583.64,"text":"We can then copy the configuration","speaker":null,"is_sponsor":0},{"start_s":583.64,"end_s":587.98,"text":"from the Hackintosh KVM Clover image and leave it as is,","speaker":null,"is_sponsor":0},{"start_s":587.98,"end_s":592.02,"text":"or we can use it as a starting point for more customization.","speaker":null,"is_sponsor":0},{"start_s":592.02,"end_s":594.8,"text":"So using a tool called Clover Configurator,","speaker":null,"is_sponsor":0},{"start_s":594.8,"end_s":596.6,"text":"you can actually do all kinds of fun things","speaker":null,"is_sponsor":0},{"start_s":596.6,"end_s":599.94,"text":"like modify the boot screen and edit your serial number","speaker":null,"is_sponsor":0},{"start_s":599.94,"end_s":602.94,"text":"to get access to FaceTime and iMessage, et cetera, et cetera.","speaker":null,"is_sponsor":0},{"start_s":602.94,"end_s":606.7,"text":"Now, this is the point where we say goodbye","speaker":null,"is_sponsor":0},{"start_s":606.7,"end_s":608.9,"text":"to our slow built-in graphics","speaker":null,"is_sponsor":0},{"start_s":608.9,"end_s":613.28,"text":"and switch over to our dedicated card here.","speaker":null,"is_sponsor":0},{"start_s":613.28,"end_s":616.6,"text":"So what we'll need to do is shut down our VM","speaker":null,"is_sponsor":0},{"start_s":616.6,"end_s":618.82,"text":"and then open up its configuration","speaker":null,"is_sponsor":0},{"start_s":618.82,"end_s":620.32,"text":"in Virtual Machine Manager,","speaker":null,"is_sponsor":0},{"start_s":620.32,"end_s":625.32,"text":"where we will manually fully pass through this GPU.","speaker":null,"is_sponsor":0},{"start_s":625.32,"end_s":628.48,"text":"So this is actually a GTX 1070 over here","speaker":null,"is_sponsor":0},{"start_s":628.48,"end_s":632.48,"text":"that's separate from the RTX 2060 that Linux is running on.","speaker":null,"is_sponsor":0},{"start_s":632.48,"end_s":636.82,"text":"While we're at it, we can also pass through a USB controller","speaker":null,"is_sponsor":0},{"start_s":636.82,"end_s":640.56,"text":"so that we can hot plug USB devices within our VM.","speaker":null,"is_sponsor":0},{"start_s":640.56,"end_s":644.24,"text":"Now, if your motherboard has multiple USB controllers on it,","speaker":null,"is_sponsor":0},{"start_s":644.24,"end_s":647.44,"text":"like an Intel one and an As Media one,","speaker":null,"is_sponsor":0},{"start_s":647.44,"end_s":651.02,"text":"you may be able to do this without a separate add-in card.","speaker":null,"is_sponsor":0},{"start_s":651.02,"end_s":653.56,"text":"Otherwise, macOS compatible USB cards","speaker":null,"is_sponsor":0},{"start_s":653.56,"end_s":655.9,"text":"are available for just a few bucks.","speaker":null,"is_sponsor":0},{"start_s":655.9,"end_s":657.56,"text":"In order to make this work though,","speaker":null,"is_sponsor":0},{"start_s":657.56,"end_s":660.24,"text":"we're gonna need to edit a couple of system files,","speaker":null,"is_sponsor":0},{"start_s":660.24,"end_s":662.4,"text":"starting with etc slash default","speaker":null,"is_sponsor":0},{"start_s":662.48,"end_s":666.1,"text":"slash grub to tell Linux which devices,","speaker":null,"is_sponsor":0},{"start_s":666.1,"end_s":668.36,"text":"like which parts of the hardware here","speaker":null,"is_sponsor":0},{"start_s":668.36,"end_s":671.32,"text":"it should leave available for us to pass through","speaker":null,"is_sponsor":0},{"start_s":671.32,"end_s":674.4,"text":"and to enable support for splitting our devices","speaker":null,"is_sponsor":0},{"start_s":674.4,"end_s":678.28,"text":"into IOMMU groups that can be passed through to a VM.","speaker":null,"is_sponsor":0},{"start_s":678.28,"end_s":679.86,"text":"Now we're back in the command line","speaker":null,"is_sponsor":0},{"start_s":679.86,"end_s":681.48,"text":"and in both sections here,","speaker":null,"is_sponsor":0},{"start_s":681.48,"end_s":685.48,"text":"we're gonna add AMD underscore IOMMU equals on","speaker":null,"is_sponsor":0},{"start_s":685.48,"end_s":689.72,"text":"and VFIO dash PCI dot IDs equals","speaker":null,"is_sponsor":0},{"start_s":689.72,"end_s":692.18,"text":"followed by the IDs of the devices","speaker":null,"is_sponsor":0},{"start_s":692.48,"end_s":694.14,"text":"that we want to pass through,","speaker":null,"is_sponsor":0},{"start_s":694.14,"end_s":696.98,"text":"which we can then check by loading up a terminal","speaker":null,"is_sponsor":0},{"start_s":696.98,"end_s":701.98,"text":"and typing LSPCI dash NN and then looking for the devices.","speaker":null,"is_sponsor":0},{"start_s":703.94,"end_s":705.52,"text":"That's our Turing, there we go.","speaker":null,"is_sponsor":0},{"start_s":705.52,"end_s":708.28,"text":"That one right there is our GPU","speaker":null,"is_sponsor":0},{"start_s":708.28,"end_s":710.56,"text":"and then the HDMI audio device","speaker":null,"is_sponsor":0},{"start_s":710.56,"end_s":712.14,"text":"that should be right under it","speaker":null,"is_sponsor":0},{"start_s":712.14,"end_s":715.32,"text":"is the audio controller for our GPU.","speaker":null,"is_sponsor":0},{"start_s":715.32,"end_s":717.02,"text":"Now, before you fully commit to this,","speaker":null,"is_sponsor":0},{"start_s":717.02,"end_s":720.36,"text":"you may want to run this command to check and see","speaker":null,"is_sponsor":0},{"start_s":720.36,"end_s":721.94,"text":"if your IOMMU groups","speaker":null,"is_sponsor":0},{"start_s":721.94,"end_s":723.28,"text":"are separated correctly.","speaker":null,"is_sponsor":0},{"start_s":723.28,"end_s":727.24,"text":"If not, you're gonna wanna try different PCI express slots,","speaker":null,"is_sponsor":0},{"start_s":727.24,"end_s":729.9,"text":"like maybe ones connected directly to the CPU","speaker":null,"is_sponsor":0},{"start_s":729.9,"end_s":731.94,"text":"instead of the chip set,","speaker":null,"is_sponsor":0},{"start_s":731.94,"end_s":734.02,"text":"which some other boards will have labels for,","speaker":null,"is_sponsor":0},{"start_s":734.02,"end_s":736.14,"text":"or else it'll be in the manual.","speaker":null,"is_sponsor":0},{"start_s":736.14,"end_s":739.78,"text":"If that fails, you can look into ACS overrides,","speaker":null,"is_sponsor":0},{"start_s":739.78,"end_s":743.04,"text":"but let me tell you,","speaker":null,"is_sponsor":0},{"start_s":743.04,"end_s":744.46,"text":"that was an absolute nightmare","speaker":null,"is_sponsor":0},{"start_s":744.46,"end_s":747.38,"text":"when I was trying to figure out six workstations, one CPU,","speaker":null,"is_sponsor":0},{"start_s":747.38,"end_s":749.62,"text":"and even then it ultimately didn't solve the problem.","speaker":null,"is_sponsor":0},{"start_s":749.62,"end_s":751.88,"text":"And we had to switch to a different motherboard,","speaker":null,"is_sponsor":0},{"start_s":751.88,"end_s":754.72,"text":"and we had to make sure that it worked out right.","speaker":null,"is_sponsor":0},{"start_s":754.72,"end_s":756.92,"text":"So before undertaking a project like this,","speaker":null,"is_sponsor":0},{"start_s":756.92,"end_s":758.5,"text":"I'd recommend seeing","speaker":null,"is_sponsor":0},{"start_s":758.5,"end_s":761.18,"text":"how well your board handles virtualization.","speaker":null,"is_sponsor":0},{"start_s":761.18,"end_s":763.26,"text":"Some vendors do it better than others,","speaker":null,"is_sponsor":0},{"start_s":763.26,"end_s":766.0,"text":"and some models do it better than others.","speaker":null,"is_sponsor":0},{"start_s":766.0,"end_s":768.46,"text":"Now, because Linux is using the video card","speaker":null,"is_sponsor":0},{"start_s":768.46,"end_s":769.8,"text":"and USB controller we need,","speaker":null,"is_sponsor":0},{"start_s":769.8,"end_s":772.15,"text":"we had to do a system reboot.","speaker":null,"is_sponsor":0},{"start_s":772.15,"end_s":774.23,"text":"Now we can go back to virtual machine manager,","speaker":null,"is_sponsor":0},{"start_s":774.23,"end_s":775.77,"text":"remove our temporary display adapter,","speaker":null,"is_sponsor":0},{"start_s":775.77,"end_s":777.77,"text":"double check that these devices you pass through","speaker":null,"is_sponsor":0},{"start_s":777.77,"end_s":780.63,"text":"are actually the right devices, and boot it up.","speaker":null,"is_sponsor":0},{"start_s":780.63,"end_s":781.49,"text":"Okay.","speaker":null,"is_sponsor":0},{"start_s":782.33,"end_s":785.78,"text":"Double check here, just moving everything over.","speaker":null,"is_sponsor":0},{"start_s":785.78,"end_s":787.97,"text":"Theoretically.","speaker":null,"is_sponsor":0},{"start_s":787.97,"end_s":788.79,"text":"Okay.","speaker":null,"is_sponsor":0},{"start_s":788.79,"end_s":793.0,"text":"This is now a Mac, and this is a Linux PC.","speaker":null,"is_sponsor":0},{"start_s":793.0,"end_s":794.94,"text":"And they're both running off of this same box","speaker":null,"is_sponsor":0},{"start_s":794.94,"end_s":797.62,"text":"with half the CPU allocated to each","speaker":null,"is_sponsor":0},{"start_s":797.62,"end_s":801.65,"text":"and one graphics card for each.","speaker":null,"is_sponsor":0},{"start_s":801.65,"end_s":802.73,"text":"We might want to go in.","speaker":null,"is_sponsor":0},{"start_s":802.73,"end_s":804.19,"text":"Oh yeah, that's this again.","speaker":null,"is_sponsor":0},{"start_s":804.19,"end_s":805.61,"text":"Got to change our boot order.","speaker":null,"is_sponsor":0},{"start_s":805.61,"end_s":806.73,"text":"Can't control, delete, do it.","speaker":null,"is_sponsor":0},{"start_s":806.73,"end_s":808.03,"text":"Oh, nope.","speaker":null,"is_sponsor":0},{"start_s":808.03,"end_s":809.19,"text":"So this was unexpected.","speaker":null,"is_sponsor":0},{"start_s":809.19,"end_s":811.43,"text":"This has never happened in a Linus Tech Tips video before.","speaker":null,"is_sponsor":0},{"start_s":811.43,"end_s":813.85,"text":"We actually had some technical difficulties,","speaker":null,"is_sponsor":0},{"start_s":813.85,"end_s":815.03,"text":"and for some reason,","speaker":null,"is_sponsor":0},{"start_s":815.03,"end_s":818.87,"text":"it was not letting us select 1080p over here","speaker":null,"is_sponsor":0},{"start_s":818.87,"end_s":821.33,"text":"with the NVIDIA card passed through.","speaker":null,"is_sponsor":0},{"start_s":821.33,"end_s":822.83,"text":"So that's fine.","speaker":null,"is_sponsor":0},{"start_s":822.83,"end_s":825.99,"text":"We just took it off, put back the garbage drivers.","speaker":null,"is_sponsor":0},{"start_s":825.99,"end_s":826.95,"text":"And then what we're going to do","speaker":null,"is_sponsor":0},{"start_s":826.95,"end_s":830.53,"text":"is install the NVIDIA web driver ahead of time","speaker":null,"is_sponsor":0},{"start_s":830.53,"end_s":832.57,"text":"so that when we boot up with the NVIDIA card,","speaker":null,"is_sponsor":0},{"start_s":832.57,"end_s":834.19,"text":"it's ready to rock.","speaker":null,"is_sponsor":0},{"start_s":834.19,"end_s":836.83,"text":"So all we need is a handy little script","speaker":null,"is_sponsor":0},{"start_s":836.83,"end_s":840.73,"text":"over at Benjamin Dobell's NVIDIA-Update Git repository,","speaker":null,"is_sponsor":0},{"start_s":840.73,"end_s":842.53,"text":"which will grab the best NVIDIA driver","speaker":null,"is_sponsor":0},{"start_s":842.53,"end_s":844.33,"text":"for our macOS version.","speaker":null,"is_sponsor":0},{"start_s":845.03,"end_s":847.53,"text":"Then we reboot.","speaker":null,"is_sponsor":0},{"start_s":847.53,"end_s":848.37,"text":"Okay.","speaker":null,"is_sponsor":0},{"start_s":848.37,"end_s":849.19,"text":"So let's try that again.","speaker":null,"is_sponsor":0},{"start_s":849.19,"end_s":850.37,"text":"We should be good to go now.","speaker":null,"is_sponsor":0},{"start_s":854.68,"end_s":856.14,"text":"Now, it may do that weird thing again.","speaker":null,"is_sponsor":0},{"start_s":856.14,"end_s":856.96,"text":"It does.","speaker":null,"is_sponsor":0},{"start_s":856.96,"end_s":857.8,"text":"It did.","speaker":null,"is_sponsor":0},{"start_s":857.8,"end_s":858.64,"text":"Yep.","speaker":null,"is_sponsor":0},{"start_s":858.64,"end_s":860.26,"text":"That's a good way to use a computer.","speaker":null,"is_sponsor":0},{"start_s":860.26,"end_s":861.6,"text":"Like this.","speaker":null,"is_sponsor":0},{"start_s":861.6,"end_s":863.56,"text":"A little window right there.","speaker":null,"is_sponsor":0},{"start_s":863.56,"end_s":866.42,"text":"Human vision is like, you know, it's wide, man.","speaker":null,"is_sponsor":0},{"start_s":866.42,"end_s":867.72,"text":"It's not tall, man.","speaker":null,"is_sponsor":0},{"start_s":867.72,"end_s":870.76,"text":"So we got, oh, we're back to 16 by nine.","speaker":null,"is_sponsor":0},{"start_s":870.76,"end_s":872.96,"text":"Like a, like a loser.","speaker":null,"is_sponsor":0},{"start_s":872.96,"end_s":875.88,"text":"Like a loser running an AMD processor.","speaker":null,"is_sponsor":0},{"start_s":876.76,"end_s":879.6,"text":"With a higher performance graphics card","speaker":null,"is_sponsor":0},{"start_s":879.6,"end_s":882.92,"text":"than you can currently buy in a Mac,","speaker":null,"is_sponsor":0},{"start_s":882.92,"end_s":884.6,"text":"which I actually don't know is technically true","speaker":null,"is_sponsor":0},{"start_s":884.6,"end_s":886.72,"text":"because we were going to run this with a 1080 TI.","speaker":null,"is_sponsor":0},{"start_s":886.72,"end_s":888.14,"text":"Whatever the point is, don't worry about it.","speaker":null,"is_sponsor":0},{"start_s":888.14,"end_s":892.68,"text":"We could be running a 1080 TI in macOS","speaker":null,"is_sponsor":0},{"start_s":892.68,"end_s":894.84,"text":"with GPU acceleration.","speaker":null,"is_sponsor":0},{"start_s":894.84,"end_s":899.06,"text":"This is something else.","speaker":null,"is_sponsor":0},{"start_s":899.06,"end_s":901.56,"text":"Ah, there we go.","speaker":null,"is_sponsor":0},{"start_s":901.56,"end_s":904.45,"text":"Blah, blah, blah, blah.","speaker":null,"is_sponsor":0},{"start_s":904.45,"end_s":905.45,"text":"Holy shit.","speaker":null,"is_sponsor":0},{"start_s":906.95,"end_s":908.35,"text":"Ryza.","speaker":null,"is_sponsor":0},{"start_s":908.35,"end_s":912.16,"text":"Take that, apple.com.","speaker":null,"is_sponsor":0},{"start_s":912.16,"end_s":913.58,"text":"Yeah, you like that?","speaker":null,"is_sponsor":0},{"start_s":913.58,"end_s":916.0,"text":"Oh, show me your Mac option with Ryzen.","speaker":null,"is_sponsor":0},{"start_s":916.0,"end_s":916.96,"text":"Do you have one?","speaker":null,"is_sponsor":0},{"start_s":916.96,"end_s":918.08,"text":"Do you have one like that?","speaker":null,"is_sponsor":0},{"start_s":918.08,"end_s":919.92,"text":"Oh, oh, you don't.","speaker":null,"is_sponsor":0},{"start_s":919.92,"end_s":923.32,"text":"You don't have one like that, huh?","speaker":null,"is_sponsor":0},{"start_s":923.32,"end_s":924.74,"text":"Wow, what a bummer.","speaker":null,"is_sponsor":0},{"start_s":924.74,"end_s":925.56,"text":"Yeah, it's a real bummer.","speaker":null,"is_sponsor":0},{"start_s":925.56,"end_s":928.72,"text":"Maybe they can put something in the Mac Pro.","speaker":null,"is_sponsor":0},{"start_s":928.72,"end_s":930.9,"text":"Now, there is more you can do to improve performance,","speaker":null,"is_sponsor":0},{"start_s":930.9,"end_s":931.9,"text":"like setting up the VM","speaker":null,"is_sponsor":0},{"start_s":931.9,"end_s":933.8,"text":"to use statically assigned memory pages,","speaker":null,"is_sponsor":0},{"start_s":933.8,"end_s":935.68,"text":"pinning and isolating CPU cores,","speaker":null,"is_sponsor":0},{"start_s":935.68,"end_s":937.44,"text":"and bypassing pulse audio on the host.","speaker":null,"is_sponsor":0},{"start_s":937.56,"end_s":940.32,"text":"And if you don't plan on using Linux for anything,","speaker":null,"is_sponsor":0},{"start_s":940.32,"end_s":943.02,"text":"making your machine just boot macOS at startup.","speaker":null,"is_sponsor":0},{"start_s":943.02,"end_s":944.9,"text":"You can also get FaceTime and iMessage running","speaker":null,"is_sponsor":0},{"start_s":944.9,"end_s":946.22,"text":"as we alluded to before,","speaker":null,"is_sponsor":0},{"start_s":946.22,"end_s":948.06,"text":"but it seems to be a bit of a hit or miss thing.","speaker":null,"is_sponsor":0},{"start_s":948.06,"end_s":950.14,"text":"So that might be a project for another day.","speaker":null,"is_sponsor":0},{"start_s":950.14,"end_s":953.48,"text":"And actually, I mean, I think that's a perfect place","speaker":null,"is_sponsor":0},{"start_s":953.48,"end_s":955.1,"text":"for us to sign off here","speaker":null,"is_sponsor":0},{"start_s":955.1,"end_s":958.59,"text":"because I think we've accomplished","speaker":null,"is_sponsor":0},{"start_s":958.59,"end_s":960.09,"text":"what we set out to do today.","speaker":null,"is_sponsor":0},{"start_s":960.09,"end_s":962.79,"text":"And while we can go much deeper,","speaker":null,"is_sponsor":0},{"start_s":962.79,"end_s":965.41,"text":"honestly, I'd like to kind of make this up to the audience,","speaker":null,"is_sponsor":0},{"start_s":965.41,"end_s":966.83,"text":"what they want to see us do with this,","speaker":null,"is_sponsor":0},{"start_s":966.83,"end_s":968.13,"text":"because here's the thing.","speaker":null,"is_sponsor":0},{"start_s":968.13,"end_s":971.93,"text":"You guys got to understand because this is a VM,","speaker":null,"is_sponsor":0},{"start_s":971.93,"end_s":974.75,"text":"just like two gamers, one CPU, seven gamers, one CPU,","speaker":null,"is_sponsor":0},{"start_s":974.75,"end_s":979.43,"text":"all those projects, it will run on any hardware.","speaker":null,"is_sponsor":0},{"start_s":979.43,"end_s":982.47,"text":"That was part of the reason that an NVIDIA GPU","speaker":null,"is_sponsor":0},{"start_s":982.47,"end_s":984.47,"text":"and AMD CPU was chosen","speaker":null,"is_sponsor":0},{"start_s":984.47,"end_s":986.17,"text":"because those are specifically things","speaker":null,"is_sponsor":0},{"start_s":986.17,"end_s":987.71,"text":"along with the chip set here","speaker":null,"is_sponsor":0},{"start_s":987.71,"end_s":990.55,"text":"that are not supported by Apple,","speaker":null,"is_sponsor":0},{"start_s":990.55,"end_s":993.55,"text":"like not even weird bootleg drivers","speaker":null,"is_sponsor":0},{"start_s":993.55,"end_s":995.93,"text":"that people ripped out of macOS and whatever,","speaker":null,"is_sponsor":0},{"start_s":995.93,"end_s":997.43,"text":"like they are not supported.","speaker":null,"is_sponsor":0},{"start_s":998.13,"end_s":1001.37,"text":"So we can run this on like a Threadripper","speaker":null,"is_sponsor":0},{"start_s":1001.37,"end_s":1006.37,"text":"or a Xeon W3175X with a Titan XP and huge amounts of memory.","speaker":null,"is_sponsor":0},{"start_s":1006.83,"end_s":1011.05,"text":"So with this method, we could basically create the Mac","speaker":null,"is_sponsor":0},{"start_s":1011.05,"end_s":1013.97,"text":"that Apple fans can currently only dream of,","speaker":null,"is_sponsor":0},{"start_s":1013.97,"end_s":1016.26,"text":"one that doesn't thermal throttle.","speaker":null,"is_sponsor":0},{"start_s":1016.26,"end_s":1018.1,"text":"For now though, honestly,","speaker":null,"is_sponsor":0},{"start_s":1018.1,"end_s":1021.68,"text":"after everything that especially you went through,","speaker":null,"is_sponsor":0},{"start_s":1021.68,"end_s":1025.72,"text":"I'm happy this thing is just running at all.","speaker":null,"is_sponsor":0},{"start_s":1025.72,"end_s":1028.1,"text":"So maybe let us know in the comments, guys,","speaker":null,"is_sponsor":0},{"start_s":1028.1,"end_s":1031.18,"text":"do you wanna see us take a fatter machine","speaker":null,"is_sponsor":0},{"start_s":1031.18,"end_s":1033.06,"text":"for a spin with this method?","speaker":null,"is_sponsor":0},{"start_s":1033.06,"end_s":1037.76,"text":"Maybe like a Hackintosh versus loaded up iMac Pro","speaker":null,"is_sponsor":0},{"start_s":1037.76,"end_s":1039.98,"text":"for content creation benchmark,","speaker":null,"is_sponsor":0},{"start_s":1039.98,"end_s":1044.98,"text":"or maybe like Linux versus Mac versus Windows gaming","speaker":null,"is_sponsor":0},{"start_s":1045.56,"end_s":1047.9,"text":"all at the same time on the same box.","speaker":null,"is_sponsor":0},{"start_s":1047.9,"end_s":1048.8,"text":"I mean, I don't know.","speaker":null,"is_sponsor":0},{"start_s":1048.8,"end_s":1053.02,"text":"The possibilities are kind of endless here.","speaker":null,"is_sponsor":0},{"start_s":1053.02,"end_s":1054.02,"text":"So thanks for watching guys.","speaker":null,"is_sponsor":0},{"start_s":1054.02,"end_s":1055.8,"text":"If this video sucked, you know what to do,","speaker":null,"is_sponsor":0},{"start_s":1055.8,"end_s":1057.8,"text":"but if it was awesome, get subscribed, hit that like button,","speaker":null,"is_sponsor":0},{"start_s":1057.8,"end_s":1060.34,"text":"or check out the link to where to buy the stuff","speaker":null,"is_sponsor":0},{"start_s":1060.34,"end_s":1062.1,"text":"we featured in the video description.","speaker":null,"is_sponsor":0},{"start_s":1062.1,"end_s":1063.6,"text":"Also down there is our merch store,","speaker":null,"is_sponsor":0},{"start_s":1063.6,"end_s":1065.22,"text":"which has cool shirts like this one","speaker":null,"is_sponsor":0},{"start_s":1065.22,"end_s":1068.22,"text":"and our community forum, which you should totally join.","speaker":null,"is_sponsor":0}],"full_text":"Okay, so imagine for a moment that I am a long time Mac user. I know it's a bit of a stretch, but just bear with me for a second here. Now, imagine that I've been putting off an upgrade for years because I just don't like what Apple's done with their pro hardware. What with the soldering all the components and minimal upgradeability. What am I to do? Well, I can just use old hardware that's losing support, or I can cobble together a hopefully compatible bundle of components to build a Hackintosh that even if it works perfectly today is liable to be borked by a future macOS update. But those options suck. Fortunately, I've got one of these. And Anthony, and he comes bearing another way. So come along with us because we are gonna be using the power of virtualization to build the no compromises and fully upgradable Mac Pro. And it looks like this. What? Before we get started, there are a few requirements we need to meet. We need to have a dedicated graphics card. Is that NVIDIA? Yup. Ooh, spicy. We'll also need a USB controller that we can pass through our virtual machine for hot plug support. We'll need to access to a real Mac. Got it. Cool. And finally, although this might seem obvious, we'll need a computer. One with virtualization, both supported and enabled. Intel calls this VTD and VTX and AMD calls this SVM for secure virtual machine. That's what we'll be using today. Wait, so we're gonna be running Ryzen 2? Not bad, love it. It's even spicier. Yeah, but before we can do that, we'll need to install Linux. Specifically one with QEMU 3.1 or newer. We used Manjaro because as a rolling release distro, its packages are typically more up-to-date, but you might prefer something lighter like Arch if you intend to ignore your Linux install and use your machine purely as a Mac. Regardless of the distro, you'll need the following software. Libvirt, QEMU, OVMF, and Virtual Machine Manager via our Package Manager. So in Manjaro's case, that would be PAMAC. PAMAC? I think it's PAMAC, Package Manager. Cool. Then what we'll need to do is enable the KVM server, and then we'll need to do is enable the KVM server, and then we'll need to do is enable the KVM server, which for us can be achieved by firing up a terminal and typing these two commands. But I'm sure you're thinking to yourself, come on Linus, it can't be that simple. Surely Apple thought of virtual machines and locked down their OS in some way to keep this from working. And well, of course they did. Yeah, but thanks to some really amazing work by the team over at Pass Through Post, there's finally a workaround. It is a little bit tedious, but if you follow the steps carefully, it shouldn't take you more than an hour or two to do this at home. So first, we'll fire up the Linux terminal and type git clone, and paste the URL for the Hackintosh KVM repository, which will give us a folder with most of the files that we'll need. The last two that we'll need are ovmf__code.fd and ovmf__vars.fd from Kolya's OSX KVM Git repository. So as you guys can see, we are really getting into the weeds now. Our next step is then relatively simple, but the most legally problematic. See, downloading macOS is technically free. You just fire up the app store here, but only if it's going to be used according to the end user license agreement from Apple. So on a real Mac. So on a real Mac. So on a real Mac. Which means that technically, everything we do from this point on is piracy. Which means that whether or not you were to actually deploy a solution like this is up to your personal moral compass and your risk tolerance. So using our Mac, we're gonna download and run DOSDUDE1's High Sierra Patcher tool to download and create our installation media. Go ahead and fire this up here from an unknown developer. Beware. Yeah, we know. So we get this little error that says your machine is natively supported by High Sierra. You don't need to use this patch. One of the other purposes of this patch is running the latest macOS software on outdated Macs that Apple no longer supports. Anyway, that's fine. We knew that. So all we do is go down into tools, download macOS High Sierra, and then we're gonna save that file to the applications folder. Once that's done, we just copy the create ISO High Sierra file over to our flash drive so we can bring it over to our Mac. Got it. Then we launch a Mac terminal and navigate to the folder containing that file. Before we run it though, we'll set the executable flag by typing this command and hitting enter. And then after that, we type dot slash create underscore ISO underscore High Sierra dot sh and hit enter again. The process will begin automatically. And once it's done, we're going to have a bootable High Sierra ISO on our Mac's desktop, which we will then copy, back onto our USB over to our Linux machine. I mean, we could copy it over the network as well. We could. I mean, we do have that 10 gigabit network. This seems simpler right now. Yeah. While we wait, we can set up our VM on our Linux host. So inside the Hackintosh KVM folder is a sub folder called example XML files, containing two files, helpfully labeled for AMD and Intel users. We're running Ryzen. So we'll copy the AMD file to the root of the Hackintosh KVM folder. And rename to something more useful like hackintosh.xml. Now at the time of writing, this file is partially corrupt. So Anthony is going to need to fix it by opening it in a text editor, scrolling to the very bottom and typing slash domain to finish the file. And then by removing all of the value equals dash object lines and their subsequent input lines, because those are actually specific to the author's computer, not to us. Ours. Now that that's done, we can get back on track here. So at the top of the file, we want to edit the loader and the NBRAM lines to point to files that we got from Coleus Git earlier. Then we can save and close the file. So it's ready to import. Yeah. So I've got virtual machine manager right here. You can see that there's nothing there, but if I go into our Hackintosh folder and do ver.sh, define, hackintosh. There it is. Our Hackintosh VM. So from here, it's a GUI interface. So we can just open this puppy up and we can configure our Hackintosh however it is that we want. We can set our CPU core assignments, allocate however much memory we think we need and set up our storage media. So in this case, we're going to be booting from an NVMe SSD. One thing to watch out for here, every CPU is different, but for Ryzen 7, assigning eight cores in sequence from one to eight gives us exactly one CCX, which produces the on-chip communication overhead for better performance. Now next, in order to actually boot this thing, we'll need to add a virtual hard drive and point it to the clover.qcow2 file in our Hackintosh KVM folder. And we'll also need to add a virtual optical drive loaded with the High Sierra ISO that we created earlier. And theoretically, we are finally ready to install macOS. Before we pass the boot screen though, we're going to need to hit escape to go into the firmware settings and change the resolution to 1920 by 1080. This is the resolution that our Clover bootloader is set to use. And we're going to get garbled graphics if we don't change the setting. Once Clover is booted, we'll choose the macOS installer and everything from here on out should be as though it was on a real Mac, theoretically. It'll take a minute. Is that it? Yeah. That's it. That's it? A functional macOS desktop on AMD Ryzen and oh my God, it's slow. It's very laggy. Yeah. So we can fix that. Cool. It's just, it's got all the patches and drivers we need except for our display. Right. But are we ready to install that yet? No. No. Okay. Great. But wait. There's more. So first we need to download and install Clover to our main storage media. We can then copy the configuration from the Hackintosh KVM Clover image and leave it as is, or we can use it as a starting point for more customization. So using a tool called Clover Configurator, you can actually do all kinds of fun things like modify the boot screen and edit your serial number to get access to FaceTime and iMessage, et cetera, et cetera. Now, this is the point where we say goodbye to our slow built-in graphics and switch over to our dedicated card here. So what we'll need to do is shut down our VM and then open up its configuration in Virtual Machine Manager, where we will manually fully pass through this GPU. So this is actually a GTX 1070 over here that's separate from the RTX 2060 that Linux is running on. While we're at it, we can also pass through a USB controller so that we can hot plug USB devices within our VM. Now, if your motherboard has multiple USB controllers on it, like an Intel one and an As Media one, you may be able to do this without a separate add-in card. Otherwise, macOS compatible USB cards are available for just a few bucks. In order to make this work though, we're gonna need to edit a couple of system files, starting with etc slash default slash grub to tell Linux which devices, like which parts of the hardware here it should leave available for us to pass through and to enable support for splitting our devices into IOMMU groups that can be passed through to a VM. Now we're back in the command line and in both sections here, we're gonna add AMD underscore IOMMU equals on and VFIO dash PCI dot IDs equals followed by the IDs of the devices that we want to pass through, which we can then check by loading up a terminal and typing LSPCI dash NN and then looking for the devices. That's our Turing, there we go. That one right there is our GPU and then the HDMI audio device that should be right under it is the audio controller for our GPU. Now, before you fully commit to this, you may want to run this command to check and see if your IOMMU groups are separated correctly. If not, you're gonna wanna try different PCI express slots, like maybe ones connected directly to the CPU instead of the chip set, which some other boards will have labels for, or else it'll be in the manual. If that fails, you can look into ACS overrides, but let me tell you, that was an absolute nightmare when I was trying to figure out six workstations, one CPU, and even then it ultimately didn't solve the problem. And we had to switch to a different motherboard, and we had to make sure that it worked out right. So before undertaking a project like this, I'd recommend seeing how well your board handles virtualization. Some vendors do it better than others, and some models do it better than others. Now, because Linux is using the video card and USB controller we need, we had to do a system reboot. Now we can go back to virtual machine manager, remove our temporary display adapter, double check that these devices you pass through are actually the right devices, and boot it up. Okay. Double check here, just moving everything over. Theoretically. Okay. This is now a Mac, and this is a Linux PC. And they're both running off of this same box with half the CPU allocated to each and one graphics card for each. We might want to go in. Oh yeah, that's this again. Got to change our boot order. Can't control, delete, do it. Oh, nope. So this was unexpected. This has never happened in a Linus Tech Tips video before. We actually had some technical difficulties, and for some reason, it was not letting us select 1080p over here with the NVIDIA card passed through. So that's fine. We just took it off, put back the garbage drivers. And then what we're going to do is install the NVIDIA web driver ahead of time so that when we boot up with the NVIDIA card, it's ready to rock. So all we need is a handy little script over at Benjamin Dobell's NVIDIA-Update Git repository, which will grab the best NVIDIA driver for our macOS version. Then we reboot. Okay. So let's try that again. We should be good to go now. Now, it may do that weird thing again. It does. It did. Yep. That's a good way to use a computer. Like this. A little window right there. Human vision is like, you know, it's wide, man. It's not tall, man. So we got, oh, we're back to 16 by nine. Like a, like a loser. Like a loser running an AMD processor. With a higher performance graphics card than you can currently buy in a Mac, which I actually don't know is technically true because we were going to run this with a 1080 TI. Whatever the point is, don't worry about it. We could be running a 1080 TI in macOS with GPU acceleration. This is something else. Ah, there we go. Blah, blah, blah, blah. Holy shit. Ryza. Take that, apple.com. Yeah, you like that? Oh, show me your Mac option with Ryzen. Do you have one? Do you have one like that? Oh, oh, you don't. You don't have one like that, huh? Wow, what a bummer. Yeah, it's a real bummer. Maybe they can put something in the Mac Pro. Now, there is more you can do to improve performance, like setting up the VM to use statically assigned memory pages, pinning and isolating CPU cores, and bypassing pulse audio on the host. And if you don't plan on using Linux for anything, making your machine just boot macOS at startup. You can also get FaceTime and iMessage running as we alluded to before, but it seems to be a bit of a hit or miss thing. So that might be a project for another day. And actually, I mean, I think that's a perfect place for us to sign off here because I think we've accomplished what we set out to do today. And while we can go much deeper, honestly, I'd like to kind of make this up to the audience, what they want to see us do with this, because here's the thing. You guys got to understand because this is a VM, just like two gamers, one CPU, seven gamers, one CPU, all those projects, it will run on any hardware. That was part of the reason that an NVIDIA GPU and AMD CPU was chosen because those are specifically things along with the chip set here that are not supported by Apple, like not even weird bootleg drivers that people ripped out of macOS and whatever, like they are not supported. So we can run this on like a Threadripper or a Xeon W3175X with a Titan XP and huge amounts of memory. So with this method, we could basically create the Mac that Apple fans can currently only dream of, one that doesn't thermal throttle. For now though, honestly, after everything that especially you went through, I'm happy this thing is just running at all. So maybe let us know in the comments, guys, do you wanna see us take a fatter machine for a spin with this method? Maybe like a Hackintosh versus loaded up iMac Pro for content creation benchmark, or maybe like Linux versus Mac versus Windows gaming all at the same time on the same box. I mean, I don't know. The possibilities are kind of endless here. So thanks for watching guys. If this video sucked, you know what to do, but if it was awesome, get subscribed, hit that like button, or check out the link to where to buy the stuff we featured in the video description. Also down there is our merch store, which has cool shirts like this one and our community forum, which you should totally join."}