Desenvolvedor cria chave física para selecionar sistema no GRUB

Nunca usei o linux sozinho em minha máquina de uso pessoal, sempre apostei no dual boot para que eu pudesse aproveitar os recursos tanto do linux quanto do windows.

Contudo, uma das coisas mais chatas que existem nesse processo é o seletor do grub. Por padrão ele espera um tempo e entra no sistema operacional padrão, esse comportamento faz com que, caso eu ligue a máquina e vá fazer outra coisa, assim que eu voltar o PC estará ligado no meu sistema operacional padrão.

Porém, essa solução tem alguns inconvenientes. O primeiro, e óbvio, é que ele atrasa o tempo de boot da máquina. O segundo é que, caso eu esteja fazendo outra atividade e precise escolher o sistema operacional que irá bootar, preciso parar o que estou fazendo e esperara tela do grub, selecionar o sistema operacional e somente ai voltar às minhas atividades.

Parece um problema bobo, mas perdi as contas de quantas vezes bootei no sistema errado por causa disso e tive que esperar o processo completo de boot do sistema operacional para só então reiniciar e selecionar o OS correto.

Aparentemente, esses inconvenientes não afetam apenas a mim. Pensando em resolver esse problema, Stephen Holdaway, um desenvolvedor particularmente interessado em hardware, criou uma pequena e barata placa que é ligada à uma porta USB e possui um interruptor físico (que ele parafusou em sua mesa) que seleciona o sistema operacional desejado para ele no grub. Dessa forma ele seleciona o sistema operacional desejado antes de ligar a máquina e o boot ocorre diretamente para o sistema desejado.

Detalhes do projeto podem ser encontrados no hackaday (em inglês):
https://hackaday.io/project/179539/logs

O código fonte do firmware upado pode ser encontrado no github:

A notícia que esbarrei no facebook e que me motivou a postar aqui foi (em português):

10 curtidas

Legal o que ele fez. Mas só não entendo como que alguém que usa o Grub por 10 anos não percebeu que existe a opção de mudar a ordem de boot automático e outras configurações…

1 curtida

Você gostaria de ter que reconfigurar o GRUB toda vez que quisesse ligar o computador em outro OS enquanto faz outra coisa? A reclamação dele foi essa, ou ele esperava o GRUB dar as caras ou teria que reiniciar o PC depois. Nem sempre o padrão vem a calhar, pois mesmo que o mude podes querer iniciar no outro. Daí, podes apenas mudar a chave seletora, apertar o Power e ir fazer outra coisa.

2 curtidas

Já não faço isso há muito tempo, mas não tem a opção de não deixar automaticamente para selecionar, sem deixar um tempo para entrar automático?

O que ele fez ali é interessante, mas… O tempo entre apertar o botão de ligar e aparecer a tela de seleção do GRUB é tão curto que não vejo razão para isso.

3 curtidas

E se a pessoa se esquecer de mudar a posição da chave antes de ligar? :joy:
Acho que seria melhor criar um botão de ligar para cada SO.

3 curtidas

Era totalmente economico fazer igual o GRUB do Manjaro faz…
Selecionar e manter ate dos de dar reboot ou shutdown sem jogar a opcao no topo seria melhor…
Mas e uma chavinha ne kkkkk com tanta coisa pra inventar vem uma chavinha kkk
Pessoal surpreende… Agora melhorar o gerenciamento do memoria do kernel e ajudar em desenvolver melhores GUIs pra softwares uteis que e bom nada

Pior que não é nada difícil adaptar o projeto dele para fazer essa função…

Para fazer essa mudança, seriam usadas duas portas do gp-io para as chaves ao invés de uma, como ele fez (no caso dele deve-se verifica se essa porta está em nível alto ou baixo. Na modificação teria que verificar as duas portas para ver qual “muda de estado”) e usar uma terceira gp-io para mandar o sinal de turn-on para a placa mãe (essa saída da placa poderia ser colocada em paralelo ao switch padrão do gabinete para ter a possibilidade de “ligar da forma convencional” no caso de um format ou coisa do gênero).

Para isso funcionar só precisaria de uma condição da placa mãe, que ela mantivesse a alimentação das portas USB (que é o que alimenta a plaquinha que controla o boot) mesmo quando estivesse em stand-by. Felizmente esse é um recurso comum mesmo nas placas mais baratas atualmente.

A ideia é simples, ao pressionar o botão para ligar com o sistema operacional desejado, a plaquinha seta a variável que determina qual sistema operacional ela vai chamar no grub e manda o turn-on para a placa mãe em seguida.

Eu não sei direitinho como configurar o STM32 (teria que ler o datasheet) no static void init_gpio(void) para usar as outras gp-io por isso não vou arriscar colocar um código errado aqui, mas fora isso, seria uma modificação que não passa de 10 linhas no código que ele já fez.

O grande jogo de mestre dele foi conseguir enganar o grub se passando por uma unidade de armazenamento virtual (e foi isso o que mais me impressionou no projeto).

Mas de qualquer forma, gostei da sua ideia. Se eu conseguir achar um STM32 “blue pill” para comprar vou tentar montar esse projeto nos moldes que você sugeriu (de usar dois botões, um para cada OS).

3 curtidas

O duro é que para bootar no OS “não padrão” o grub depende de interação do usuário e isso as vezes é um transtorno. Como eu citei, já perdi as contas de quantas vezes tive que reiniciar o PC porque estava distraído e deixei o menu do grub “passar”.

2 curtidas

Legal mas é tão curto o tempo pra aparecer o grub q n consigo enxergar a grande vantagem disso aí. Me parece algo como “olha criei um botão power para um computador que já tem botão power”.

1 curtida

Sim, concordo que seja um problema bastante específico. Eu entendo o transtorno que o autor passou e não é “ter que esperar” o menu do grub. De fato é muito rápido o boot até chegar nele, o processo de boot completo aqui não passa de 30 segundos, então o problema com certeza não é o tempo.

O transtorno não é “ter que esperar o menu” mas sim quando você está fazendo outra coisa e manda o pc ligar querendo entrar no OS não padrão. É muito comum você “deixar o menu do grub passar” e acabar bootando no OS padrão porque se distraiu.

Por outro lado, desligar o timer não é solução porque você acaba trocando um problema por outro. (sim, eu já experimentei deixar o timer do grub desligado)

Se o timer for desligado, quando a intensão é só ligar a máquina e ir fazer outra coisa, com o timer desligado o que acontecia comigo é que eu acordava, apertava o botão de ligar o PC, ia tomar banho e quando voltava estava ainda no menu do grub.

Por causa disso que achei tão interessante ter um botão físico “Ligar o PC no Windows” e outro “Ligar o PC no Linux”.

3 curtidas