Определите, работает ли в ВМ, и смонтируйте ли вы по-разному в зависимости от этого
Контекст: я второй человек, у которого была эта проблема - система с двойной загрузкой с общим разделом данных, плюс желание запустить одну из ОС в виртуальной машине на другой. Подумав об этом, я понял, что это потенциально можно решить, переместив крепление диска из /etc/fstab
и в отдельный сценарий запуска, который монтирует раздел данных либо непосредственно с диска, либо из папки, совместно используемой программным обеспечением виртуальной машины, в зависимости от того, работает система в виртуальной машине или нет. В любом случае в том же месте в файловой системе.
Я бы предпочел метод, который может иметь три состояния: "Запуск в ВМ", "Запуск вне ВМ" и "Не могу сказать". Таким образом, если он работал в ВМ, но программное обеспечение ВМ было неправильно настроено, поэтому общая папка не отображается в виртуализированной ОС (это случилось со мной раньше), она не пытается подключить реальный диск и все сломать., К сожалению, это исключает единственную идею, которая у меня возникла: "проверить общую папку, а если ее там нет, предположим, что нет виртуальной машины".
Итак, как это можно сделать? Желательно без необходимости монтировать его вручную при каждой загрузке.
Если это уместно, одна ОС - это Windows 10, а другая - Linux Mint, и Mint будет той, которая находится в виртуальной машине (иногда).
1 ответ
В Linux любой Linux, работающий в среде VM, сигнализируется наличием флага гипервизора в / proc / cpuinfo. Итак, запустив гостевую версию Arch Linux на хосте Debian, я получаю (как sudo!):
# cat / proc / cpuinfo процессор: 0 vendor_id: GenuineIntel семья процессора: 6 модель: 61 Название модели: Intel(R) Core(TM) i7-5500U CPU @ 2,40 ГГц степпинг: 4 процессор, МГц: 2394,460 размер кеша: 4096 кб физический идентификатор: 0 братьев и сестер: 1 основной идентификатор: 0 ядер процессора: 1 апицид: 0 начальная апицид: 0 fdiv_bug: нет f00f_bug: нет coma_bug: нет фпу: да fpu_exception: да Уровень процессора: 20 wp: да флаги: FPU VME - де - псевдоэфедрин TSC MSR пае MCE CX8 APIC SEP MTRR PGE MCA CMOV погладить pse36 clflush MMX fxsr ße SSE2 системного вызова пх rdtscp лм constant_tsc xtopology nonstop_tsc eagerfpu ПНИ PCLMULQDQ мониторинга SSSE3 CX16 sse4_1 sse4_2 movbe POPCNT äes XSAVE AVX rdrand гипервизора lahf_lm ABM 3dnowprefetch rdseed ошибки: bogomips: 4790,45 размер clflush: 64 cache_alignment: 64 размеры адресов: физические 39 бит, виртуальные 48 бит управление энергопотреблением:
Иногда для этого люди используют скрипт под названием virt-what (доступный в большинстве репозиториев), но это намного сложнее, чем в вашем случае; также требуется установка дополнительного программного обеспечения (virt-what и dmidecode, если это не поставляется по умолчанию с вашим дистрибутивом, как в случае, например, с Arch Linux).