Como fazer o boot do Raspberry Pi pela USB

image_pdfimage_print

Se você deseja efetuar um boot do Raspberry Pi pela USB, esse tutorial irá explicar como pode ser feito. Só funciona a partir do BCM2837, ou seja, apenas Raspberry Pi 3 até agora.

Além disto, não é possível efetuar um boot utilizando qualquer dispositivos de armazenamento, por isto é necessário verificar a compatibilidade antes na internet.

De fato, quando saiu o Raspberry Pi 3 foi anunciado novos modos de boot, porém ainda está em estágio experimental e provavelmente a melhor opção é aguardar até que saia uma solução definitiva.

O atual processo de boot funcionada da seguinte forma. Dentro do dispositivo há uma área de boot na ROM com um bit relacionado ao boot. Esse bit é como um ponteiro para o destino de boot. Não exatamente como uma MBR, mas muito mais minimalístico. A partir desse ponto é definido o modo de boot, que pode ser pelo SD ou pela USB.

O Raspberry Pi em seu modo tradicional faz a busca do arquivo bootcode.bin ao ser energizado ou reiniciado. Isto é, todo o processo de boot é feito fora do hardware, por isso que com um cartão que não contenha um sistema ok, o Raspberry não dá nenhum sinal visível de tentativa de boot, dando a impressão da placa estar queimada ou com um grave defeito.

O único processo da board é procurar esse arquivo de boot,então o programa é carregado para a memória e iniciado. A partir desse ponto, acabou a tarefa da board.

O arquivo bootcode.bin contém toda as instruções necessária para fazer o carregamento do sistema operacional que, a partir desse ponto, funciona de forma semelhante a um sistema Linux para x86: o kernel é carregado com o conjunto de drivers do dispositivo (chamado de firmware aqui, mas semelhante a um initrd).

Para configurar seu Raspberry PI com suporte a boot pela USB, basta:

Atualizar o sistema:

sudo apt update && sudo apt upgrade

Habilitar o modo de boot por USB

echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt

Feito isso, reinicie o sistema e verifique se o OTP foi programado:

vcgencmd otp_dump | grep 17:

A saída deverá obrigatoriamente ser 3020000a, de outro modo, a programação não foi executada. Após esse passo, não é mais necessário manter a linha program_usb_boot_mode, por isso remova-a do arquivo /boot/config.txt se desejar.

Agora é hora de preparar o sistema de origem do boot. O processo de instalação no pendrive deve ser o mesmo que para um cartão SD.

Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!