Linux에서 32 비트, 64 비트 CPU op 모드


15

혼란 스러워요. Fedora Linux를 실행 lscpu하면 다음 과 같은 결과 가 나타납니다.

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

그러나 64 비트 프로그램 (Chrome)을 설치하려고하면 다음과 같은 오류가 발생합니다.

패키지 /....x86_64.rpm에 호환되지 않는 아키텍처 x86_64가 있습니다. 유효한 아키텍처는 [ 'i686', 'i586', 'i486', i386 ']입니다.

Chrome을 설치하는 데 관심이없고 그 이유에 더 관심이 있습니다. lscpu CPU가 64 비트 모드로 실행될 수 있습니다. 분명히 이것이 64 비트 프로그램을 실행할 수 있음을 의미하지는 않습니다. 누구나 명확히 할 수 있습니까?


당신의 출력을 공유 할 수 있습니다 cat /proc/cpu, 당신이 64 또는 32 비트 모드로 부팅하려는 경우 선택할 수있는 부팅에서 생각
라자

1
32 비트 OS 또는 64 비트 OS를 사용하고 있습니까?
Renan

@Salton 나는있다 /proc/cpuinfo. 그러나 이것은 더 호기심 많은 질문을 제기합니다. *_lm.. ", 36 비트 실제"플래그는 모두 내 프로세서가 긴 모드를 지원 나타냅니다 만, 주소 크기는

답변:


32

lscpu아키텍처는 i686 (Intel 32 비트 CPU)이며 CPU는 32 비트 및 64 비트 작동 모드를 모두 지원한다고 알려줍니다. x64 빌드 응용 프로그램은 x64 아키텍처 용으로 특별히 제작되었으므로 설치할 수 없습니다.

특정 CPU는 i386 또는 i686 빌드 패키지를 처리 ​​할 수 ​​있습니다. 아키텍처 및 OS 기본 설정을 확인하는 방법에는 여러 가지가 있습니다.

lscpu

이미 알고 있듯이 lscpu 명령을 사용할 수 있습니다. CPU가 할 수있는 것에 대한 대략적인 아이디어를 제공하는 데 효과적입니다.

$ 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 는 표시하는 데 사용됩니다. 특정 CPU에 대한 모델 번호 정보를 표시한다는 사실 에서이 출력이 약간 훌륭하다는 것을 알았습니다. 또한 CPU에있을 수있는 각 코어에 대한 섹션이 표시됩니다.

단일 코어에 대한 출력은 다음과 같습니다.

$ 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은 또한 CPU가 보여주는 다양한 플래그를 통해 CPU가 제공하는 아키텍처 유형을 알려줍니다. 위 명령에서 다음 줄을 확인하십시오.

$ 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프로세서가 "긴 모드"를 지원함을 나타냅니다. Long 모드는 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. coreutils 설명서arch 에서 명령에 대한 자세한 내용을 읽을 수 있습니다 .

발췌

arch는 기계 하드웨어 이름을 인쇄하며 'uname -m'과 같습니다.

hwinfo

아마도 당신의 하드웨어를 분석하기위한 가장 좋은 도구가되었을 것 hwinfo입니다. 이 패키지는 터미널에서 하드웨어에 대해 알고 싶거나 필요한 모든 것을 보여줍니다. 시스템 마더 보드의 칩에 대한 정보가 필요하거나 PCI 슬롯의 보드 개정판을 알아야 할 때 수십 번 절약됩니다.

컴퓨터의 다른 하위 시스템에 대해 쿼리 할 수 ​​있습니다. 이 경우 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

이것은 아마도 CPU가 OS에 제공하는 아키텍처를 알려주는 가장 확실한 방법 일 것입니다. 를 사용 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 작동 모드?

일부 명령은 32 비트 및 64 비트 모드를 지원하는 것으로 32 비트 CPU 인 것으로보고합니다. 이것은 약간 혼란스럽고 오해의 소지가 있지만, CPU의 역사를 이해한다면, 특히 인텔은 CPU가 16 비트를 지원하는 명령어 세트를 가지고있을 수있는 제품으로 게임을 한 역사를 가지고 있다는 것을 알게 될 것입니다. 그러나 2 ^ 16보다 많은 RAM을 처리 할 수 ​​있습니다.

이 CPU들도 마찬가지입니다. 대부분의 사람들은 32 비트 CPU가 2 ^ 32 = 4GB의 RAM 만 처리 할 수 ​​있다는 것을 알고 있습니다. 그러나 더 많은 주소를 지정할 수있는 CPU 버전이 있습니다. 이러한 CPU는 종종 PAE-Physical Address Extension 접미사가있는 Linux 커널을 사용합니다 . PAE 지원 커널을이 하드웨어와 함께 사용하면 32 비트 시스템에서 최대 64GB를 처리 할 수 ​​있습니다.

그렇다면 64 비트 아키텍처가 필요한 이유는 무엇입니까? 이 CPU의 문제점은 단일 프로세스 공간이 2 ^ 32로 제한되어 있기 때문에 RAM에 2 ^ 32 이상의 주소 지정 가능 공간이 필요한 대규모 시뮬레이션 또는 계산 프로그램이 있으면 도움이되지 않은 것입니다 그것으로.

자세한 내용 은 P6 마이크로 아키텍처 (i686) 의 Wikipedia 페이지 를 참조하십시오.

TL; DR-CPU 아키텍처는 무엇입니까?

위의 많은 명령과 방법론에서 "아키텍처"라는 용어를 느슨하게 사용하기 때문에 일반적으로 혼동 될 수 있습니다. 기본 OS가 32 비트인지 64 비트인지에 관심이있는 경우 다음 명령을 사용하십시오.

  • lscpu
  • getconf LONG_BIT
  • 언놈

반면에 CPU 아키텍처를 알고 싶다면 다음 명령을 사용하십시오.

  • / proc / cpuinfo
  • hwinfo
  • lshw

특히와 같은 도구를 사용하는 경우 "width : 64"또는 "width : 32"와 같은 필드를 찾 lshw거나 플래그를 찾습니다.

  • lm: Long Mode (x86-64 : amd64, Intel 64라고도 함, 즉 64 비트 가능)
  • lahf_lm: 롱 모드의 LAHF / SAHF

이 2 개의 플래그는 CPU가 64 비트임을 나타냅니다. 그들의 부재는 그것이 32 비트라는 것을 알려줍니다.

CPU 플래그에 대한 추가 정보는이 URL을 참조하십시오.

참고 문헌

매뉴얼 페이지

조항:


왜 32 비트 OS가 64 비트 "op-mode"를 가질 수 있는지 설명 할 수 있습니까? 당신의 대답은 가능하다는 것을 암시합니다.
djangofan 2016 년

맞습니다. 내 업데이트를 참조하십시오.
slm

분명히 좋은 대답입니다. 정말 고마워! 인텔 게임
Zak

그러나 lscpu"아키텍처 : i686"은 실제로 32 비트 OS를 실행한다는 의미에서 다소 오해의 소지가 있습니다.
Zak

1
이 정보에 대한 인터넷 검색은이 특정 주제에 대해 많은 혼란이있었습니다. 이 질문은 많은 SE 사이트에 나타납니다. 이 사이트들에 대한 많은 답변들이이 주제에 대해 혼란 스러웠습니다. 따라서 이것은 OP의 질문에 대답하는 것이 아니라 주제에 대한 포괄적 인 답변을 제공하려고 시도했습니다.
slm

4

커널이 32 비트 Linux 커널 인 경우 프로세서에서 지원하더라도 64 비트 프로그램을 실행할 수 없습니다.

64 비트 커널 (및 전체 OS)을 설치하여 64 비트를 실행하십시오.


CPU가 VT-x / AMD-를 지원하는 경우 Virtualbox / WMware와 같은 가상화 소프트웨어를 사용하여 32 OS에서 64 비트 프로그램을 계속 사용할 수 있습니다.
m3nda

1

완전성 : 대부분의 64 비트 아키텍처에서는 커널 공간과 사용자 공간 모두에서 32 비트 코드를 실행할 수 있으므로 실제로 4 가지 가능한 조합이 있다는 것을 잊지 말아야합니다.

  • 32 비트 커널의 32 비트 사용자 공간
  • 64 비트 커널의 64 비트 사용자 공간
  • 64 비트 커널의 32 비트 사용자 공간
  • 모두 64 비트 커널이 64 비트 및 32 비트 사용자 공간 (S)

uname커널 변형을 결정하는 일반적인 방법입니다. 사용자 공간의 경우 file실행 파일을 인식하는 데 매우 능숙합니다. file $SHELL또는 file /sbin/init편리한 관용구입니다. 둘 다 의 존재 /lib/*.so /lib64/*.so 일반적으로 시스템이 두 사용자 공간 변형을 모두 가지고 있음을 나타내는 좋은 지표입니다.


실제로는 5가 있습니다. 첫 번째 조합은 "... 32 비트 하드웨어에서"또는 "... 64 비트 하드웨어에서"일 수 있습니다. 나머지 3 개에는 64 비트 하드웨어가 필요합니다.
Ben Voigt

. 대부분의 64 비트 아키텍처를 작성하여 64 비트 하드웨어를 암시 적으로 고려했습니다 .
peterph

0

설치된 우분투가 32 비트인지 64 비트인지 확인하려면 :

a) getconf LONG_BIT

b) uname -m

i686 또는 i386을 표시하면 32 비트를 의미합니다. x86_64로 표시되면 64 비트를 의미합니다.

CPU가 32 비트 인 경우 Ubuntu는 32 비트 여야합니다. CPU가 64 비트이면 64 또는 32 비트로 작동 할 수 있습니다. 우분투는 32 비트 또는 64 비트 일 수 있습니다.

CPU가 32 비트인지 64 비트인지 확인하려면 다음을 수행하십시오.

a) grep -w lm / proc / cpuinfo

빨간색으로 표시된 lm은 64 비트입니다. 그렇지 않으면 32 비트입니다.

b) sudo lshw | grep "설명 : CPU"-A 12 | 그렙 너비

우리가 알고 싶은 것을 명확하게 말합니다.

두 정보 모두에 대한 명령 :

lscpu

“Architecture”는 설치된 Linux 버전에 대해 알려줍니다.“i686”은 32 비트 중 하나를 나타내고“x86_64”는 64 비트 1을 나타냅니다. "CPU op-mode (s)"는 CPU에 대해 알려줍니다. "32 비트"는 32 비트 중 하나를 나타내고 "32 비트, 64 비트"또는 "64 비트"는 64 비트 1을 나타냅니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.