Uma pergunta interessante. Eu entrei em um host Linux (provavelmente SuSE). Existe alguma maneira de saber por meio de programação que sou ou não um host de VM?
Suponha também que o vmtools não esteja instalado.
linux
virtualization
mdpc
fonte
fonte
Respostas:
Use ferramentas padrão do Linux para inspecionar o hardware no sistema.
ou
ou
Se a saída desses comandos mostrar hardware com o nome de fabricante "VMWare", você estará em uma VM VMWare. Vários comandos são fornecidos aqui porque as configurações e ferramentas do sistema diferem.
fonte
cat /proc/scsi/scsi
é bom porque parece estar disponível em qualquer lugar e não requer a instalação de um novo software ou é executado com direitos privilegiados./proc/scsi/scsi
na minha caixa de Debian 7 ...man virt-what
o script heurístico criado para esse objetivo de detecção (para sistemas RedHat / Fedora) e as advertências envolvidas.indica que é uma VM. Se ele retornou "físico", o oposto é verdadeiro (não uma VM), por exemplo:
fonte
Existe um aplicativo útil que pode ajudar chamado virt-what . Eu não o usei com o VMWare, mas funcionou bem com o Qemu.
fonte
Você pode ter uma idéia olhando ao redor
/sys
. Por exemplo,/sys/class/dmi/id/sys_vendor
tem um valor deVMware, Inc.
.Se estiver instalado, você pode usar o lshw . O comando
lshw -class system
retorna isso no meu sistema:fonte
Alguns ambientes virtuais nomeiam alguns de seus dispositivos virtuais com nomes um pouco reveladores, por exemplo, o VirtualBox apresentando uma placa gráfica que se autodenomina "Adaptador de vídeo VirtualBox". Mas a procura dessas ligações o leva a uma VM específica e, possivelmente, a uma gama limitada de versões.
Pode ser possível para o seu código ver que tipo de virtualização ele pode configurar. Se isso falhar completamente, você pode estar em uma VM. Mas você pode facilmente estar em uma caixa que não possui nenhum hardware compatível com VM.
fonte
Para Linux, você digita
dmesg |grep DMI
:SAÍDA VIRTUAL DO HOST
PARA EXEMPLO FÍSICO DE HOSPEDAGEM
fonte
Há muito código por aí para detectar se você está em uma VM ou não. Comece com pílula vermelha e procure a partir daí. Este artigo na Offensive Computing também é uma boa leitura.
Isso se nenhum dos mais fáceis acima funcionar :)
fonte
Você também pode procurar a primeira parte do seu endereço mac aqui e ver se ele está listado como atribuído a qualquer empresa de virtualização.
fonte
Os dispositivos virtuais também serão revelados pelo lspci e / ou pelas informações do dispositivo de disco em / proc:
fonte
No Linux, as informações do sistema são reveladas em / sys / devices / virtual / dmi / id /. Veja minha resposta aqui para um script útil para mostrar todas as informações disponíveis.
raiz não é necessária.
fonte
Não gostei de nenhuma dessas soluções, pois geralmente há um driver de CD-ROM ou driver de memória VMware instalado, de modo que o dmesg o confirma ou nega rapidamente para mim.
fonte
Isso funcionou melhor para mim, pois fornece informações específicas sobre o fabricante e o nome do produto.
Saída no servidor Dell:
Saída na VM do Virtualbox:
Saída em KVM / QEMU:
Isso é ótimo para scripts que podem analisá-los para uma melhor identificação de servidores ... mas se você usar o Chef em sua infraestrutura, poderá verificar o atributo do nó
Virtualization -> system
no servidor do chef.fonte
Eu gosto muito:
ou concreto:
Como verificar se um sistema Linux é físico ou máquina virtual
16 métodos para verificar se um sistema Linux é uma máquina física ou virtual
fonte