Łatwa metoda wiersza poleceń w celu określenia określonego ciągu architektury ARM?


24

Próbuję napisać skrypt, który określi działania w oparciu o architekturę maszyny. Używam już uname -mzebrać linię architektura, jednak nie wiem, jak wiele architektur ARM istnieje, ani nie wiem, czy ktoś jest armhf, armelalbo 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, armellub 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.


case $(arch) in ; armf)... ;; armel)... ;; arm64)... ;; *) exit ;; esacCzy widzisz coś takiego?
Costas

@Casas Tak, to jest to, o co mi chodzi, ale zdobycie łuku jest trudną częścią. Ponieważ rozwiązania mogą być specyficzne dla dystrybucji i modelu systemu operacyjnego, Debian i Ubuntu są podobne i są moim celem, więc rozwiązania, które pozwoliłyby uzyskać archiwa, a następnie byłyby użyteczne, byłyby świetne. (To nie jest kwestia czystej programowaniu albo, po prostu trzeba polecenie, aby pobrać konkretny łuk - i już i386, i686i x86_64przypadki, w oparciu o uname -m, ale nic do arm??... a przynajmniej nic, co identyfikuje armhf, armellub arm64) .
Thomas Ward

Co masz na myśli?
Costas

1
@ Kostka W ustawieniach ARM uname -mwypluwa konkretną tablicę ramion - armv7lna przykład. Nie mówi wprost, czy to jest armel, armhfczy arm64- właśnie to muszę $(arch)zakończyć, aby wyeliminować niekompatybilne architektury systemu operacyjnego.
Thomas Ward

Lepiej parsuj /proc/config.gz, jeśli tam jest.
umeboshi

Odpowiedzi:


39
dpkg --print-architecture

wyświetli podstawową architekturę maszyny, na której jest uruchomiony. Będzie to armhfna komputerze z 32-bitowym ARM Debian lub Ubuntu (lub pochodną), arm64na 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 i386Debiana na 64-bitowym procesorze Intel lub AMD i uważam, że można go uruchomić armhfna 64-bitowym procesorze ARM. Możliwe jest nawet posiadanie głównie i386plików binarnych (więc podstawowa architektura jest i386) w amd64jądrze ...


Tak, ale to określi architekturę potrzebną do pakietów skryptu. Przetestuję to dzisiaj, dzięki.
Thomas Ward

1
Na urządzeniu z Androidem nie ma polecenia dpkg. Co powinienem zrobić, aby wykryć architekturę urządzenia z Androidem?
Dr.jacky

@ Mr.Hyde to pytanie dotyczyło w szczególności Debiana i Ubuntu; Proponuję zadać nowe pytanie, jeśli chcesz uzyskać odpowiedź na Androida, tutaj lub na android.stackexchange.com .
Stephen Kitt
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.