3 votos

Terminal vs Shell vs Procesos en ARM (Apple Silicon)

¿Cómo maneja Big Sur y el silicio ARM (Apple) las siguientes permutaciones?

Digamos que ejecuto el Terminal como x86_64 utilizando Rosetta2 Entonces, ¿significa eso que debe utilizar un x86_64 shell ?

Si efectivamente utilizo un x86_64 shell, sólo puede ejecutar x86_64 procesos o Universal ¿contenedores?

Del mismo modo, si utilizo un terminal nativo de Apple Silicon, ¿significa que debo ejecutar un shell ARM?

Espero que lo que pido tenga sentido.

Lo pregunto porque en realidad lo que me gustaría hacer es utilizar la cerveza casera de una manera determinada. Quiero usar una versión ARM de iTerm2 (binario universal), y luego ejecutar la última ZSH (puede ser x86_64 dependiendo de la versión que brew instale, entonces también se utiliza una mezcla de binarios ARM e Intel.

4voto

Douglas Puntos 10417

Hay algunos malentendidos sobre lo que es cada uno de los elementos...

  • Terminal - El terminal no es más que la utilidad que permite ejecutar comandos. Piensa en ella como una "ventana" al sistema. Puedes abrir un Terminal en un Mac PowerPC, y luego establecer una conexión con un nuevo Mac M1 que a su vez se conecta al escritorio X11 que se ejecuta en Linux en una CPU Intel. En otras palabras, el Terminal no determina el entorno en el que finalmente trabajas. Si estás en el nuevo Mac M1, el Terminal será el Terminal nativo compilado M1.

  • El shell es el entorno en el que operas; es la interfaz de usuario real. Probablemente estés familiarizado con Bash y Zsh (shell por defecto desde Catalina). Este también operará como el entorno nativo compilado, así que si estás en la M1 usará el shell compilado para esa plataforma. El shell es sólo la forma de enviar comandos al sistema operativo para hacer cosas, incluyendo la ejecución de binarios.

  • La ejecución de binarios depende de para qué se haya compilado ese binario. Sabemos que un binario de Linux (incluso compilado en x86) no se ejecutará en MacOS. El binario tiene que ser compatible o necesita algo que te da esa compatibilidad. Por ejemplo, FreeBSD tiene una capa de compatibilidad con Linux . Aquí es donde entra Rosetta; para hacer que las instrucciones de Intel sean compatibles con ARM de Apple.

Rosetta es la herramienta o "capa" que permite ejecutar instrucciones x86_64 en el chip ARM. Así, si quieres ejecutar un widget que sólo está disponible en x86_64, lo ejecutarías en Rosetta.

Así que, usando tu ejemplo, ejecutarías el binario universal de iTerm2 (nativo de ARM) para usar el shell Zsh binario universal que fue compilado en ARM para lanzar la herramienta binaria universal compilada nativamente en ARM o la herramienta x86_64 compilada bajo Intel vía Rosetta.

De los comentarios:

Me pregunto por qué el equipo de Homebrew sugiere abrir la terminal bajo Rosetta.

Haciendo una investigación relacionada con MacPorts, hay muchos, muchos puertos que aún no soportan la compilación bajo ARM; Bash es uno de ellos y he incluido la página de salud del puerto como referencia. Ver abajo:

enter image description here

Le dirán que abra Terminal (o iTerm2) bajo Rosetta para asegurar estás inicializando un entorno x86_x64 .

Si un binario incluye instrucciones tanto para arm64 como para x86_64, el usuario puede indicar al sistema que inicie la aplicación utilizando la traducción de Rosetta desde la ventana Get Info de la aplicación en el Finder. Por ejemplo, un usuario puede activar la traducción de Rosetta para permitir que la aplicación ejecute plug-ins más antiguos que aún no son compatibles con la arquitectura arm64.

Open With Rosetta

Así, Terminal (o iTerm2) será universal (se ejecuta de forma nativa bajo ARM) pero el entorno podrá soportar el conjunto de instrucciones x86_64.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X