서버가 가상 또는 물리적인지 확인하기위한 터미널 명령 수 있음을

실행중인 사용자가 sudoers 그룹에 속할 필요가 없으며 보편적이며 추가 패키지를 설치할 필요가없는 터미널 명령을 찾고 있습니다. 지금까지 시스템이 시스템에 설치되어 있으면 다음을 사용할 수 있음을 발견했습니다.

$ hostnamectl status
   Static hostname: mint
         Icon name: computer-laptop
           Chassis: laptop
        Machine ID: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
           Boot ID: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  Operating System: Linux Mint LMDE
            Kernel: Linux 3.16.0-6-amd64

아이콘 이름 및 섀시에서 VM인지 물리적 시스템인지 확인할 수 있습니다. 그러나 lscpu특히 사용할 수있는 방법보다 더 보편적 인 방법 hostnamectl이므로 시스템을 필요로하지 않기 때문에 사용할 수 있는지 궁금합니다 . 내 이론은 CPU에 코어 당 하나의 스레드 만 있고 최소 및 최대 CPU 주파수를 나열하지 않으면 서버가 실제로 가상화되었음을 나타냅니다.

$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                8
On-line CPU(s) list:   0-7
Thread(s) per core:    2
Core(s) per socket:    4
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 60
Model name:            Intel(R) Core(TM) i7-4710HQ CPU @ 2.50GHz
Stepping:              3
CPU MHz:               2500.488
CPU max MHz:           3500.0000
CPU min MHz:           800.0000
BogoMIPS:              4988.18
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              6144K
NUMA node0 CPU(s):     0-7

CPU에 코어 당 하나의 스레드 만있는 경우 반드시 VM이라는 것을 의미하지는 않지만 모든 최신 CPU에는 코어 당 2 개의 스레드가 있어야하며 또한 부족 / 존재 여부를 고려할 수 있습니다 lscpu출력 에서 최소 및 최대 CPU 주파수 .



답변

주어진 조건에서 :

터미널 명령으로 실행중인 사용자가 sudoers 그룹에 속할 필요가 없으며 범용이어야하며 추가 패키지를 설치할 필요가 없습니다.

소유자가 의도적으로 OS가 VM이라는 사실을 숨기려고 시도하지 않은 수정되지 않은 VM에 대한 가장 간단한 방법은 다음과 같습니다.

cat /sys/class/dmi/id/product_name

더 많은 가능성 :

OP 저자 조건 외에는 다음과 같은 더 복잡한 접근 방식이 있습니다 . 시스템 호출없이 운영 체제 및 가상화 식별


답변

이것은 또한 systemd (어쨌든 요즘 보편적 임)가 필요하지만 systemd-detect-virt이것이 물리적 하드웨어에서 실행되는지 또는 가상 하드웨어에서 실행되는지를 알려주는 더 좋은 도구입니다.

당신은 한 번 봐 걸릴 수 있습니다 논리 에 의해 사용을 systemd-detect-virt, 당신은 실제로 몇 가지 별개의 가상화 기술을 감지하는 많은 장소에서 보이는 것을 알 수 있습니다 …

나는 lscpu출력 을 보는 것과 같은 순진한 것이 때때로 어떤 경우에는 효과가 있다고 생각하지만, 항상 효과가 없을 것이라고 생각합니다. 또한 많은 기술이 VM에서 코어 당 둘 이상의 스레드를 가질 수있게하고 가능하게하기 때문에 특정 기능만으로는 모든 종류의 안정적인 감지를 수행하기에 충분하지 않다고 생각합니다.