Como o BIOS pode bloquear a virtualização?


26

Estou começando a trabalhar com o Docker e, depois de algumas horas tentando fazê-lo funcionar, descobri que o BIOS o estava bloqueando e que eu precisava ajustar as configurações do BIOS. Foi-me dito que o BIOS está de alguma forma relacionado à placa-mãe.

Como o BIOS pode bloquear esse tipo de processo, anulando o sistema operacional?


14
Você tem isso ao contrário. As configurações do BIOS para virtualização dizem à CPU para permitir um tipo específico de processamento. se as extensões de virtualização não estiverem ativadas no BIOS, a CPU não poderá executar o programa. A situação é como tentar executar um programa compilado para uma arquitetura de processador DEC Alpha em um sistema x64. sem as extensões, o programa tentará executar instruções que a CPU não entende. Seu Docker está impedindo a execução porque detectou que sua CPU, como está configurada atualmente, não pode executá-lo.
Frank Thomas

Respostas:


37

Não é que a CPU esteja bloqueando um programa; ele não tem um conceito de aplicativos nesse nível mais baixo. O problema é que o Docker em sistemas operacionais não Linux pode exigir virtualização de hardware. Você não especificou seu sistema operacional, mas fiz uma pequena espionagem e descobri que você provavelmente usa o Windows.

A virtualização de hardware é um recurso da CPU que, como você pode imaginar, permite que a CPU ajude na virtualização. Em muitas máquinas, você precisa habilitá-lo no BIOS. Isso é, em parte, para evitar problemas de segurança . Basicamente, você não pode iniciar um programa porque ele tentou usar um recurso que estava efetivamente ausente em vez de bloqueado ativamente.


14
a tiny bit of snoopingHa..ha
bs677:

sim eu estou usando um windows 7! obrigada pelo esclarecimento!!! Agora eu entendi!
Alvaro Joao

Eu estou familiarizado com essa configuração, mas ainda não estou claro, o que exatamente é a virtualização de hardware (no contexto da configuração do BIOS)?
Celeritas

2
A virtualização de hardware do @Celeritas é um conjunto de recursos fornecidos pela CPU e pelo BIOS que tornam a execução de máquinas virtuais mais eficientes, como o gerenciamento transparente de acessos de memória feitos pela VM de uma maneira mais eficiente do que pode ser feito no nível de software puro, e manipulação / interceptação de instruções "privilegiadas", como operações de E / S, para o software de virtualização manipular com mais eficiência.
ζ--

2
@ RACING121 O N significa NSA :)
Ben N

41

A resposta de Ben N é claramente a mais útil e clara.

Para aqueles que ainda se perguntam, no entanto, aqui está a história completa.


A virtualização é alcançada com o auxílio de hardware da CPU. Como um sistema operacional virtual interferiria no host, pois eles competem pelos mesmos recursos, é necessário um mecanismo para impedir que o convidado tenha acesso descontrolado ao hardware. Isso pode ser devido a software, lentidão, técnicas ou assistência da CPU.

A virtualização assistida por hardware é implementada com instruções opcionais específicas. Você pode ler sobre isso nos capítulos 23, 24, 25, 26, 27 e 28 do Intel Intel 3B Part 3 . O software deve primeiro verificar se essas instruções são suportadas antes de tentar usá-las.

Por motivos de segurança, a CPU possui um registro especial, é um MSR , chamado IA32_FEATURE_CONTROL, que mantém os bits informando com o recurso para ativar ou desativar.
Citação

O bit 0 é o bit de bloqueio. Se esse bit estiver claro, o VMXON causará uma exceção de proteção geral. Se o bit de bloqueio estiver definido, o WRMSR para este MSR causará uma exceção de proteção geral; o MSR não pode ser modificado até uma condição de redefinição de inicialização . O BIOS do sistema pode usar esse bit para fornecer uma opção de configuração para o BIOS desabilitar o suporte ao VMX. Para habilitar o suporte ao VMX em uma plataforma, o BIOS deve definir o bit 1, o bit 2 ou ambos (veja abaixo), bem como o bit de bloqueio.

O ponto fundamental é que, uma vez bloqueado, o registro não pode ser desbloqueado até a inicialização .

Como o BIOS / UEFI vem em primeiro lugar, ele pode desativar a virtualização limpando os bits apropriados e bloqueando o registro antes que qualquer sistema operacional possa impedir isso. Quando o recurso de virtualização é desativado dessa maneira, a CPU relata que está faltando a extensão de instrução opcional (e realmente falha se for usada) e, portanto, o software não pode usar a virtualização de hardware.


2
Esse é um ótimo complemento para a pergunta. A maioria das pessoas não tem idéia de que a configuração requer uma redefinição para alterar, portanto, não pode ser ativada "on the fly" enquanto o sistema operacional está em execução.
Tonny

OHH, é assim que funciona! Eu pesquisei e encontrei a resposta (que é o que me interessa, para os meus conceitos pessoais)
Paul Stelian
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.