Введение
В этом практическом занятии (лабораторной работе) вы узнаете, как определить, запущена ли ваша Linux-система на виртуальной машине. Мы рассмотрим три различных метода для этого: использование команды dmidecode для проверки системной информации, применение инструмента virt-what, специально разработанного для определения виртуализации, и анализ флагов процессора в файле /proc/cpuinfo. По завершении этого практического занятия вы получите практические навыки для идентификации виртуальных сред в Linux.
Проверка системной информации с помощью dmidecode
На этом этапе вы узнаете, как использовать команду dmidecode для получения подробной информации о аппаратном обеспечении вашей системы. Команда dmidecode считывает данные из таблицы DMI/SMBIOS (Desktop Management Interface / System Management BIOS), которая содержит описания компонентов системы.
Эта команда очень полезна для понимания характеристик аппаратного обеспечения, на котором работает ваша Linux-система, таких как материнская плата, процессор, память и т.д.
Поскольку доступ к таблице DMI требует привилегий суперпользователя (root), вам нужно будет использовать sudo вместе с dmidecode.
Откройте терминал, если он еще не открыт. Помните, что вы можете найти значок Xfce Terminal слева на рабочем столе.
Теперь введите следующую команду и нажмите Enter:
sudo dmidecode
Эта команда выведет большое количество информации о аппаратном обеспечении вашей системы. Прокрутите вывод, чтобы увидеть различные разделы, такие как "BIOS Information", "System Information", "Base Board Information", "Processor Information", "Memory Device" и т.д.
Вывод может выглядеть примерно так (части вывода опущены для краткости):
## 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)
Вы также можете отфильтровать вывод, чтобы увидеть информацию о конкретном типе аппаратного обеспечения, используя опцию -t, за которой следует номер типа или ключевое слово. Например, чтобы увидеть только информацию о процессоре, вы можете использовать:
sudo dmidecode -t processor
Или, чтобы увидеть информацию о памятью:
sudo dmidecode -t memory
Попробуйте разные типы, такие как bios, system, baseboard, chassis и т.д., чтобы увидеть конкретные детали для каждого компонента.
Использование dmidecode является базовым навыком для системных администраторов и всех, кто нуждается в устранении неполадок с аппаратным обеспечением или просто хочет понять конфигурацию подлежащей системы.
Нажмите Continue, чтобы перейти к следующему шагу.
Обнаружение виртуализации с помощью virt-what
На этом этапе вы узнаете, как определить, запущена ли ваша Linux-система на виртуальной машине или на физическом (bare metal) оборудовании. Это часто важно для настройки системы, настройки производительности или лицензирования.
Мы будем использовать команду virt-what, которая специально разработана для этой цели. Она проверяет наличие признаков виртуализации и выводит имена гипервизоров, которые она обнаруживает.
Сначала вам нужно установить пакет virt-what. Используйте apt, как вы делали для htop в предыдущей лабораторной работе.
Откройте терминал и выполните следующую команду для установки virt-what:
sudo apt update
sudo apt install virt-what -y
Флаг -y автоматически отвечает "да" на все запросы во время установки, делая процесс неинтерактивным.
После завершения установки вы можете выполнить команду virt-what:
virt-what
Вывод этой команды покажет, является ли система виртуализированной, и, если да, какая технология виртуализации используется.
В среде LabEx, которая работает в виртуализированной среде, вы должны увидеть вывод, похожий на следующий:
qemu
kvm
Это означает, что система запущена в виртуальной машине QEMU/KVM. Если система запущена на физическом оборудовании, virt-what обычно не выведет никаких данных.
Понимание того, является ли ваша система виртуализированной, представляет собой важную информацию для многих задач по системному администрированию. virt-what предоставляет простой и надежный способ получить эту информацию.
Нажмите Continue, чтобы перейти к следующему шагу.
Проверка флагов CPU в файле /proc/cpuinfo
На этом этапе вы изучите файл /proc/cpuinfo, который представляет собой виртуальный файл, предоставляемый ядром Linux и содержащий информацию о процессоре (процессорах) в вашей системе. Этот файл является отличным источником детальной информации о вашем процессоре, включая его модель, скорость, размер кэша и поддерживаемые функции (флаги).
Файловая система /proc представляет собой псевдо-файловую систему, которая предоставляет интерфейс к структурам данных ядра. Файлы в /proc не хранятся на диске, а генерируются ядром в режиме реального времени при доступе к ним.
Для просмотра содержимого файла /proc/cpuinfo вы можете использовать командную утилиту, такую как cat или less. Команда cat выведет все содержимое в терминал, в то время как less позволяет прокручивать содержимое страницами. Поскольку файл /proc/cpuinfo может быть довольно длинным, использование less часто является более удобным.
Откройте терминал и введите следующую команду, чтобы просмотреть информацию о процессоре с помощью cat:
cat /proc/cpuinfo
Вы увидите подробную информацию для каждого ядра процессора в вашей системе. Вывод будет содержать строки, такие как processor, vendor_id, model name, cpu MHz, cache size и flags.
Вот пример того, что вы можете увидеть (части вывода опущены для краткости):
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:
Строка flags особенно интересна, так как в ней перечислены различные функции и расширения, поддерживаемые вашим процессором. Эти флаги указывают на возможности, такие как поддержка виртуализации (vmx или svm), конкретные наборы инструкций (например, sse, avx) и функции безопасности.
Вы также можете использовать grep для поиска конкретной информации в файле /proc/cpuinfo. Например, чтобы найти название модели:
grep "model name" /proc/cpuinfo
Это выведет название модели для каждого ядра процессора:
model name : Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz
model name : Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz
Или, чтобы проверить наличие определенного флага, например vmx (поддержка виртуализации Intel VT-x):
grep "vmx" /proc/cpuinfo
Если vmx присутствует в выводе, ваш процессор поддерживает виртуализацию Intel VT-x.
Изучение файла /proc/cpuinfo является основным способом понять возможности процессора вашей системы непосредственно с точки зрения ядра.
Нажмите Continue, чтобы завершить эту лабораторную работу.
Резюме
В этой лабораторной работе вы узнали, как с использованием нескольких методов проверить, является ли Linux-окружение виртуальной машиной. Вы начали с использования команды dmidecode с помощью sudo для доступа к таблице DMI/SMBIOS и получения подробной информации о системном оборудовании, такой как сведения о BIOS, системе и процессоре. Эта команда дает полное представление о базовых компонентах оборудования.
Далее вы изучите дополнительные методы определения виртуализации, включая использование команды virt-what и проверку флагов процессора в файле /proc/cpuinfo. Эти методы предоставляют альтернативные способы определить наличие виртуализированной среды путем анализа конкретных характеристик и настроек системы.



