É possível escolher qual sistema operacional será carregado usando um switch de hardware?

5

Eu estou procurando uma maneira mais elegante de escolher qual sistema operacional inicializar do que usar o menu fornecido pelo grub, e eu acho que seria legal ter um switch no caso com dois estados (por exemplo, Ubuntu e Windows), que decidem qual sistema operacional será carregado. Eu tenho pensado, e parece-me que você deve ser capaz de resolvê-lo conectando o comutador a um gerador PWM e conectando o gerador a um pino de entrada de velocidade do ventilador. Então, a partir do grub, leia a velocidade do ventilador e faça um teste condicional que determina qual sistema operacional carregar.

No pseudocódigo:

if (fan.speed > threshold) then
  load Windows;
else
  load Ubuntu;
end

Minhas duas perguntas são, portanto:

  1. Como você usa um teste com o grub para determinar qual sistema operacional iniciar?
  2. Como você pode ler a velocidade do ventilador a partir do grub durante a inicialização?

Outras soluções e ideias também são bem-vindas:)

    
por hassanbot 14.03.2016 / 13:34

3 respostas

4

Você precisará escrever seu próprio módulo grub2, fazer interface com o BIOS para obter as informações brutas de velocidade do ventilador e usá-lo para interpretar e processar os resultados. Obviamente, o GRUB não sabe ou não se preocupa com a velocidade do seu ventilador e você não poderá fazer isso nativamente sem escrever algum código.

Uma solução melhor seria instalar o gerenciador de inicialização (apenas o gerenciador de inicialização, nada mais) em um dispositivo USB. Você pode usar o GRUB2 ou o BOOTMGR - não importa.

O PC é configurado para carregar a partir do USB primeiro, e quando este pen drive USB é inserido no PC, ele será inicializado no Ubuntu; enquanto o disco local está configurado para inicializar no Windows. ou seja, a presença ou ausência do USB determinará em qual sistema operacional o seu PC será inicializado.

Nesse ponto, é uma simples questão de usar um cabo USB modificado com um interruptor em uma das linhas VCC. Se estiver ativo, o dispositivo USB aparecerá no BIOS e ele será inicializado a partir da cópia do USB do GRUB no Ubuntu. Se o interruptor estiver desligado, o PC irá carregar "normalmente" do disco local, inicializando no Windows.

É claro que você está livre para disfarçar o pendrive, o cabo USB modificado e o comutador VCC dentro de uma caixa como uma única unidade autônoma. É muito mais legal do que a sua ideia de PWM, porque você literalmente a coloca na porta USB e está pronto.

    
por 14.03.2016 / 13:53
0

How do you use a test with grub to determine which OS to start?

Com o padrão GRUB: você não faz isso. Tecnicamente, você pode modificar o GRUB para fazer isso, no entanto, isso pode funcionar apenas para um tipo de placa-mãe e há maneiras mais fáceis.

O que pode ser mais fácil é carregar um terceiro sistema operacional. Por exemplo. um pequeno Linux instala com todos os drivers relevantes. Então, qualquer cadeia de lá tente este truques:

  • Defina para inicializar seu pequeno sistema operacional (vamos chamá-lo de 'SO do seletor') como padrão.
  • uma vez inicializado no seletor, leia o status do ventilador (isso é possível já que neste momento você tem um SO completo carregado, incluindo os drivers relevantes para a velocidade do ventilador, portas seriais, etc.).
  • Selecione o próximo sistema operacional para inicializar e ajustar o carregador de inicialização.
  • Reinicialize.

Em seguida, em ambos os outros sistemas operacionais, adicione um script de inicialização que redefina o carregador para o sistema operacional do seletor.

    
por 14.03.2016 / 14:28
0

É difícil saber qual switch pode alternar os HDDs, colocando o HDD apropriado no lugar que o BIOS / EFI está procurando inicializar.

    
por 16.03.2016 / 13:52