Saya mencoba menulis skrip yang akan menentukan tindakan berdasarkan arsitektur mesin. Saya sudah menggunakan uname -m
untuk mengumpulkan garis arsitektur, namun saya tidak tahu berapa banyak arsitektur ARM ada, aku juga tidak tahu apakah seseorang armhf
, armel
atau arm64
.
Karena ini diperlukan untuk skrip ini untuk menentukan apakah bagian skrip dapat dijalankan atau tidak, saya mencoba menemukan cara sederhana untuk menentukan apakah arsitekturnya adalah armhf
, armel
atau arm64
. Apakah ada satu-kapal atau perintah sederhana yang dapat digunakan untuk output baik armhf
, armel
atau arm64
?
Script ini secara khusus ditulis untuk sistem Debian dan Ubuntu, dan saya menandai hal ini dengan mengingat hal ini (berhenti secara otomatis jika Anda tidak berada di salah satu distro itu, tetapi ini dapat diterapkan dengan cara yang jauh lebih luas juga jika perintah ada)
EDIT: Baru-baru ini mengetahui bahwa armel sudah mati, dan pembuat perangkat lunak arm64 (berbasis PPA atau virtual) bukan yang paling stabil. Jadi saya memiliki pencarian pencarian wildcard arm*
dan asumsi armhf, tetapi masih perlu untuk mencari tahu satu liner yang mengembalikan salah satu dari tiga - apakah itu perintah Ubuntu / Debian atau panggilan kernel atau sesuatu.
sumber
case $(arch) in ; armf)... ;; armel)... ;; arm64)... ;; *) exit ;; esac
apakah kamu melihat sesuatu seperti ini?i386
,i686
, danx86_64
kasus berdasarkanuname -m
, tapi tidak untukarm??
... atau setidaknya, tidak ada yang mengidentifikasiarmhf
,armel
atauarm64
) .uname -m
keluarkan papan lengan khusus -armv7l
misalnya. Ini tidak secara eksplisit mengatakan apakah ituarmel
,armhf
atauarm64
- yang adalah apa yang saya butuhkan$(arch)
untuk berakhir sebagai untuk menyingkirkan arsitektur OS tidak sesuai dengan.Jawaban:
akan menampilkan arsitektur utama dari mesin yang digunakan. Ini akan berada
armhf
pada mesin yang menjalankan ARM Debian atau Ubuntu 32-bit (atau turunan),arm64
pada mesin yang menjalankan ARM 64-bit.Perhatikan bahwa arsitektur yang berjalan mungkin berbeda dari arsitektur perangkat keras atau bahkan arsitektur kernel. Dimungkinkan untuk menjalankan
i386
Debian pada Intel 64-bit atau CPU AMD, dan saya percaya itu mungkin untuk dijalankanarmhf
pada CPU ARM 64-bit. Bahkan mungkin untuk memiliki sebagian besari386
binari (jadi arsitektur utamanyai386
) padaamd64
kernel ...sumber