VMware Linux Server - como você pode saber se é um hardware vm ou real?


Respostas:


29

Use ferramentas padrão do Linux para inspecionar o hardware no sistema.

cat /proc/scsi/scsi

ou

ethtool -i eth0

ou

dmidecode | grep -i vmware

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.


12
Você pode explicar o que esses comandos fazem, em vez de fornecer apenas comandos vagos?
Stefan Lasiewski

Obrigado. 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.
Tiktak

@tiktak Eu não vejo /proc/scsi/scsina minha caixa de Debian 7 ...
Kyle Strand

1
Observe que isso não é 100% confiável. Por exemplo, as caixas da AWS não parecerão VMs. Veja man virt-whato script heurístico criado para esse objetivo de detecção (para sistemas RedHat / Fedora) e as advertências envolvidas.
Curinga

13
facter virtual 
xenu

indica que é uma VM. Se ele retornou "físico", o oposto é verdadeiro (não uma VM), por exemplo:

facter virtual
Physical

No entanto, este é um pacote especial não padrão .... mas eu gosto.
Mdpc

1
@mdpc Ele deve estar presente em qualquer sistema usando fantoche.
Michael Hampton

11

Existe um aplicativo útil que pode ajudar chamado virt-what . Eu não o usei com o VMWare, mas funcionou bem com o Qemu.


1
Infelizmente, o RPM binário possui duas dependências dmidecode e util-linux-ng quando experimentado no comercial do SuSE.
Mdpc 16/09/09

10

Você pode ter uma idéia olhando ao redor /sys. Por exemplo, /sys/class/dmi/id/sys_vendortem um valor de VMware, Inc..

Se estiver instalado, você pode usar o lshw . O comando lshw -class systemretorna isso no meu sistema:

server1
    description: Computer
    product: VMware Virtual Platform
    vendor: VMware, Inc.
    version: None
    serial: VMware-...
    width: 64 bits
    capabilities: smbios-2.4 dmi-2.4 vsyscall64 vsyscall32

Nas instâncias do SuSE às quais tenho acesso ao lshw, não existe. Além disso, o / sys / class / dmi / ... não existe.
Mdpc 15/09/09

6

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.


Sua primeira resposta foi a correta. Verifique os nomes dos drivers de dispositivo.
Izzy

4

Para Linux, você digita dmesg |grep DMI:

SAÍDA VIRTUAL DO HOST

[root @ myhost ~] # dmesg | grep DMI
DMI 2.3 presente.
DMI: Máquina virtual da Microsoft Corporation / máquina virtual, BIOS 090006 23/05/2012

[root @ myhost ~] # dmesg | grep -i virtual
DMI: Máquina virtual da Microsoft Corporation / máquina virtual, BIOS 090006 23/05/2012
Inicializando o kernel paravirtualizado em hardware simples
input: emulação de botão do mouse para Macintosh como / devices / virtual / input / input1
scsi 0: 0: 0: 0: Disco Virtual Msft de Acesso Direto 1.0 PQ: 0 ANSI: 4
input: Mouse compatível com Microsoft Vmbus HID como / devices / virtual / input / input4

PARA EXEMPLO FÍSICO DE HOSPEDAGEM

[root @ backdev1 ~] # dmesg | grep DMI
DMI 2.5 presente.
DMI: IBM System x3650 M3 - [7945AC1] - / 90Y4784, BIOS - [D6E153AUS-1.12] - 30/06/2011

1
Um grande problema da sua solução é que o dmesg lê o buffer do kernel e é de tamanho limitado. Se houver muitas mensagens ou um pouco de tempo desde que o sistema foi reiniciado, essas informações não estarão disponíveis.
Mdpc

4

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 :)


O primeiro link está quebrado. O segundo está quebrado ou lento.
Curinga

Você está certo. As areias do tempo as comeram ... Vou ver se consigo encontrar links alternativos.
Bill Weiss

É uma vergonha; "pílula vermelha" parecia interessante. :)
Curinga

1
Atualizado com links archive.org.
Bill Weiss

3

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.


Idéia interessante .... eu acho que as obras (desde que um dispositivo de rede está incluído no VM ;-))
MDPC

2
Não será confiável. Em muitos casos, o mac pode ser definido como um valor arbitrário. Isso permite clonar o mac da máquina original ao convertê-la em VM. Alguns softwares vinculam sua licença ao mac e, muitas vezes, é impossível obter uma nova licença (o fornecedor faliu ou os custos são proibitivos).
Tonny

3

Os dispositivos virtuais também serão revelados pelo lspci e / ou pelas informações do dispositivo de disco em / proc:

lspci | grep -i vmware

grep -i vmware /proc/scsi/scsi /proc/ide/*/model

2

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.


1

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.

[server @ user ~] $ dmesg | grep VMware
hda: Unidade de CD-ROM IDE virtual VMware, unidade de CD / DVD-ROM ATAPI
Fornecedor: VMware Modelo: Disco virtual Rev: 1.0
Fornecedor: VMware Modelo: Disco virtual Rev: 1.0
Fornecedor: VMware Modelo: Disco virtual Rev: 1.0
Fornecedor: VMware Modelo: Disco virtual Rev: 1.0
Fornecedor: VMware Modelo: Disco virtual Rev: 1.0
Fornecedor: VMware Modelo: Disco virtual Rev: 1.0
Fornecedor: VMware Modelo: Disco virtual Rev: 1.0
Driver de controle de memória VMware inicializado

3
Isso funcionará na inicialização, mas mais tarde você não pode garantir que o dmesg não tenha sido limpo ou excedido.
mattdm

Isto é o que eu costumo fazer também, que é grepping dmesg
tpaul

1

Isso funcionou melhor para mim, pois fornece informações específicas sobre o fabricante e o nome do produto.

dmidecode -t system|grep 'Manufacturer\|Product'

Saída no servidor Dell:

Manufacturer: Dell Inc.
Product Name: PowerEdge C5220

Saída na VM do Virtualbox:

Manufacturer: innotek GmbH
Product Name: VirtualBox

Saída em KVM / QEMU:

Manufacturer: QEMU
Product Name: Standard PC (i440FX + PIIX, 1996)

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 -> systemno servidor do chef.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.