MC PROJETOS

Desenvolvedor cria botão de boot para alternar entre Linux e Windows | Computador | Tecnoblog

Desenvolvedor cria botão de boot para alternar entre Linux e Windows

O Windows e o Linux podem conviver pacificamente no mesmo computador (ou quase), mas Stephen Holdaway estava cansado do modo de funcionamento do gerenciador de boot GRUB. Ele teve então a ideia de criar uma solução física para alternar entre os dois sistemas: um botão de seleção que foi instalado em sua mesa.

Seletor Windows x Linux (imagem: divulgação/Stephen Holdaway)

Seletor Windows x Linux (imagem: divulgação/Stephen Holdaway)

Na página do projeto, Holdaway explica que usa Linux e Windows na mesma máquina há uma década, mas que o processo padrão de alternância entre os dois sistemas operacionais via GRUB o incomodava.

Para entrar no Linux, o desenvolvedor simplesmente ligava o computador e esperava o sistema operacional carregar. Mas, para entrar no Windows, ele tinha que selecionar esse sistema na lista de opções do GRUB dentro de um limite de tempo que, se não respeitado, carregava o Linux como padrão.

Cansado desse ritual, o desenvolvedor pensou em uma alternativa mais prática:

Como eu sei qual sistema operacional quero usar com antecedência, por que não criar um interruptor físico para selecionar entre o Linux e o Windows?

Stephen Holdaway

Holdaway desenvolveu uma solução baseada em dois componentes principais: um botão de seleção e uma diminuta placa USB equipada com um microcontrolador STM32 (um chip de baixo custo e arquitetura ARM).

É claro que não bastou ligar uma coisa na outra e começar a usar. Mas, estudando o funcionamento do GRUB, o desenvolvedor descobriu detalhes que abriram caminho para a solução.

Todo o “kit” do projeto de Holdaway (imagem: divulgação/Stephen Holdaway)

Holdaway percebeu, por exemplo, que o GRUB tem suporte nativo a dispositivos USB, mas, quando os módulos responsáveis por isso são acionados, os mecanismos que dão acesso às unidades de armazenamento do computador (onde os sistemas operacionais estão instalados, obviamente) são desativados para evitar conflitos.

Porém, se o dispositivo USB tiver função de armazenamento (como um pendrive), ele pode ser lido pelo GRUB sem dificultar o acesso aos dispositivos do tipo existentes na máquina.

Um dos passos consistiu então em fazer uma codificação para a placa USB ser reconhecida como um dispositivo de armazenamento, com direito a um sistema de arquivos emulado (Holdaway escolheu o FAT12 for ser simples e bem documentado).

O firmware da placa USB foi codificado pelo desenvolvedor de modo a orientar o GRUB a carregar o sistema operacional correspondente à posição escolhida no seletor.

Em resumo, o macete funciona assim: o dispositivo USB, já ligado ao interruptor, fica conectado ao computador; quando este é ligado, o GRUB lê o dispositivo e executa as instruções para carregar o Windows ou o Linux, conforme a posição do botão. O resultado é demonstrado no vídeo a seguir:

Podemos imaginar algumas possíveis desvantagens para essa seleção, como o risco de o botão ser acionado acidentalmente quando o computador já estiver em uso. Mas, como o dispositivo USB só interage com o GRUB e este é acionado apenas no momento do boot, é de se presumir que o seletor não irá causar nenhum dano ou interferência no sistema operacional ativo.

Nesse sentido, o desenvolvedor explicou via Twitter que a placa USB não é um dispositivo de armazenamento de verdade, logo, instruções de gravação que poderiam ser acionadas com a mudança do seletor são ignoradas.

É claro que, em vez de ter tido todo esse trabalho, Stephen Holdaway poderia ter usado o Windows Subsystem for Linux (WSL) ou outra solução do tipo para rodar o Linux no Windows. Mas, também via Twitter, o desenvolvedor explicou que prefere contar nativamente com o Linux por considerar Gnome e KDE ambientes mais confortáveis para o seu trabalho.

O seletor instalado e funcionando (imagem: divulgação/Stephen Holdaway)

Para encontrar informações mais detalhadas sobre como criar algo do tipo, acesse a página do projeto.

Sair da versão mobile