je můj linux ARM 32 nebo 64 bit?

pod inteligencí vím, že se mohu podívat na výsledek uname -m a zjistit, jestli je můj OS 32 nebo 64 bitů, ale pod ARM to dává:

armv7l 

Odvodil jsem z

file /usr/bin/ls 

že jsem na 32bitovém operačním systému, ale jak to mohu vědět snadněji?

Komentáře

  • rameno 7 je 32 bitové . ARMv8-A architecture, announced in October 2011,[6] adds support for a 64-bit address space and 64-bit arithmetic. – wikipedia
  • @richard Hádal jsem, že ano, ale jak se tedy jmenuje 64bitová varianta?
  • I nemají ‚ přístup k počítači ARM, ale jaký je výstup uname -a a gcc -v? To by mohlo být užitečné.
  • Announced October 2011, ARMv8-A (often called ARMv8 although not all variants are 64-bit such as ARMv8-R) represents a fundamental change to the ARM architecture. It adds a 64-bit architecture, named "AArch64", and a new "A64" instruction set. AArch64 provides user-space compatibility with ARMv7-A ISA, the 32-bit architecture, therein referred to as "AArch32" and the old 32-bit instruction set, now named "A32" ARM announced their Cortex-A53 and Cortex-A57 cores on 30 October 2012. en.wikipedia.org/wiki/ARM_architecture#64.2 F32-bit_architecture
  • Arm byl poslední z 32bitových procesorů, který šel na 64bit (kromě těch, které zemřely). Většina šla na 64bit a poté zemřela kvůli špatnému marketingu – za předpokladu, že etter je dost. Intel x86 byl předposlední, ačkoli to byl AMD, který přidal 64 bitů.

Odpověď

Tady je několik gradací, protože můžete spustit 32bitový nebo smíšený operační systém na 64bitovém procesoru. Viz 64bitové jádro, ale všechny 32bitové spustitelné procesy ELF, jak to funguje? pro podrobnou diskusi (napsáno pro x86, ale většina z nich platí aktivovat také).

Model procesoru najdete v /proc/cpuinfo. Například:

$ cat /proc/cpuinfo Processor : ARMv7 Processor rev 10 (v7l) 

ARMv7 (a níže) je 32bitový. ARMv8 představuje 64bitovou sadu instrukcí.

Pokud chcete zjistit, zda váš systém podporuje 64bitové binární soubory, zkontrolujte architekturu jádra :

$ uname -m armv7l 

Na 64bitovém procesoru uvidíte řetězec začínající armv8 (nebo vyšší) ) pokud je uname samotný proces 32bitový, nebo aarch64 pokud je to 64bitový proces. (Viz také https://stackoverflow.com/questions/45125516/possible-values-for-uname-m )

Komentáře

  • Nezpochybňuji ‚ tvou odpověď, ale bohužel Android JE LINUX, takže předpokládám, že bude nějaký příkaz, NĚKDEJI, který to lokálně zobrazí a ne číst dokumentace na nějaké stránce
  • @THESorcerer Android používá jádro Linuxu, ale nejde o systém Linux. Nemá linuxové uživatelské přistávací nástroje (pouze velmi malá podmnožina). V systému Android si myslím, že 64bitová podpora je v základním OS konzistentní, takže cat /proc/$$/maps vám dá vědět, zda je systém 64bitový nebo 32bitový z příkazového řádku adb.
  • Věřím, že Raspberry Pi 3, což je ARMv8 (CRC, bez volitelného Crypto), bude hlásit armv7l i když je to ARMv8. Jsem si tedy ‚ jistý, že bude hlášeno nesprávné CPU.
  • @jww Pokud hlásí armv7l, znamená, že ‚ znovu používáte 32bitové jádro. Můžete spustit 32bitové jádro na 64bitovém procesoru. Pokud chcete informace o CPU, přečtěte si /proc/cpuinfo.
  • uname -m pouze vrátí “ aarch64 „. / proc / cpuinfo ‚ vždy neobsahuje název procesoru.

Odpovědět

Jak zdůrazňuje Richard, armv7 varianty jsou všechny 32bitové, takže neexistuje žádný nadbytečný štítek armv7-32 atd.

V systému Linux můžete snadno, i když ne zcela definitivně, zkontrolovat prostudováním běžného spustitelného souboru:

> which bash /bin/bash > file /bin/bash /bin/bash: ELF 32-bit LSB executable, ARM, version 1 (SYSV) ... 

Říkám „ne definitivně“, protože na 64bitovém systému je možné spustit 32bitové spustitelné soubory.

Zdá se, že v /proc nebo /sys; výstup z /proc/cpuinfo může může poskytnout několik významných vodítek. Pokud z nějakého důvodu potřebujete automatickou kontrolu, vytvoření tabulky namapované na pole „název modelu“ se jeví jako jedna potenciálně zdravá metoda (ostatní pole, včetně „modelu“, „rodiny cpu“ atd., Vypadají volitelně – ne) Na procesoru ARMv6 Broadcom 2708 se pro mě vůbec neobjeví.)

Komentáře

  • Takže armv7l má 32 bitů v pořádku?
  • @bakalolo Přečtěte si otázku a přijatou odpověď pomalu;)

Odpověď

Nainstalujte balíček „lshw“ .

# lshw ... description: Computer product: Raspberry Pi 3 Model B Rev 1.2 width: 32 bits ... 

odpověď

Zdá se, že většina způsobů, jak zjistit počet bitů, je nějak vězte, že arm7 = 32 bitů a zatímco to může být pravda, ale co

pi@rpi9:~ $ getconf LONG_BIT 32 

A pokud chcete hledat model CPU, běžně používám arch

root@rpi4:~# tr "\0" "\n" </proc/device-tree/model;arch Raspberry Pi Model B Rev 2 armv6l pi@rpi9:~ $ tr "\0" "\n" </proc/device-tree/model;arch Raspberry Pi 3 Model B Rev 1.2 armv7l 

Komentáře

  • getconf LONG_BIT je velmi přímočarý

Odpověď

Zkuste následující.

 // -*- compile-command: "gcc -Wall -o sizeof sizeof.c && ./sizeof" -*- #include <stdio.h> #include <limits.h> #define size(t) { t x; printf("%s:\t%3lu bit\n", #t, CHAR_BIT * sizeof x); } int main (int argc, char *argv[]) { size(char); size(short); size(int); size(long); size(void*); return 0; }  

Velikost adresy je void*.

Komentáře

Odpověď

Ne, je to 64bitový počítač. Je to Allwinner H8 , čarodějnice je dvojitý ARM-7. 8 jader, 64 bitů, powervr, sgx 544, při dvojnásobné rychlosti (700 MHz).

Takže ne, může to být 64 bitů. Jen OS může být 32.

Komentáře

  • kde jste zjistili, že OP ‚ používá Allwinner H8? Architektura je armv7l, což zjevně není 64bitový
  • ‚ je lepší demonstrovat způsob, jak najít požadované informace ze systému v místo použití třetího -stránkové informace z externích zdrojů. To je vhodnější jako komentář než odpověď (tedy všechny hlasy pro hlasování dolů).

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *