Özel ARM mimarisi dizesini belirlemek için kolay komut satırı yöntemi?


24

Makinenin mimarisine göre eylemleri belirleyecek bir senaryo yazmaya çalışıyorum. Zaten kullanmak uname -mancak kaç tane ARM mimarileri bilmiyorum, mimari çizgisini toplamaya, ne de biri olup olmadığını biliyor musunuz armhf, armelya da arm64.

Bu senaryonun bölümleri çalıştırmak veya olmasın edilip edilemeyeceğini belirlemek için bu komut dosyası için gereklidir olarak, mimari olup olmadığını belirlemek için basit bir yol bulmaya çalışıyorum armhf, armelya arm64. Çıkış olarak kullanılabilen herhangi bir liner veya basit bir komut var mı armhf, armelya arm64?

Betik Debian ve Ubuntu sistemleri için özel olarak yazılmıştır ve bunu aklımdan geçiriyorum (bu dağıtımlardan birinde değilseniz otomatik olarak sonlandırılıyor, ancak emir var


EDIT: Son zamanlarda armel öldü ve arm64 yazılım üreticileri (PPA veya sanal tabanlı) en kararlı olmadığını öğrendim. Bu yüzden bir buluntu bulup arm*varsayarak bir joker arama yaptım, ancak yine de bir Ubuntu / Debian komutu veya bir çekirdek çağrısı ya da bir başka bir şey olup olmadığını belirten bir liner bulmak gerekiyor.


case $(arch) in ; armf)... ;; armel)... ;; arm64)... ;; *) exit ;; esacböyle bir şey mi gördün?
Costas

@Costas Evet, etkin bir şekilde benim peşimden geldiğim şey bu, ancak kemer almak zor bir iştir . Çözümler dağıtıma ve işletim sistemi modeline özel olabileceğinden, Debian ve Ubuntu birbirine benziyor ve benim hedefim, bu yüzden kemeri çıkarıp kullanılabilecek çözümler daha iyi olurdu. (Bu saf programlama soru ya, ben sadece belirli kemer kapmak için komut ihtiyaç değil - ben zaten var i386, i686ve x86_64dayalı vakalar uname -m, ama hiçbir şey arm??... ya da en azından, hiçbir şey belirler armhf, armelya arm64) .
Thomas Ward

Ne demek istiyorsun?
Costas

1
@Costas ARM kurulumlarında, uname -mbelirli bir kol tahtasını tükürür - armv7lörneğin. Bu açıkça bu olsun demiyor armel, armhfya arm64neye ihtiyacım olduğu - $(arch)uyumsuz OS mimarileri dışarı ot için olduğu gibi sonuna kadar.
Thomas Ward

Eğer varsa, /proc/config.gz ayrıştırmada daha iyi olabilirsiniz.
umeboshi

Yanıtlar:


39
dpkg --print-architecture

Çalıştığı makinenin birincil mimarisini çıkartacaktır. Bu, armhf32-bit ARM Debian veya Ubuntu (veya bir türev) arm64çalıştıran bir makinede , 64-bit ARM çalıştıran bir makinede olacaktır.

Çalışan mimarinin, donanım mimarisinden veya hatta çekirdek mimarisinden farklı olabileceğini unutmayın. Bu çalıştırmak mümkündür i38664-bit Intel veya AMD CPU üzerinde Debian ve bunu çalıştırmak mümkün olduğuna inanıyoruz armhf, 64-bit ARM CPU üzerinde. Bir çekirdekte çoğunlukla i386ikili dosyalar (yani birincil mimarlıktır i386) olması bile mümkün amd64...


Doğru ama bu, betiğin paketleri için gereken mimariyi belirleyecektir. Bunu bugün test edeceğim, teşekkürler.
Thomas Ward

1
Bir android cihazda dpkg komutu yoktur. Bir android cihazın mimarisini tespit etmek için ne yapmalıyım?
Doktor

@ Mr.Hyde bu soru özellikle Debian ve Ubuntu'yu hedef aldı; Burada ya da android.stackexchange.com'da Android için cevap istiyorsanız, yeni bir soru sormanızı öneririm .
Stephen Kitt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.