लिनक्स पर 32-बिट, 64-बिट सीपीयू ऑप-मोड


15

मैं उलझन में हूं। फेडोरा लिनक्स चलाना, lscpuपैदावार:

Architecture:            i686
CPU op-mode(s):          32-bit, 64-bit
...

लेकिन जब मैं 64-बिट प्रोग्राम (क्रोम) स्थापित करने की कोशिश करता हूं तो मुझे त्रुटि मिलती है जैसे:

पैकेज /Inx86_64.rpm में असंगत वास्तुकला x86_64 है। मान्य आर्किटेक्चर हैं ['i686', 'i586', 'i486', i386 ']

मैं क्रोम स्थापित करने में सक्षम होने में कम दिलचस्पी लेता हूं और इसमें अधिक दिलचस्पी क्यों lscpuकहता है कि मेरा सीपीयू 64-बिट मोड में चल सकता है; स्पष्ट रूप से इसका मतलब यह नहीं है कि मैं 64-बिट प्रोग्राम चला सकता हूं। क्या कोई स्पष्ट कर सकता है?


क्या आप इसका आउटपुट साझा कर सकते हैं cat /proc/cpu, मुझे लगता है कि यदि आप 64 या 32 बिट मोड में बूट करना चाहते हैं, तो आप बूटअप पर चयन कर सकते हैं
रज़ा

1
क्या आप 32-बिट OS या 64-बिट का उपयोग कर रहे हैं?
रेनन

@ सैलटन मैं एक /proc/cpuinfo। लेकिन इससे और अधिक उत्सुक सवाल उठते हैं। *_lmझंडे से संकेत मिलता है दोनों मेरे प्रोसेसर लंबे मोड का समर्थन है, लेकिन पता आकार हैं "36 बिट शारीरिक," ..
ज़क

जवाबों:


32

lscpuआपको बता रहा है कि आपका आर्किटेक्चर i686 (एक इंटेल 32-बिट सीपीयू) है, और यह कि आपका सीपीयू 32-बिट और 64-बिट ऑपरेटिंग मोड दोनों का समर्थन करता है। आप x64 निर्मित अनुप्रयोगों को स्थापित करने में सक्षम नहीं होंगे क्योंकि वे विशेष रूप से x64 आर्किटेक्चर के लिए बनाए गए हैं।

आपका विशेष CPU या तो i386 या i686 निर्मित पैकेज को संभाल सकता है। आपकी वास्तुकला और OS वरीयताओं को सत्यापित करने के कई तरीके हैं।

lscpu

जैसा कि आप पहले से जानते हैं, आप कमांड lscpu का उपयोग कर सकते हैं। यह आपको अच्छी तरह से बताता है कि आप सीपीयू में सक्षम हैं।

$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
CPU(s):                4
Thread(s) per core:    2
Core(s) per socket:    2
CPU socket(s):         1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 37
Stepping:              5
CPU MHz:               1199.000
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K
NUMA node0 CPU(s):     0-3

/ Proc / cpuinfo

यह वास्तव में कर्नेल द्वारा प्रदान किया गया डेटा है जिसे lscpuप्रदर्शित करने के लिए अधिकांश उपकरण जैसे कि उपयोग करते हैं। मैं इस आउटपुट को इस तथ्य में थोड़ा अच्छा मानता हूं कि यह आपको अपने विशेष सीपीयू के बारे में कुछ मॉडल नंबर की जानकारी दिखाता है। इसके अलावा यह आपको प्रत्येक कोर के लिए एक अनुभाग दिखाएगा जो आपके सीपीयू के पास हो सकता है।

यहाँ एक ही कोर के लिए आउटपुट है:

$ cat /proc/cpuinfo 
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 37
model name  : Intel(R) Core(TM) i5 CPU       M 560  @ 2.67GHz
stepping    : 5
cpu MHz     : 1466.000
cache size  : 3072 KB
physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 11
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt aes lahf_lm ida arat tpr_shadow vnmi flexpriority ept vpid
bogomips    : 5319.74
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

यहां बताया गया है कि कोर के लिए प्रत्येक खंड की पहली 3 पंक्तियां इस प्रकार हैं:

$ grep processor -A 3 /proc/cpuinfo
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 37
--
processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 37
--
processor   : 2
vendor_id   : GenuineIntel
cpu family  : 6
model       : 37
--
processor   : 3
vendor_id   : GenuineIntel
cpu family  : 6
model       : 37

आउटपुट से /proc/cpuinfoआपको यह भी पता चल सकता है कि आपका सीपीयू आपके द्वारा दिखाए जाने वाले विभिन्न झंडे के माध्यम से किस प्रकार की वास्तुकला प्रदान कर रहा है। उपरोक्त आदेश से इन पंक्तियों पर ध्यान दें:

$ grep /proc/cpuinfo | head -1
    flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt aes lahf_lm ida arat tpr_shadow vnmi flexpriority ept vpid

झंडे जो _lmआपको बताते हैं कि आपका प्रोसेसर "लंबी मोड" का समर्थन करता है। लंबी मोड 64-बिट के लिए एक और नाम है।

आपका नाम

इस आदेश का उपयोग यह निर्धारित करने के लिए किया जा सकता है कि समर्थन के लिए आपका कर्नेल किस प्लेटफ़ॉर्म पर बनाया गया था। उदाहरण के लिए:

64-बिट कर्नेल

$ uname -a
Linux grinchy 2.6.35.14-106.fc14.x86_64 #1 SMP Wed Nov 23 13:07:52 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

32-बिट कर्नेल

$ uname -a
Linux skinner.bubba.net 2.6.18-238.19.1.el5.centos.plus #1 SMP Mon Jul 18 10:07:01 EDT 2011 i686 i686 i386 GNU/Linux

स्विच , और [-m|--machine], का उपयोग करके इस आउटपुट को थोड़ा और परिष्कृत किया जा सकता है ।[-p|--processor][-i|--hardware-platform]

यहां वही उपरोक्त सिस्टम के लिए आउटपुट है।

64-बिट

$ uname -m; uname -p; uname -i
x86_64
x86_64
x86_64

32-बिट

$ uname -m; uname -p; uname -i
i686
i686
i386

नोट: यह भी नहीं है की एक छोटी सी फार्म संस्करण uname -m, आप एक अकेले खड़े आदेश के रूप में चला सकते हैं कि arch। यह ठीक उसी तरह लौटता है जैसे कि uname -m। आप कोरुटिल्स प्रलेखनarch में कमांड के बारे में अधिक पढ़ सकते हैं ।

अंश

आर्क मशीन के हार्डवेयर नाम को प्रिंट करता है, और 'uname -m' के बराबर है।

सेव करो

संभवतः आपके हार्डवेयर का विश्लेषण करने के लिए सबसे अच्छा उपकरण हो गया है hwinfo। यह पैकेज आपको बहुत कुछ दिखा सकता है, जिसे आप अपने किसी भी हार्डवेयर के बारे में जानना चाहते हैं, जो कि टर्मिनल से सही है। जब मुझे किसी सिस्टम के मदरबोर्ड पर चिप की कुछ जानकारी की आवश्यकता होगी या पीसीआई स्लॉट में बोर्ड के संशोधन को जानने की आवश्यकता होगी, तो यह मुझे दर्जनों बार बचाएगा।

आप इसे कंप्यूटर के विभिन्न उपतंत्रों के खिलाफ क्वेरी कर सकते हैं। हमारे मामले में हम cpuसबसिस्टम को देख रहे होंगे ।

$ hwinfo --cpu
01: None 00.0: 10103 CPU                                        
  [Created at cpu.301]
  Unique ID: rdCR.a2KaNXABdY4
  Hardware Class: cpu
  Arch: X86-64
  Vendor: "GenuineIntel"
  Model: 6.37.5 "Intel(R) Core(TM) i5 CPU       M 560  @ 2.67GHz"
  Features: fpu,vme,de,pse,tsc,msr,pae,mce,cx8,apic,sep,mtrr,pge,mca,cmov,pat,pse36,clflush,dts,acpi,mmx,fxsr,sse,sse2,ss,ht,tm,pbe,syscall,nx,rdtscp,lm,constant_tsc,arch_perfmon,pebs,bts,rep_good,xtopology,nonstop_tsc,aperfmperf,pni,pclmulqdq,dtes64,monitor,ds_cpl,vmx,smx,est,tm2,ssse3,cx16,xtpr,pdcm,sse4_1,sse4_2,popcnt,aes,lahf_lm,ida,arat,tpr_shadow,vnmi,flexpriority,ept,vpid
  Clock: 2666 MHz
  BogoMips: 5319.74
  Cache: 3072 kb
  Units/Processor: 16
  Config Status: cfg=new, avail=yes, need=no, active=unknown

फिर से, /proc/cpuinfoइस कमांड के समान ही आपको मल्टी-कोर सिस्टम में प्रत्येक व्यक्ति कोर का मेकअप दिखाता है। यहाँ एक कोर के प्रत्येक खंड से पहली पंक्ति है, बस आपको एक विचार देने के लिए।

$ hwinfo --cpu | grep CPU
01: None 00.0: 10103 CPU
  Model: 6.37.5 "Intel(R) Core(TM) i5 CPU       M 560  @ 2.67GHz"
02: None 01.0: 10103 CPU
  Model: 6.37.5 "Intel(R) Core(TM) i5 CPU       M 560  @ 2.67GHz"
03: None 02.0: 10103 CPU
  Model: 6.37.5 "Intel(R) Core(TM) i5 CPU       M 560  @ 2.67GHz"
04: None 03.0: 10103 CPU
  Model: 6.37.5 "Intel(R) Core(TM) i5 CPU       M 560  @ 2.67GHz"

getconf

यह शायद सबसे स्पष्ट तरीका है यह बताने का कि आपका सीपीयू ओएस को किस आर्किटेक्चर के साथ पेश कर रहा है। का उपयोग करना getconf, आपके सिस्टम चर LONG_BIT को क्वेरी करना। यह एक पर्यावरण चर नहीं है।

# 64-bit system
$ getconf LONG_BIT
64

# 32-bit system
$ getconf LONG_BIT
32

lshw

फिर भी क्षमताओं के समान एक और उपकरण hwinfo। आप अंतर्निहित हार्डवेयर के बारे में बहुत कुछ जानना चाहते हैं। उदाहरण के लिए:

# 64-bit Kernel
$ lshw -class cpu
  *-cpu                   
   description: CPU
   product: Intel(R) Core(TM) i5 CPU       M 560  @ 2.67GHz
   vendor: Intel Corp.
   physical id: 6
   bus info: cpu@0
   version: Intel(R) Core(TM) i5 CPU       M 560  @ 2.67GHz
   slot: None
   size: 1199MHz
   capacity: 1199MHz
   width: 64 bits
   clock: 133MHz
   capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp x86-64 constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt aes lahf_lm ida arat tpr_shadow vnmi flexpriority ept vpid cpufreq
   configuration: cores=2 enabledcores=2 threads=4


# 32-bit Kernel
$ lshw -class cpu
  *-cpu:0
   description: CPU
   product: Intel(R) Core(TM)2 CPU          4300  @ 1.80GHz
   vendor: Intel Corp.
   physical id: 400
   bus info: cpu@0
   version: 6.15.2
   serial: 0000-06F2-0000-0000-0000-0000
   slot: Microprocessor
   size: 1800MHz
   width: 64 bits
   clock: 800MHz
   capabilities: boot fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe x86-64 constant_tsc pni monitor ds_cpl est tm2 ssse3 cx16 xtpr lahf_lm
   configuration: id=1
 *-logicalcpu:0
      description: Logical CPU
      physical id: 1.1
      width: 64 bits
      capabilities: logical
 *-logicalcpu:1
      description: Logical CPU
      physical id: 1.2
      width: 64 bits
      capabilities: logical

CPU ऑप-मोड (s)?

कई आदेशों की रिपोर्ट है कि 32-बिट और 64-बिट मोड का समर्थन करने के रूप में 32-बिट सीपीयू क्या दिखता है। यह थोड़ा भ्रमित और भ्रामक हो सकता है, लेकिन यदि आप विशेष रूप से सीपीयू के इतिहास को समझते हैं, तो इंटेल आपको विशेष रूप से पता चलेगा कि उनके पास अपने उत्पादों के साथ गेम खेलने का इतिहास है जहां सीपीयू में एक निर्देश सेट हो सकता है जो 16-बिट्स का समर्थन करता है, लेकिन अधिक रैम को संबोधित कर सकते हैं कि 2 ^ 16।

यही बात इन सीपीयू के साथ भी चल रही है। ज्यादातर लोग जानते हैं कि एक 32-बिट CPU केवल 2 ^ 32 = 4GB RAM को संबोधित कर सकता है। लेकिन सीपीयू के संस्करण हैं जो अधिक संबोधित कर सकते हैं। ये CPU अक्सर प्रत्यय PAE - भौतिक पता एक्सटेंशन के साथ लिनक्स कर्नेल का उपयोग करते हैं । इस हार्डवेयर के साथ एक पीएई सक्षम कर्नेल का उपयोग करने से आप 32-बिट सिस्टम पर 64GB तक पता कर सकेंगे।

आप अच्छी तरह सोच सकते हैं कि मुझे 64-बिट वास्तुकला की आवश्यकता क्यों है? इन सीपीयू के साथ समस्या यह है कि एक एकल प्रक्रिया स्थान 2 ^ 32 तक सीमित है, इसलिए यदि आपके पास एक बड़ा सिमुलेशन या कम्प्यूटेशनल प्रोग्राम है जो रैम में 2 ^ 32 पते वाले स्थान से अधिक की आवश्यकता है, तो इससे आपको मदद नहीं मिलेगी। उस के साथ।

अधिक जानकारी के लिए P6 माइक्रोआर्किटेक्चर (i686) पर विकिपीडिया पृष्ठ पर एक नज़र डालें ।

टीएल; डीआर - तो क्या बिल्ली मेरे सीपीयू की वास्तुकला है?

सामान्य तौर पर यह भ्रामक हो सकता है क्योंकि ऊपर दिए गए कई आदेश और कार्यप्रणाली "वास्तुकला" शब्द का उपयोग कर रहे हैं। यदि आप रुचि रखते हैं कि अंतर्निहित OS 32-बिट है या 64-बिट इन आदेशों का उपयोग करें:

  • lscpu
  • getconf LONG_BIT
  • आपका नाम

यदि दूसरी ओर आप जानना चाहते हैं कि CPU का आर्किटेक्चर इन कमांड का उपयोग करता है:

  • / Proc / cpuinfo
  • सेव करो
  • lshw

विशेष रूप से आप उन क्षेत्रों की तलाश करना चाहते हैं जहां यह "चौड़ाई: 64" या "चौड़ाई: 32" जैसी चीजों को कहता है यदि आप किसी उपकरण का उपयोग कर रहे हैं lshw, या झंडे की तलाश करें:

  • lm: लॉन्ग मोड (x86-64: amd64, जिसे इंटेल 64 के रूप में भी जाना जाता है, यानी 64-बिट सक्षम)
  • lahf_lm: लम्बी मोड में LAHF / SAHF

इन 2 झंडों का प्रस्तुतिकरण आपको बताता है कि सीपीयू 64-बिट है। उनकी अनुपस्थिति आपको बताती है कि यह 32-बिट है।

सीपीयू झंडे पर अतिरिक्त जानकारी के लिए ये URL देखें।

संदर्भ

आदमी पृष्ठों

लेख:


क्या आप बता सकते हैं कि 32-बिट ओएस में 64-बिट "ऑप-मोड" क्यों हो सकता है? आपका जवाब है कि यह हो सकता है।
djangofan

यह सही है। मेरे अपडेट देखें, अगर यह समझ में आता है तो lmk करें।
स्लम sl

स्पष्ट रूप से एक महान जवाब। बहुत बहुत धन्यवाद! इंटेल खेल खेल
जक

तो बस स्पष्ट होना हालांकि, lscpuउस "वास्तुकला: i686" में कुछ भ्रामक है , वास्तव में एक 32-बिट ओएस चलाने के लिए संदर्भित करता है।
जक

1
इस जानकारी के लिए Googling में इस विशेष विषय को लेकर बहुत भ्रम था। यह प्रश्न बहुत सी एसई साइटों पर दिखाई देता है। उन साइटों पर कई उत्तर इस विषय के बारे में भी भ्रमित थे। तो यह केवल ओपी के सवाल का जवाब देने के लिए नहीं, बल्कि विषय के लिए सभी समावेशी उत्तर देने का प्रयास करने का प्रयास था।
स्लम sl

4

यदि आपका कर्नेल एक 32 बिट लिनक्स कर्नेल है, तो आप 64 बिट प्रोग्राम नहीं चला पाएंगे, भले ही आपका प्रोसेसर इसका समर्थन करता हो।

64 बिट चलाने के लिए 64 बिट कर्नेल (और पूरे ओएस का कोर्स) स्थापित करें


यदि आपका सीपीयू VT-x / AMD का समर्थन करता है - तो आप अभी भी वर्चुअलाइजेशन सॉफ़्टवेयर जैसे वर्चुअलबॉक्स / WMware का उपयोग करके 32 OS के तहत 64 बिट प्रोग्राम का उपयोग कर सकते हैं।
m3nda

1

पूर्णता के लिए: चूंकि अधिकांश 64-बिट आर्किटेक्चर पर 32-बिट कोड चलाना संभव है, कर्नेल स्थान और उपयोगकर्ता स्थान दोनों में, किसी को यह नहीं भूलना चाहिए कि वास्तव में 4 संभावित संयोजन हैं:

  • 32-बिट कर्नेल पर 32-बिट उपयोगकर्ता स्थान
  • 64-बिट कर्नेल पर 64-बिट उपयोगकर्ता स्थान
  • 64-बिट कर्नेल पर 32-बिट उपयोगकर्ता स्थान
  • 64-बिट कर्नेल पर दोनों 64-बिट और 32-बिट उपयोगकर्ता स्थान

unameकर्नेल प्रकार निर्धारित करने का सामान्य तरीका है। उपयोगकर्ता-स्थान के लिए, fileनिष्पादन योग्य पहचानने में काफी अच्छा है: file $SHELLया file /sbin/initसुविधाजनक मुहावरे हैं। बस दोनों का अस्तित्व /lib/*.so और /lib64/*.so आमतौर पर अच्छा संकेत है, कि सिस्टम दोनों उपयोगकर्ता अंतरिक्ष वेरिएंट को स्पोर्ट करता है।


वास्तव में 5 हैं। पहला संयोजन "... 32-बिट हार्डवेयर पर" या "... 64-बिट हार्डवेयर पर" हो सकता है। शेष 3 में 64-बिट हार्डवेयर की आवश्यकता होती है।
बेन वोइग्ट

हां, मैंने किसी तरह 64-बिट हार्डवेयर को लगभग 64-बिट आर्किटेक्चर पर लिखकर माना है ।
पीटर

0

यह जानने के लिए कि क्या स्थापित उबंटू 32 या 64 बिट्स का है:

a) गेटकॉन्फ़ LONG_BIT

बी) अनम-एम

यदि यह i686 या i386 दिखाता है तो इसका मतलब है 32 बिट्स। यदि यह x86_64 दिखाता है तो इसका मतलब 64 बिट्स है।

यदि CPU 32 बिट्स का है तो Ubuntu 32 बिट्स का होना चाहिए। यदि CPU 64 बिट्स का है तो यह 64 या 32 बिट्स में काम कर सकता है। तो हम चुन सकते हैं: उबंटू 32 बिट्स या 64 बिट्स का हो सकता है।

यह जानने के लिए कि सीपीयू 32 या 64 बिट्स का है:

a) grep -w lm / proc / cpuinfo

यदि हम देखते हैं कि लाल रंग 64 बिट्स में है। नहीं तो 32 बिट्स का है।

b) सुडो lshw | grep "विवरण: CPU" -12 | grep चौड़ाई

यह स्पष्ट रूप से कहता है कि हम क्या जानना चाहते हैं।

दोनों infos के लिए एक कमांड:

lscpu

हमें आउटपुट की पहली 2 पंक्तियों पर एक नज़र डालने की आवश्यकता है: "आर्किटेक्चर" इंस्टॉल किए गए लिनक्स संस्करण के बारे में सूचित करता है: "i686, 32 बिट्स में से एक का प्रतिनिधित्व करता है, जबकि" x86_64 ″ 64 बिट्स के लिए खड़ा है। "सीपीयू ऑप-मोड (एस)" ​​सीपीयू के बारे में सूचित करता है। "32-बिट" 32 बिट्स में से एक का प्रतिनिधित्व करता है, जबकि "32-बिट, 64-बिट" या "64-बिट" एक 64 बिट्स के लिए खड़ा है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.