quinta-feira, 28 de julho de 2016

Boot direto via USB finalmente disponível para Raspberry Pi 3 (pendrive, HD, etc.)

Raspberry Pi 3 e boot via usb

No lançamento do Raspberry Pi 3 Modelo B foi informado o suporte a boot (na ROM do SoC) via USB mass storage e rede (PXE). Embora ainda sem um firmware adequado para utilização.

Finalmente o firmware e informações de como utilizar foram liberadas. Ainda se trata de modos experimentais e que exigem o upgrade para um firmware ainda em teste. Lembrando que esse tipo de boot via somente USB mass storage só funciona no Raspberry Pi 3 Modelo B, ele é dependente de uma programação interna no SoC de fábrica que não está presente nos outros modelos.

Nesse post irei apresentar somente o boot via USB que é o mais desejado. Descreverei de forma mais simples que o guia no github da fundação. Embora algumas partes sejam baseadas nele.

O único problema é que inicialmente você precisará de um MicroSD para configurar esse modo.


Como realizar boot direto via USB no Raspberry Pi 3


Com o sistema em seu MicroSD, realize o boot no Raspberry Pi 3. Abra um terminal,  instale a ferramenta rpi-update e atualize o firmware para a próxima versão:

$ sudo apt-get update
$ sudo apt-get install rpi-update
$ sudo BRANCH=next rpi-update


O próximo passo é o que se faz realmente necessário ter um MicroSD. Você precisará adicionar um parâmetro ao arquivo /boot/config.txt que pode ser feito de forma fácil com o comando:

$ sudo echo -e "\nprogram_usb_boot_mode=1" >> /boot/config.txt 

Esse parâmetro irá alterar um bit na OTP do SoC do Raspberry Pi 3. Para ler o valor padrão você pode utilizar o comando:

$ sudo vcgencmd otp_dump|grep 17: 
17:1020000a

O resultado padrão sairá como acima. Reinicie o sistema:

$ sudo reboot

Ao executar novamente o comando vcgencmd acima o resultado deverá ser esse:

$ sudo vcgencmd otp_dump|grep 17: 
17:3020000a 

Agora realizaremos a cópia do sistema no MicroSD para o dispositivo USB (pendrive por exemplo). Na interface gráfica do Raspberry Pi há uma ferramenta de backup que foi introduzida algumas versões atrás no Raspbian, chamada SD Card Copier. Abra a ferramenta, veja se seu dispositivo USB aparece na lista em Copy To Device.

Raspberry Pi 3 e boot via usb

Nesse passo você já descobrirá o caminho do seu dispositivo, que caso não tenha outro semelhante nas USBs, será /dev/sda .

Raspberry Pi 3 e boot via usb

Raspberry Pi 3 e boot via usb

Raspberry Pi 3 e boot via usb

Após a cópia, vá para o terminal novamente onde iremos criar alguns diretórios para montar as duas partições do dispositivo USB.

$ sudo mkdir /mnt/target
$ sudo mount /dev/sda2 /mnt/target/
$ sudo mkdir /mnt/target/boot
$ sudo mount /dev/sda1 /mnt/target/boot/


Será necessário alteração de dois arquivos que estão dentro do dispositivo USB. O cmdline.txt em sua partição de boot e o fstab em seu sistema de arquivos principal. Ambas alterações serão feitas para alterar o dispositivo utilizado, algo que pode ser feito manualmente abrindo o arquivo ou via sed como no tutorial original:

$ sudo sed -i "s,root=/dev/mmcblk0p2,root=/dev/sda2," /mnt/target/boot/cmdline.txt
$ sudo sed -i "s,/dev/mmcblk0p,/dev/sda," /mnt/target/etc/fstab


Caso seu dispositivo for diferente de sda basta alterar somente o sda para o seu nas duas linhas.

Desmonte as partições e desligue o sistema: 

$ sudo umount /mnt/target/boot
$ sudo umount /mnt/target/

$ sudo shutdown -h now

Desligue o cabo de energia, remova o MicroSD e mantenha o dispositivo USB com o sistema. Religue o cabo de energia.

Se tudo estiver certo seu sistema já realizará o boot diretamente via Mass Storage no dispositivo USB.

Atualização: Algo que esqueci de mencionar é que ao desligar o sistema com o firmware experimental o consumo é maior do que no outro além do led ACT permanecer aceso.

Referência: https://github.com/raspberrypi/documentation/blob/master/hardware/raspberrypi/bootmodes/msd.md

6 comentários:

  1. Show de bola.
    Valeu pela dica.

    ResponderExcluir
  2. Sabe dizer se este novo firmware esta estável ?

    ResponderExcluir
    Respostas
    1. Ah algo que esqueci de citar no artigo, então, aparentemente ainda não, eu não testei muito mas algo que percebi é que ao dar shutdown ele consome bem mais energia que o outro e o led ACT permanece aceso. Vou atualizar o artigo.

      Excluir
    2. Você realmente leu a dica? Acho que não, pois informa claramente ser algo experimental, isso já não basta?

      Excluir
  3. disqus no sistema de comentarios pless

    ResponderExcluir
  4. Com esse sistema não precisarei mais usar o cartão micro Sd,pois o sistema vai iniciar direto pelo USB.

    ResponderExcluir