3 votes

Terminal vs Shell vs Processus sur ARM (Apple Silicon)

Comment Big Sur et le silicium ARM (Apple) gèrent-ils les permutations suivantes ?

Disons que j'exécute Terminal en tant que x86_64 en utilisant Rosetta2 alors ça veut dire que je doit utiliser un x86_64 shell ?

Si en effet j'utilise un x86_64 shell, peut-il seulement exécuter x86_64 processus ou Universal des bacs ?

De même, si j'utilise un Silicon Terminal natif d'Apple, cela signifie-t-il que je dois exécuter un shell ARM ?

J'espère que ce que je demande a un sens.

Je pose la question car ce que j'aimerais vraiment faire, c'est utiliser le Home-brew d'une certaine manière. Je veux utiliser une version ARM d'iTerm2 (Universal binary), puis exécuter la dernière version d'iTerm2. ZSH (peut être x86_64 selon la version que brew installe, puis utiliser également un mélange de binaires ARM et Intel.

4voto

Douglas Points 10417

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 :

enter image description here

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.

Open With Rosetta

Ainsi, Terminal (ou iTerm2) sera universel (fonctionne nativement sous ARM) mais l'environnement pourra prendre en charge le jeu d'instructions x86_64.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X