With Apple now officially selling Apple Silicon Macs, there’s a design decision which Apple made with macOS Big Sur that may affect various Mac environments:
At this time, macOS Big Sur does not install Rosetta 2 by default on Apple Silicon Macs.
Rosetta 2 is Apple’s software solution for aiding in the transition from Macs running on Intel processors to Macs running on Apple Silicon processors. It allows most Intel apps to run on Apple Silicon without issues, which provides time for vendors to update their software to a Universal build which can run on both Intel and Apple Silicon.
Without Rosetta 2 installed, Intel apps do not run on Apple Silicon. So for those folks who need Rosetta 2, how to install it? For more details, please see below the jump.
You can install Rosetta 2 on Apple Silicon Macs using the softwareupdate command. To install Rosetta 2, run the following command with root privileges:
/usr/sbin/softwareupdate --install-rosetta
Installing this way will cause an interactive prompt to appear, asking you to agree to the Rosetta 2 license. If you want to perform a non-interactive install, please run the following command with root privileges to install Rosetta 2 and agree to the license in advance:
/usr/sbin/softwareupdate --install-rosetta --agree-to-license
Having the the non-interactive method for installing Rosetta 2 available makes it easier to script the installation process. My colleague Graham Gilbert has written a script for handling this process and discussed it here:
https://grahamgilbert.com/blog/2020/11/13/installing-rosetta-2-on-apple-silicon-macs/
I’ve written a similar script to Graham’s, which is available below and from the following address on GitHub:
#!/bin/bash | |
# Installs Rosetta as needed on Apple Silicon Macs. | |
exitcode=0 | |
# Determine OS version | |
# Save current IFS state | |
OLDIFS=$IFS | |
IFS='.' read osvers_major osvers_minor osvers_dot_version <<< "$(/usr/bin/sw_vers -productVersion)" | |
# restore IFS to previous state | |
IFS=$OLDIFS | |
# Check to see if the Mac is reporting itself as running macOS 11 | |
if [[ ${osvers_major} -ge 11 ]]; then | |
# Check to see if the Mac needs Rosetta installed by testing the processor | |
processor=$(/usr/sbin/sysctl -n machdep.cpu.brand_string | grep -o "Intel") | |
if [[ -n "$processor" ]]; then | |
echo "$processor processor installed. No need to install Rosetta." | |
else | |
# Check Rosetta LaunchDaemon. If no LaunchDaemon is found, | |
# perform a non-interactive install of Rosetta. | |
if [[ ! -f "/Library/Apple/System/Library/LaunchDaemons/com.apple.oahd.plist" ]]; then | |
/usr/sbin/softwareupdate –install-rosetta –agree-to-license | |
if [[ $? -eq 0 ]]; then | |
echo "Rosetta has been successfully installed." | |
else | |
echo "Rosetta installation failed!" | |
exitcode=1 | |
fi | |
else | |
echo "Rosetta is already installed. Nothing to do." | |
fi | |
fi | |
else | |
echo "Mac is running macOS $osvers_major.$osvers_minor.$osvers_dot_version." | |
echo "No need to install Rosetta on this version of macOS." | |
fi | |
exit $exitcode |