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.
Atualização: Só para constar, a alteração do bit via OTP (One-time-programmable) é irreversível entretanto não me causou qualquer tipo de problema até o momento.
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.
Nesse passo você já descobrirá o caminho do seu dispositivo, que caso não tenha outro semelhante nas USBs, será /dev/sda .
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
Show de bola.
ResponderExcluirValeu pela dica.
Sabe dizer se este novo firmware esta estável ?
ResponderExcluirAh 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.
ExcluirVocê realmente leu a dica? Acho que não, pois informa claramente ser algo experimental, isso já não basta?
Excluirelizeu , a atualização do post foi feita no mesmo dia da pergunta do Moisés. Portanto não deveria constar a informação. SEU CORNO !
ExcluirCom esse sistema não precisarei mais usar o cartão micro Sd,pois o sistema vai iniciar direto pelo USB.
ResponderExcluirSe eu gravar um bit para forçar leitura do USB, poderei desfazer tal alteração? Obrigado.
ResponderExcluirNão, é irreversível. Mas até então mesmo eu não utilizando o boot USB no dia dia com o bit ativo não tive problemas aqui.
ExcluirDepois da modificação entao funcionou tanto pelo MicroSD ou USB?
ExcluirSim funciona das duas formas, entretanto a imagem ter que estar configurada para o modo, como a parte do cmdline.txt indicando o caminho root.
ExcluirNo meu deu o seguinte erro:
ResponderExcluirroot@overmod:~# BRANCH=next rpi-update
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
*** Performing self-update
!!! Failed to download update for rpi-update!
!!! Make sure you have ca-certificates installed and that the time is set correctly
conhece algum jeito de solucionar?
Olá, pelo que andei lendo por aí, essa atualização já está nas novas imagens do raspbian, não precisando realizar esse passo, veja se funciona sem ele.
ExcluirEle vai dar boot tanto o usb quando no cartão de memoria? se remover o dispositivo usb e reinserir o cartão de memoria ele vai dar boot normalmente?
ResponderExcluirSe você não alterou nenhum caminho no cartão original, sim.
ExcluirObrigado pela informação
ExcluirHá aumento da velocidade no sistema? Quais as vantagens e desvantagens?
ResponderExcluirDá para fazer esse processo todo em um HD de 40 ou 80 GB? Ou pode aparentar falhas pois estou com um projeto de um notebook com raspberry.
ResponderExcluirPreciso saber da atualização que é feita com a imagem no SD.
ResponderExcluirSera realizado as atualizações quando a imagem estiver no peendriver tbm?
ola, gostaria de saber se esse procedimento tem como ser feito no recalbox ou na retropie?
ResponderExcluirtambém gostaria de saber se alguém o fez deixe nos saber se funciona dês de já muito obrigado obrigado
ExcluirBom dia,
ResponderExcluir$ sudo mkdir /mnt/target
$ sudo mount /dev/sda2 /mnt/target/
$ sudo mkdir /mnt/target/boot
$ sudo mount /dev/sda1 /mnt/target/boot/
Arquivo nao encontrado..
será versao no Raspbian?
COMO DESAFAZER?
ResponderExcluirsegundo as informações que tenho se você colocar o cartão SD ele da prioridade pra ele.
Excluiragora sobre reverter, não tem como TEORICAMENTE
¡Hola, gente! Si no tiene dinero para el hierro más caro, le aconsejo que intente comenzar a recaudar más dinero, con la ayuda de este lugar
ResponderExcluirhttps://fscore.com.ar, ya que aquí podrá aprender a analizar y adivinar la Puntuación para hacer predicciones correctas
Funcionou... meus parabéns pelo tutorial !!
ResponderExcluirOBG