Próbuję napisać skrypt, który określi działania w oparciu o architekturę maszyny. Używam już uname -m
zebrać linię architektura, jednak nie wiem, jak wiele architektur ARM istnieje, ani nie wiem, czy ktoś jest armhf
, armel
albo arm64
.
Ponieważ jest to wymagane dla tego skryptu, aby ustalić, czy części skryptu mogą być uruchomione, czy nie, próbuję znaleźć prosty sposób, aby ustalić, czy architektura jest armhf
, armel
lub arm64
. Czy istnieje jakiś jeden-liner lub proste polecenia, które mogą być wykorzystane do produkcji albo armhf
, armel
, lub arm64
?
Skrypt został napisany specjalnie dla systemów Debian i Ubuntu, dlatego właśnie w tym celu oznaczam go tagiem (automatycznie się wyłącza, jeśli nie korzystasz z jednej z tych dystrybucji, ale można to również zastosować w dużo szerszy sposób, jeśli komendy istnieją)
EDYCJA: Niedawno dowiedziałem się, że Armel nie żyje, a twórcy oprogramowania arm64 (PPA lub wirtualni) nie są najbardziej stabilni. Mam więc wyszukiwanie wieloznaczne arm*
i zakładam, że armhf, ale nadal konieczne jest wymyślenie jednej linijki, która zwraca jedną z trzech - niezależnie od tego, czy jest to polecenie Ubuntu / Debian, czy wywołanie jądra, czy coś takiego.
źródło
case $(arch) in ; armf)... ;; armel)... ;; arm64)... ;; *) exit ;; esac
Czy widzisz coś takiego?i386
,i686
ix86_64
przypadki, w oparciu ouname -m
, ale nic doarm??
... a przynajmniej nic, co identyfikujearmhf
,armel
lubarm64
) .uname -m
wypluwa konkretną tablicę ramion -armv7l
na przykład. Nie mówi wprost, czy to jestarmel
,armhf
czyarm64
- właśnie to muszę$(arch)
zakończyć, aby wyeliminować niekompatybilne architektury systemu operacyjnego.Odpowiedzi:
wyświetli podstawową architekturę maszyny, na której jest uruchomiony. Będzie to
armhf
na komputerze z 32-bitowym ARM Debian lub Ubuntu (lub pochodną),arm64
na komputerze z 64-bitowym ARM.Zauważ, że działająca architektura może różnić się od architektury sprzętowej, a nawet architektury jądra. Możliwe jest uruchomienie
i386
Debiana na 64-bitowym procesorze Intel lub AMD i uważam, że można go uruchomićarmhf
na 64-bitowym procesorze ARM. Możliwe jest nawet posiadanie główniei386
plików binarnych (więc podstawowa architektura jesti386
) wamd64
jądrze ...źródło