Hledám terminálový příkaz, který nevyžaduje, aby provádějící uživatel byl ve skupině sudoers a také aby byl univerzální a nevyžadoval instalaci dalších balíčků. Zatím jsem zjistil, že pokud má systém nainstalován systemd, mohu použít:
$ 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
a pod názvem ikony a podvozku vidím, zda je to VM nebo fyzický stroj. Ale zajímalo by mě, jestli mohu použít lscpu
, zejména proto, že je to univerzálnější metoda než hostnamectl
a nevyžaduje systemd. Moje teorie je, že pokud má CPU pouze jedno vlákno na jádro a také není uvedena minimální a maximální frekvence CPU, mělo by to znamenat, že server je skutečně virtualizovaný.
$ 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
Vím, že pokud má CPU pouze jedno vlákno na jádro, nemusí to nutně znamenat, že je to VM, ale pak by všechny moderní CPU měly mít 2 vlákna na jádro a navíc mohu vzít v úvahu také nedostatek/přítomnost minimální a maximální frekvence CPU v lscpu
výstup.
Přijatá odpověď:
Za daných podmínek:
terminálový příkaz, který nevyžaduje, aby spouštějící uživatel byl ve skupině sudoers a také aby byl univerzální a nevyžadoval instalaci dalších balíčků.
zřejmá nejjednodušší metoda pro neupravené virtuální počítače, u kterých se vlastníci záměrně nepokoušeli skrýt skutečnost, že operační systém je virtuální počítač, je
cat /sys/class/dmi/id/product_name
Další možnosti:
- Jak zjistit virtualizaci
- 16 metod, jak zkontrolovat, zda je systém Linux fyzický nebo virtuální stroj
Mimo podmínky dané autorem OP existují složitější přístupy, jako je tento:Kde to jsem? Identifikace operačního systému a virtualizace bez systémových volání