So prüfen Sie, ob die Umgebung in Linux eine virtuelle Maschine ist

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicSystemCommandsGroup -.-> linux/man("Manual Access") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/UserandGroupManagementGroup -.-> linux/sudo("Privilege Granting") linux/PackagesandSoftwaresGroup -.-> linux/apt("Package Handling") subgraph Lab Skills linux/man -.-> lab-558808{{"So prüfen Sie, ob die Umgebung in Linux eine virtuelle Maschine ist"}} linux/cat -.-> lab-558808{{"So prüfen Sie, ob die Umgebung in Linux eine virtuelle Maschine ist"}} linux/grep -.-> lab-558808{{"So prüfen Sie, ob die Umgebung in Linux eine virtuelle Maschine ist"}} linux/sudo -.-> lab-558808{{"So prüfen Sie, ob die Umgebung in Linux eine virtuelle Maschine ist"}} linux/apt -.-> lab-558808{{"So prüfen Sie, ob die Umgebung in Linux eine virtuelle Maschine ist"}} end

Überprüfen der Systeminformationen mit dmidecode

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.

Erkennen von Virtualisierung mit virt-what

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.

Untersuchen der CPU-Flags in /proc/cpuinfo

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.