Estoy tratando de escribir un script que determinará las acciones basadas en la arquitectura de la máquina. Ya utilizo uname -m
para recoger la línea de la arquitectura, sin embargo no sé cuántos arquitecturas ARM no son, ni sé si uno es armhf
, armel
o arm64
.
Ya que esto es necesario para esta secuencia de comandos para determinar si las partes de la secuencia de comandos se pueden ejecutar o no, yo estoy tratando de encontrar una forma sencilla de determinar si la arquitectura es armhf
, armel
o arm64
. ¿Hay una sola línea o un comando simple que se puede utilizar para la producción, ya sea armhf
, armel
o arm64
?
El script está específicamente escrito para los sistemas Debian y Ubuntu, y estoy etiquetando como tal con esto en mente (se cierra automáticamente si no está en una de esas distribuciones, pero esto también podría aplicarse de una manera mucho más amplia si el comando (s) existe)
EDITAR: Recientemente aprendí que Armel está muerto y que los creadores de software arm64 (PPA o virtual) no son los más estables. Así que tengo una búsqueda con comodines para encontrar arm*
y asumir armhf, pero aún es necesario descubrir un revestimiento que devuelva uno de los tres, ya sea un comando de Ubuntu / Debian o una llamada del kernel o algo así.
fuente
case $(arch) in ; armf)... ;; armel)... ;; arm64)... ;; *) exit ;; esac
¿Te refieres a algo como esto?i386
,i686
yx86_64
casos en base auname -m
, pero nada dearm??
... o, al menos, nada que identificaarmhf
,armel
oarm64
) .uname -m
escupe la placa de brazo específica,armv7l
por ejemplo. No dice explícitamente si se trata dearmel
,armhf
oarm64
- que es lo que necesito$(arch)
para terminar como el fin de eliminar a las arquitecturas de sistemas operativos incompatibles con.Respuestas:
generará la arquitectura primaria de la máquina en la que se ejecuta. Esto será
armhf
en una máquina que ejecute ARM Debian de 32 bits o Ubuntu (o un derivado),arm64
en una máquina que ejecute ARM de 64 bits.Tenga en cuenta que la arquitectura en ejecución puede ser diferente de la arquitectura de hardware o incluso la arquitectura del núcleo. Es posible ejecutar
i386
Debian en una CPU Intel o AMD de 64 bits, y creo que es posible ejecutararmhf
en una CPU ARM de 64 bits. Incluso es posible tener principalmentei386
binarios (por lo que la arquitectura principal esi386
) en unamd64
núcleo ...fuente