Il y a quelques malentendus sur ce que sont chacun des éléments...
-
Terminal - Le terminal est simplement l'utilitaire qui vous permet d'exécuter des commandes. Considérez-le comme une "fenêtre" dans le système. Vous pouvez ouvrir un terminal sur un Mac PowerPC, puis établir une connexion avec un nouveau Mac M1 qui se connecte à son tour au bureau X11 fonctionnant sous Linux sur un processeur Intel. En d'autres termes, le terminal ne détermine pas l'environnement dans lequel vous travaillez finalement. Si vous êtes sur le nouveau Mac M1, le terminal sera le terminal natif M1 compilé.
-
Le shell est l'environnement dans lequel vous opérez ; c'est l'interface utilisateur réelle. Vous êtes probablement familier avec Bash et Zsh (shell par défaut depuis Catalina). Celui-ci fonctionnera également comme l'environnement compilé natif, donc si vous êtes sur le M1, il utilisera le shell compilé pour cette plateforme. Le shell est juste la façon dont vous envoyez des commandes au système d'exploitation pour faire des choses, y compris exécuter des binaires.
-
L'exécution des binaires dépend de ce pour quoi le binaire a été compilé. Nous savons qu'un binaire Linux (même compilé sur x86) ne fonctionnera pas sur MacOS. Le binaire doit être compatible, sinon vous avez besoin de quelque chose qui vous donne cette compatibilité. Par exemple, FreeBSD a une couche de compatibilité avec Linux . C'est là que Rosetta entre en jeu ; pour rendre les instructions Intel compatibles avec les ARM d'Apple.
Rosetta est l'outil ou la "couche" qui vous permet d'exécuter des instructions x86_64 sur la puce ARM. Ainsi, si vous voulez exécuter un widget qui n'est disponible qu'en x86_64, vous le ferez tourner sur Rosetta.
Ainsi, en reprenant votre exemple, vous exécuteriez le binaire universel d'iTerm2 (natif d'ARM) pour utiliser le shell binaire universel Zsh qui a été compilé sur ARM pour lancer soit l'outil binaire universel compilé nativement sur ARM, soit l'outil x86_64 compilé sous Intel via Rosetta.
Dans les commentaires :
Je me demande pourquoi l'équipe Homebrew suggère d'ouvrir le terminal sous Rosetta ?
En faisant quelques recherches sur MacPorts, il y a beaucoup, beaucoup de ports qui ne supportent pas encore la compilation sous ARM ; Bash est l'un d'entre eux et j'ai inclus la page de santé du port pour référence. Voir ci-dessous :
Ils vous diront d'ouvrir le Terminal (ou iTerm2) sous Rosetta pour vous assurer que vous initialisez un environnement x86_x64 .
Si un binaire comprend à la fois des instructions arm64 et x86_64, l'utilisateur peut indiquer au système de lancer l'application en utilisant la traduction Rosetta à partir de la fenêtre Get Info de l'application dans le Finder. Par exemple, un utilisateur peut activer la traduction Rosetta pour permettre à l'application d'exécuter des plug-ins plus anciens qui ne prennent pas encore en charge l'architecture arm64.
Ainsi, Terminal (ou iTerm2) sera universel (fonctionne nativement sous ARM) mais l'environnement pourra prendre en charge le jeu d'instructions x86_64.