por que o hostnamectl mostra a virtualização independentemente de nenhuma adição de convidado instalada?

0

Estou rodando um sistema operacional básico do debian 9 dentro do Virtualbox, eu não instalei nenhuma paravirtualização | adições de convidados, independentemente de eu receber Virtualization: oracle . Por quê? não é suposto que o sistema operacional não deve estar ciente se está sendo executado em hardware real ou virtual?

    
por Ivanzinho 23.10.2018 / 05:59

1 resposta

3

Detectar a maioria das soluções de virtualização reais não é exatamente difícil.

O kernel do Linux pode detectar pelo menos VMware, HyperV, Xen e KVM: procure por uma mensagem como Hypervisor detected: <virtualization type> in dmesg output.

Pelo menos o VMware e o HyperV podem ser detectados com as informações de assinatura que eles adicionam aos resultados do código de operação do processador cpuid , para que possam ser detectados em um nível muito baixo. Observar as saídas de dmidecode e / ou lspci é outra maneira rápida de detectar muitas formas de virtualização.

Por razões práticas, a maioria das soluções de virtualização apresenta um conjunto de componentes do sistema para a VM que são conhecidos por serem simples e bem suportados. Isso geralmente leva a combinações que não fazem sentido no hardware físico real: por exemplo, se você vir um controlador SATA Intel ICH8M e uma ponte ISA Intel PIIX3 no mesmo sistema, essa é uma indicação bastante inoperante: os dois devem ser dispositivos integrados no chipset do sistema, mas eles pertencem a chipsets muito diferentes para que eles nunca existam no mesmo sistema físico.

Além disso, se você ver partes pertencentes a um chipset do sistema que foram usadas com os chips Pentium II originais com velocidades de clock medidas em valores de MHz de dois dígitos, e ainda assim o processador exigir velocidade de vários GHz, você sabe que tem que haver alguma virtualização acontecendo.

Veja também: Maneira fácil de determinar a tecnologia de virtualização

systemd inclui recursos projetados para controlar VMs e contêineres, portanto, sua biblioteca principal provavelmente também inclui um conjunto de rotinas de detecção de virtualização. Você também pode usá-los com o comando systemd-detect-virt.

    
por 23.10.2018 / 07:38