How to clone an Apple Silicon Mac without Migration Assistant or Time Machine
Today I successfully cloned my M1 MacBook Air to a new M3 MacBook Pro, it took some effort so thought I would share the steps here. Before I begin, the reason I prefer to clone rather than use Migration Assistant is I have many command line tools installed all over the place and I’ve found in the past that migration can miss some things and it can be frustrating to find things missing at the crucial time you need them so I’ve just learned that cloning is always better. Also I’d prefer not to do a Time Machine restore because it has quite a large exclusion list and it ends up going via Migration Assistant too.
You’ll need an external USB SSD that is large enough to store the entire source Mac’s drive. You’ll also need a drive of at least 17GB for the macOS install media (this gets larger every release, Sonoma needs 16.6GB), however that can simply be the same USB SSD. If you have a super-fast internet connection you can possibly skip creating the install media because it can be downloaded from recovery on the new Mac when needed.
On the source Mac, go to the App Store and “Get” the latest macOS installer, this will display the download progress in System Settings and when finished it will land in \Applications
and auto-launch however we can just quit it. While it is downloading, we can tidy up and offload old large files to our NAS, empty the trash, quit all apps and save our work. Finally, when ready we can switch of Wi-Fi and go offline.
On the source Mac, logged in to your user account, open Disk Utility and partition the external SSD to have one large APFS container named the same volume as your internal, e.g. Macintosh HD and one MacOS Extended Journaled partition of 18GB and name it Installer (it gets renamed anyway). Now follow Apple’s instructions to create install media to the Installer volume using Terminal. After this completes you can delete the installer app from \Applications. Next use SuperDuper! to clone from the internal Macintosh HD to the external USB Macintosh HD (you might be able to achieve the same result using asr
in Terminal). Don’t use the Smart Update feature it fails half way through with an APFS volume, instead choose erase and copy. When this cloning starts it takes a snapshot so if you edit any files after this point they won’t make it to the new Mac (except if cloud files). Once complete you can shut down this old Mac.
Boot the new Mac into recovery mode by holding power button for 10 secs and choose Options. You must always do this 10 sec procedure to enter recovery mode, e.g. if you choose restart within recovery and select Options again it can tend to be a different recovery that is more limited in its capabilities and fails on Disk Utility operations and can get in a real messy state. In Disk Utility right click Macintosh HD and choose erase – it doesn’t matter whether you choose the disk, the volume group or one of the containers, all result in the whole thing getting wiped. You may need to do this twice to get it to work and it may require a reboot. If it doesn’t work then you might not be in the correct recovery as mentioned earlier so shutdown and start again holding power for 10 seconds. Hopefully that will complete without errors so you can proceed to the next step.
After the erase is successful now connect the external USB drive. Right-click the newly erased internal Macintosh HD and choose restore and for the source, select the external Macintosh HD yellow icon. It will say “validating source…” and beachball for ages but it’s actually copying. Expect it to take the same amount of time as the SuperDuper! clone did. Hopefully that will complete without errors so you can proceed to the next step.
Shutdown with USB still connected. Hold power button for 10 secs again but this time choose macOS installer (the install media partition we created earlier on the USB). Select the destination as the internal Macintosh HD. This isn’t a clean install, it repairs the current installation to make it pass security; it’ll also add in any missing drivers for the new hardware. It will reboots at the end of installation, reboot again, the mouse pointer appears and it takes a long time to boot – it is probably verifying everything.
Now you should see the login screen in the cloned OS on the new Mac, however we are not finished yet as there is still something serious to fix. We can’t change our password, maybe can’t even install OS updates, can’t enable File Vault, can’t go to recovery mode and allow 3rd party kernel extensions (I needed this to install a Realtek driver however that was a bad idea anyway since it’s was x86 only). All of these issues stem from the fact we are missing the Secure Token. If we launch Terminal and enter diskutil apfs listusers /
we’ll see no users. Also, if we boot into recovery mode and choose Startup Disk as the internal SSD it will warn there are no authorized users. One simple way I figured out to give your user account a Secure Token is to login go to System Settings, Users & Groups and add a new admin account, just name it anything, I named it malcadmin
. After doing this now type diskutil apfs listusers /
and you’ll see our cloned account and the newly added account are listed. Now all of the issues mentioned earlier are fixed. You could now delete this extra admin account.
A few other things I noticed is I had to re-enable Location Services in Privacy. In Messages, Preferences I had to reselect my preferred “Start new conversations from” option. Some apps required an extra second to launch while “Verifying…”. Xcode 15.3 asked to install the simulators again but didn’t actually need to download them. I had to re-configure the external monitor layout back to how it was. I had to remove and re-add all my Apple Pay cards although that might only have been because I messing with the Secure Token trying to find a solution.
That should be it, once you are happy with the cloned install after a few days then you could reconnect to your NAS Time Machine if you have one.
If this helped or you have any feedback I’d be happy to hear from you!