Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Laitealue => Aiheen aloitti: Rommel2 - 08.08.12 - klo:20.48
-
Terve,
Yritän löytää varman tavan selvittää tietokoneen arkkitehtuurin. Kyse on siis laitteen arkkitehtuurista eikä käyttöjärjestelmän arkkitehtuurista (32/64-bit). Tavoite on löytää yksi komento, jolla voi selvittää mitä arkkitehtuuria käyttäjän kone on seuraavista neljästä arkkitehtuurista:
x86
x86-64/amd64
MIPS
ARM
Kysymyksiä:
1. Onko jompikumpi seuraavista varma tapa selvittää koneen arkkitehtuuri?
lshw -C cpu | grep capabilities
tai
cat /proc/cpuinfo | grep flags
2. Millaisia lippuja näistä komennoista voi saada kullekin arkkitehtuurille?
lshw -C cpu | grep capabilities
x86
x86-64/amd64 x86-64
MIPS
ARM
cat /proc/cpuinfo | grep flags
x86
x86-64/amd64 lm
MIPS
ARM
Tavoitteeni on kirjoittaa aiheesta ohjeet h-node.org (http://www.h-node.org) -sivustolle, joka on laitetietokanta, joka kerää tietoa laitteista jotka toimivat (tai eivät toimi) vain vapailla ohjelmilla (ajurit, firmware etc.).
-
eikö pelkkä sudo lshw listaa kaiken
-
2. Millaisia lippuja näistä komennoista voi saada kullekin arkkitehtuurille?
Näistä pääsee asian jäljille mutta teettää varmaan hieman pähkäilyä miten edetä:
http://unix.stackexchange.com/questions/43539/what-do-the-flags-in-proc-cpuinfo-mean (http://unix.stackexchange.com/questions/43539/what-do-the-flags-in-proc-cpuinfo-mean)
http://en.wikipedia.org/wiki/CPUID#EAX.3D1%3a_Processor_Info_and_Feature_Bits (http://en.wikipedia.org/wiki/CPUID#EAX.3D1%3a_Processor_Info_and_Feature_Bits)
http://lxr.linux.no/linux+%2a/arch/x86/include/asm/cpufeature.h (http://lxr.linux.no/linux+%2a/arch/x86/include/asm/cpufeature.h)
Pelkästään Intel: ä koskeva 595 sivuinen dokumentti "Intel® Advanced Vector Extensions
Programming Reference":
http://software.intel.com/file/36945 (http://software.intel.com/file/36945)
Lyhyt ohjelmallinen tapa tehdä tuo ympäristön tunnistus kiinnostaa kyllä itseänikin. Tuolla saat pelkät liput muuttujaan "flags":
#!/bin/bash
a=$(grep "flags" /proc/cpuinfo)
flags=$(echo ${a##*:})
-
En saa selkoa MIP:istä ja ARM:stä, mutta luulen että olen löytänyt nopean ja varman tavan selvittää ero x86:n ja x86-64:n välillä:
uname -m
Jos saadaan i386, niin arkkitehtuuri on x86.
Jos saadaan i686, niin ajetaan seuraava komento:
cat /proc/cpuinfo | grep lm
Jos lm löytyy, niin arkkitehtuuri on x86-64.
Jos ei, niin se on x86
Onko tämä 100% luotettava tapa? Mitä jos käyttäjällä onkin MIPS tai ARM? Miten ne vaikuttavat ylläolevaan?
-
En saa selkoa MIP:istä ja ARM:stä, mutta luulen että olen löytänyt nopean ja varman tavan selvittää ero x86:n ja x86-64:n välillä:
uname -m
Jos saadaan i386, niin arkkitehtuuri on x86.
Luulisin, että tuolla ei voi selvittää onko kone varmasti vain 32-bittinen. lm-lippu kyllä kertoo että kone on varmasti 64-bittinen.
Mitä jos käyttäjällä onkin MIPS tai ARM? Miten ne vaikuttavat ylläolevaan?
Kännykästäni:
~ $ uname -m
armv7l
~ $ cat /proc/cpuinfo |grep flags
~ $ cat /proc/cpuinfo |grep -i features
Features : swp half thumb fastmult vfp edsp neon vfpv3
~ $
-
Se "uname -m" kertoo vain käynnissolevan käyttöjärjestelmän bittisyyden. Jos ajat 64-bittisessä koneessa vuoroon 64 tai 32 bittistä Ubuntua niin tuolla näkee kumpi on käynnissä. Jotkut dokumentit kertovat väärin tuosta komennosta että se näytäisi koneen bittisyyden.
-
cat /proc/cpuinfo | grep LIPPU
Onko olemassa LIPPUa, josta selviää että kyseessä on varmasti x86 arkkitehtuuri?