Простий метод командного рядка для визначення конкретного рядка архітектури ARM?


24

Я намагаюся написати сценарій, який визначатиме дії на основі архітектури машини. Я вже використовую , uname -mщоб зібрати архітектуру лінії, проте я не знаю , скільки ARM архітектури є, і я не знаю , чи є один armhf, armelабо arm64.

Оскільки для цього сценарію потрібно визначити, чи можна виконати частини сценарію чи ні, я намагаюся знайти простий спосіб визначити, чи є архітектура armhf, armelчи arm64. Чи є один вкладиш або проста команда , яка може бути використана для виведення сигналу armhf, armelабо arm64?

Сценарій спеціально написаний для систем Debian і Ubuntu, і я позначаю це як таке, маючи це на увазі (він автоматично вимикається, якщо ви не в одному з цих дистрибутивів, але це може бути застосовано і набагато ширше, якщо команда (и) існують)


EDIT: Нещодавно дізнався, що armel мертвий, а виробники програмного забезпечення arm64 (PPA або віртуальна версія) не є найбільш стабільними. Тож у мене є пошук підстановки під назвою arm*і припущення armhf, але все ж потрібно розібратися в одному вкладиші, який повертає один із трьох - будь то команда Ubuntu / Debian або виклик ядра чи щось.


case $(arch) in ; armf)... ;; armel)... ;; arm64)... ;; *) exit ;; esacВи щось подібне бачите?
Костас

@Costas Так, це саме те, що я роблю після, але отримання арки є складною частиною. Оскільки рішення можуть бути дистрибутивними та специфічними для ОС-моделей, Debian і Ubuntu схожі і є моєю ціллю, тому рішення, які витягнуть арку і потім придатні для використання, були б чудовими. (Це не чисто програмування питання або, я просто потрібна команда , щоб захопити конкретну арку - у мене вже є i386, i686і x86_64випадки , засновані на uname -m, але нічого для arm??... або , по крайней мере, нічого такого , що ідентифікує armhf, armelабо arm64) .
Томас Уорд

Що ви маєте на увазі?
Костас

1
@Costas У налаштуваннях ARM виплітається uname -mконкретна дошка armv7lдля рук - наприклад. Він прямо не сказати , чи є це armel, armhfабо arm64- що то , що мені потрібно , $(arch)щоб в кінцевому підсумку , як для того , щоб відсіяти несумісних архітектур ОС с.
Томас Уорд

Можливо, вам буде краще розбирати /proc/config.gz, якщо він є.
умебоші

Відповіді:


39
dpkg --print-architecture

виведе основну архітектуру машини, на якій вона працює. Це буде armhfна машині з 32-бітним ARM Debian або Ubuntu (або похідною), arm64на машині з 64-розрядною ARM.

Зауважте, що запущена архітектура може відрізнятися від апаратної архітектури або навіть архітектури ядра. Можливо запустити i386Debian на 64-розрядному процесорі Intel або AMD, і я вважаю, що можна запустити armhf64-бітний процесор ARM. Навіть можливо, що ядро має в основному i386двійкові файли (так це первинна архітектура i386) amd64...


Правильно, але це визначить архітектуру, необхідну для пакетів сценарію. Я перевірю це сьогодні, дякую.
Томас Уорд

1
На пристрої Android немає команди dpkg. Що мені робити, щоб виявити архітектуру Android-пристрою?
Dr.jacky

@ Mr.Hyde це питання спеціально спрямовано на Debian та Ubuntu; Я пропоную вам задати нове запитання, чи хочете ви відповісти для Android, або тут, або на android.stackexchange.com .
Стівен Кітт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.