J'essaie d'écrire un script qui déterminera les actions en fonction de l'architecture de la machine. J'utilise déjà uname -m
pour recueillir la ligne d'architecture, mais je ne sais pas combien d'architectures ARM , il y a, et je ne sais si l' on est armhf
, armel
ou arm64
.
Comme cela est nécessaire pour que ce script détermine si des parties du script peuvent être exécutées ou non, j'essaie de trouver un moyen simple de déterminer si l'architecture est armhf
, armel
ou arm64
. Y at - il une doublure ou une commande simple qui peut être utilisé pour la production soit armhf
, armel
ou arm64
?
Le script est spécifiquement écrit pour les systèmes Debian et Ubuntu, et je marque comme tel en gardant cela à l'esprit (il se ferme automatiquement si vous n'êtes pas sur l'une de ces distributions, mais cela pourrait également être appliqué de manière beaucoup plus large si le commande (s) existent)
EDIT: récemment appris que armel est mort, et les constructeurs de logiciels arm64 (PPA ou virtuels) ne sont pas les plus stables. J'ai donc une recherche générique qui trouve arm*
et suppose armhf, mais il est toujours nécessaire de trouver une ligne qui renvoie l'un des trois - que ce soit une commande Ubuntu / Debian ou un appel au noyau ou quelque chose.
la source
case $(arch) in ; armf)... ;; armel)... ;; arm64)... ;; *) exit ;; esac
vous meen quelque chose comme ça?i386
,i686
et lesx86_64
cas sur la baseuname -m
, mais rien pourarm??
... ou du moins, rien qui identifiearmhf
,armel
ouarm64
) .uname -m
crache la carte de bras spécifique -armv7l
par exemple. Il ne dit pas explicitement que ce soitarmel
,armhf
ouarm64
- ce qui est ce que je dois$(arch)
finir comme pour éliminer les architectures incompatibles avec OS.Réponses:
affichera l'architecture principale de la machine sur laquelle il est exécuté. Ce sera
armhf
sur une machine exécutant ARM 32 bits Debian ou Ubuntu (ou un dérivé),arm64
sur une machine exécutant ARM 64 bits.Notez que l'architecture en cours d'exécution peut être différente de l'architecture matérielle ou même de l'architecture du noyau. Il est possible d'exécuter
i386
Debian sur un processeur Intel ou AMD 64 bits, et je pense qu'il est possible de fonctionnerarmhf
sur un processeur ARM 64 bits. Il est même possible d'avoir principalement desi386
binaires (donc l'architecture principale esti386
) sur unamd64
noyau ...la source