Einführung
In diesem Lab lernen Sie, wie Sie feststellen können, ob Ihre Linux-Umgebung auf einer virtuellen Maschine läuft. Wir werden drei verschiedene Methoden untersuchen, um dies zu erreichen: die Verwendung des Befehls dmidecode, um Systeminformationen zu überprüfen, die Nutzung des Tools virt-what, das speziell für die Erkennung von Virtualisierungen entwickelt wurde, und die Prüfung der CPU-Flags in der Datei /proc/cpuinfo. Am Ende dieses Labs verfügen Sie über praktische Techniken, um virtualisierte Umgebungen in Linux zu identifizieren.
Systeminformationen mit dmidecode prüfen
In diesem Schritt lernen Sie, wie Sie den Befehl dmidecode verwenden, um detaillierte Informationen über die Hardware Ihres Systems abzurufen. dmidecode liest Daten aus der DMI/SMBIOS (Desktop Management Interface / System Management BIOS)-Tabelle, die Beschreibungen der Systemkomponenten enthält.
Dieser Befehl ist äußerst nützlich, um die Spezifikationen der Hardware zu verstehen, auf der Ihr Linux-System läuft, wie z. B. die Motherboard, die CPU, den Arbeitsspeicher und vieles mehr.
Da der Zugriff auf die DMI-Tabelle Root-Rechte erfordert, müssen Sie sudo zusammen mit dmidecode verwenden.
Öffnen Sie Ihr Terminal, wenn es noch nicht geöffnet ist. Denken Sie daran, dass Sie das Symbol für das Xfce Terminal auf der linken Seite Ihres Desktops finden können.
Geben Sie jetzt den folgenden Befehl ein und drücken Sie die Eingabetaste:
sudo dmidecode
Dieser Befehl gibt eine große Menge an Informationen über die Hardware Ihres Systems aus. Scrollen Sie durch die Ausgabe, um die verschiedenen Abschnitte wie "BIOS Information", "System Information", "Base Board Information", "Processor Information", "Memory Device" usw. zu sehen.
Die Ausgabe könnte in etwa so aussehen (Teile der Ausgabe wurden aus Gründen der Kürze weggelassen):
## dmidecode 3.3
Getting SMBIOS data from sysfs.
SMBIOS 3.3.0 present.
Handle 0x0000, DMI type 0, 26 bytes
BIOS Information
Vendor: SeaBIOS
Version: 1.16.0-1.fc36
Release Date: 07/07/2022
Address: 0xE0000
Runtime Size: 128 kB
ROM Size: 64 kB
Characteristics:
PCI is supported
BIOS is upgradeable
BIOS shadowing is allowed
Boot from CD is supported
Selectable boot is supported
BIOS ROM is socketed
EDD is supported
5.25" / 1.2 MB floppy services are supported (int 13h)
3.5" / 720 kB floppy services are supported (int 13h)
3.5" / 1.44 MB floppy services are supported (int 13h)
8042 keyboard services are supported (int 9h)
CGA/mono video services are supported (int 10h)
AT/XT compatible keyboard services are supported (int 16h)
Printer services are supported (int 17h)
CGA/mono video is supported (int 10h)
ACPI is supported
USB legacy is supported
BIOS boot specification is supported
Targeted content distribution is supported
UEFI is supported
BIOS Revision: 1.16
Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: QEMU
ProductName: Standard PC (Q35 + ICH9, 2009)
Version: pc-q35-7.0
Serial Number: <filtered>
UUID: <filtered>
Wake-up Type: Power Switch
SKU Number: <filtered>
Family: Virtual Machine
Handle 0x0002, DMI type 2, 17 bytes
Base Board Information
Manufacturer: QEMU
ProductName: Standard PC (Q35 + ICH9, 2009)
Version: pc-q35-7.0
Serial Number: <filtered>
Asset Tag: <filtered>
Features:
Board is a hosting board
Board is replaceable
Location In Chassis: <filtered>
Chassis Handle: 0x0003
Type: Motherboard
Contained Object Handles: 0
... (output continues)
Sie können die Ausgabe auch filtern, um Informationen über einen bestimmten Hardwaretyp anzuzeigen, indem Sie die Option -t gefolgt von der Typnummer oder dem Schlüsselwort verwenden. Beispielsweise können Sie den folgenden Befehl verwenden, um nur die CPU-Informationen anzuzeigen:
sudo dmidecode -t processor
Oder um Informationen über die Arbeitsspeichergeräte anzuzeigen:
sudo dmidecode -t memory
Experimentieren Sie mit verschiedenen Typen wie bios, system, baseboard, chassis usw., um die spezifischen Details für jede Komponente zu sehen.
Die Verwendung von dmidecode ist eine grundlegende Fähigkeit für Systemadministratoren und alle, die Hardwareprobleme beheben müssen oder einfach die zugrunde liegende Systemkonfiguration verstehen möchten.
Klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.
Virtualisierung mit virt-what erkennen
In diesem Schritt lernen Sie, wie Sie feststellen können, ob Ihr Linux-System in einer virtuellen Maschine oder auf physischer Hardware (Bare Metal) läuft. Dies ist oft wichtig für die Systemkonfiguration, die Leistungseinstellung oder die Lizenzierung.
Wir verwenden den Befehl virt-what, der speziell für diesen Zweck entwickelt wurde. Er sucht nach Anzeichen von Virtualisierung und gibt die Namen der gefundenen Hypervisor aus.
Zunächst müssen Sie das Paket virt-what installieren. Verwenden Sie apt, wie Sie es im vorherigen Lab für htop getan haben.
Öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus, um virt-what zu installieren:
sudo apt update
sudo apt install virt-what -y
Das -y-Flag beantwortet automatisch alle Abfragen während der Installation mit "ja", wodurch der Prozess nicht-interaktiv wird.
Sobald die Installation abgeschlossen ist, können Sie den Befehl virt-what ausführen:
virt-what
Die Ausgabe dieses Befehls sagt Ihnen, ob das System virtualisiert ist und, falls ja, welche Virtualisierungstechnologie verwendet wird.
In der LabEx-Umgebung, die in einer virtualisierten Umgebung läuft, sollten Sie eine Ausgabe ähnlich der folgenden sehen:
qemu
kvm
Dies zeigt an, dass das System in einer QEMU/KVM-virtuellen Maschine läuft. Wenn das System auf physischer Hardware läuft, würde virt-what normalerweise keine Ausgabe liefern.
Das Verständnis, ob Ihr System virtualisiert ist, ist eine entscheidende Information für viele Systemadministrationsaufgaben. virt-what bietet eine einfache und zuverlässige Möglichkeit, diese Information zu erhalten.
Klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.
CPU-Flags in /proc/cpuinfo untersuchen
In diesem Schritt werden Sie die Datei /proc/cpuinfo erkunden. Dies ist eine virtuelle Datei, die vom Linux-Kernel bereitgestellt wird und Informationen über die CPU(s) in Ihrem System enthält. Diese Datei ist eine ausgezeichnete Quelle für Details über Ihren Prozessor, einschließlich seines Modells, seiner Geschwindigkeit, der Cache-Größe und der unterstützten Funktionen (Flags).
Das /proc-Dateisystem ist ein Pseudo-Dateisystem, das eine Schnittstelle zu Kernel-Datenstrukturen bietet. Dateien innerhalb von /proc werden nicht auf der Festplatte gespeichert, sondern werden vom Kernel dynamisch erzeugt, wenn Sie auf sie zugreifen.
Um den Inhalt von /proc/cpuinfo anzuzeigen, können Sie ein Befehlszeilen-Programm wie cat oder less verwenden. cat gibt den gesamten Inhalt im Terminal aus, während less es Ihnen ermöglicht, den Inhalt seitenweise zu scrollen. Da /proc/cpuinfo recht lang sein kann, ist less oft bequemer.
Öffnen Sie Ihr Terminal und geben Sie den folgenden Befehl ein, um die CPU-Informationen mit cat anzuzeigen:
cat /proc/cpuinfo
Sie werden detaillierte Informationen für jeden CPU-Kern in Ihrem System sehen. Die Ausgabe wird Zeilen wie processor, vendor_id, model name, cpu MHz, cache size und flags enthalten.
Hier ist ein Beispiel für das, was Sie sehen könnten (Teile der Ausgabe wurden aus Gründen der Kürze weggelassen):
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz
stepping : 13
microcode : 0xffffffff
cpu MHz : 2904.000
cache size : 16384 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves arch_capabilities
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds mmio_stale_data retbleed
bogomips : 5808.00
clflush size : 64
cache_alignment : 64
address sizes : 43 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz
stepping : 13
microcode : 0xffffffff
cpu MHz : 2904.000
cache size : 16384 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves arch_capabilities
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds mmio_stale_data retbleed
bogomips : 5808.00
clflush size : 64
cache_alignment : 64
address sizes : 43 bits physical, 48 bits virtual
power management:
Die Zeile flags ist besonders interessant, da sie die verschiedenen Funktionen und Erweiterungen auflistet, die von Ihrer CPU unterstützt werden. Diese Flags geben Fähigkeiten wie die Unterstützung von Virtualisierung (vmx oder svm), bestimmte Befehlssätze (wie sse, avx) und Sicherheitsfunktionen an.
Sie können auch grep verwenden, um nach spezifischen Informationen innerhalb von /proc/cpuinfo zu suchen. Beispielsweise können Sie den folgenden Befehl verwenden, um den Modellnamen zu finden:
grep "model name" /proc/cpuinfo
Dies wird den Modellnamen für jeden CPU-Kern ausgeben:
model name : Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz
model name : Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz
Oder um zu prüfen, ob ein bestimmtes Flag, wie vmx (Intel VT-x-Virtualisierungsunterstützung), vorhanden ist:
grep "vmx" /proc/cpuinfo
Wenn vmx in der Ausgabe vorhanden ist, unterstützt Ihre CPU die Intel VT-x-Virtualisierung.
Das Erkunden von /proc/cpuinfo ist eine grundlegende Methode, um die Fähigkeiten des Prozessors Ihres Systems direkt aus der Sicht des Kernels zu verstehen.
Klicken Sie auf Weiter, um dieses Lab abzuschließen.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie mit verschiedenen Methoden prüfen können, ob eine Linux-Umgebung eine virtuelle Maschine ist. Sie haben begonnen, indem Sie den Befehl dmidecode mit sudo verwendet haben, um auf die DMI/SMBIOS-Tabelle zuzugreifen und detaillierte Informationen über die Systemhardware, wie BIOS-, System- und Prozessordetails, abzurufen. Dieser Befehl bietet einen umfassenden Überblick über die zugrunde liegenden Hardwarekomponenten.
Als Nächstes werden Sie zusätzliche Techniken zur Erkennung von Virtualisierung erkunden, einschließlich der Verwendung des Befehls virt-what und der Untersuchung der CPU-Flags in der Datei /proc/cpuinfo. Diese Methoden bieten alternative Möglichkeiten, die Anwesenheit einer virtualisierten Umgebung zu identifizieren, indem spezifische Systemmerkmale und -konfigurationen untersucht werden.



