Контекст: я второй человек, у которого была эта проблема - система с двойной загрузкой с общим разделом данных, плюс желание запустить одну из ОС в виртуальной машине на другой. Подумав об этом, я понял, что это потенциально можно решить, переместив монтирование диска из /etc/fstab и в отдельный скрипт запуска, который монтирует раздел данных либо непосредственно с диска, либо из папки, общей для программного обеспечения виртуальной машины, в зависимости от того, работает система в ВМ или нет. В любом случае в том же месте в файловой системе.

Я бы предпочел метод, который может иметь три состояния: "Запуск в ВМ", "Запуск вне ВМ" и "не могу сказать". Таким образом, если он работал в ВМ, но программное обеспечение ВМ было неправильно настроено, поэтому общая папка не отображается в виртуализированной ОС (это случилось со мной раньше), она не пытается подключить реальный диск и все сломать. , К сожалению, это исключает единственную идею, которая у меня возникла: «проверить общую папку, а если ее нет, предположим, что нет виртуальной машины».

Итак, как это можно сделать? Желательно без необходимости монтировать его каждый раз при загрузке.

Если это уместно, одна ОС - это Windows 10, а другая - Linux Mint, и Mint будет той, которая находится в виртуальной машине (иногда).

1 ответ1

1

В Linux любой Linux, работающий в среде VM, сигнализируется наличием флага гипервизора в /proc/cpuinfo. Итак, запустив гостевую версию Arch Linux на хосте Debian, я получаю (как sudo !):

# cat /proc/cpuinfo
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 61
model name  : Intel(R) Core(TM) i7-5500U CPU @ 2.40GHz
stepping    : 4
cpu MHz     : 2394.460
cache size  : 4096 KB
physical id : 0
siblings    : 1
core id     : 0
cpu cores   : 1
apicid      : 0
initial apicid  : 0
fdiv_bug    : no
f00f_bug    : no
coma_bug    : no
fpu     : yes
fpu_exception   : yes
cpuid level : 20
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 syscall nx rdtscp lm constant_tsc xtopology nonstop_tsc eagerfpu pni pclmulqdq monitor ssse3 cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm 3dnowprefetch rdseed
bugs        :
bogomips    : 4790.45
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

Иногда для этого люди используют скрипт под названием virt-what (доступный в большинстве репозиториев), но это намного сложнее, чем в вашем случае; также требуется установка дополнительного программного обеспечения (virt-what и dmidecode, если это не поставляется по умолчанию с вашим дистрибутивом, как в случае, например, с Arch Linux).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .