GreG

#GeeK #Domotique #Alire

Bootez votre Raspberry Pi 3 sur une clé USB

Publié le 12 août 2016

boot_USB_250pxOn attendait cette possibilité depuis la sortie du Raspberry Pi. Coincés par ce démarrage sur la carte SD imposé par les précédents SoC, on attendait l’arrivée de cette nouvelle.
Eh bien ça y est il est possible de booter sur une clé USB avec le Raspberry Pi 3 ! Bon, ça nécessite quelques manipulations mais après… ça fonctionne.

Booter le Raspberry Pi 3 sur sur un périphérique de stockage USB

Comment démarre le SoC

En fait ce qui nous intéresse ici, ce sont les toutes premières secondes de ce démarrage. Juste après que vous ayez branché la prise micro-usb d’alimentation, ou appuyé sur le bouton reset fraîchement installé sur votre Raspberry Pi. Dans un premier temps, le signal RUN s’établit, le SOC se réveille. Le SOC c’est le System On a Chip (Système Sur une Puce) de Broadcom. Ce SOC BCM2837 contient un processeur ARM cadencé à 1,2 GHz, un GPU VideoCore IV, de la mémoire cache et d’autres babioles qui accompagnent généralement les microprocesseurs (GPIO, timers, BUS divers et variés – I2C – SPI, contrôleur d’interruption – PIC, contrôleur de mémoire -MMU, UART…).

etape_01

A la mise sous tension, seul le GPU est activé. Le processeur ARM reste en veille, la SDRAM est désactivée. Le SOC comporte une ROM (Read Only Memory – Mémoire Morte) dans laquelle le fabricant a programmé le premier étage du bootloader. Lors de son réveil, le GPU est paramétré pour exécuter le programme qui est dans cette ROM. C’est ce qu’il fait et le firmware contenu en ROM a pour seul objectif d’accéder à la carte micro SD, qui doit être formatée en FAT (enfin, au moins la première partition)… SAUF si on a modifié un registre de l’OTP (One Time Programmable memory) qui dit au BCM2837 (celui qui équipe le Raspberry Pi 3) que lorsqu’il démarre, il va déjà voir s’il y a une carte SD opérationnelle. Si ce n’est pas le cas, il peut baguenauder et essayer de démarrer sur l’USB le SPI ou l’Ethernet…

boot_USB_01

Un Raspberry Pi 3 équipé d’une carte HiFiberry DAC + remarquez à droite de limage la carte SD posée sur le socle et pourtant… ça fonctionne !

Donc ce que je vous propose de faire c’est de commencer cette modif, prévoyez un peu de temps quand même…
Ce tutoriel est paru sur le blog raspberrypi.org, en voici une traduction.

 

Attention !

Ce tutoriel  EXPÉRIMENTAL est accessible aux débutants. Cependant vérifiez qu’il n’y a pas de messages d’erreur ni d’avertissements. Ce tutoriel ne fonctionne qu’avec certains modèles de clés USB si votre modèle de clé ne permet pas de booter le Raspberry Pi 3, inutile de m’incendier :)

Mise à jour du firmware

Commencez par une mise à jour du systéme

sudo apt-get update
sudo apt-get upgrade

Ensuite on met à jour le firmware dans /boot (start.elf et bootcode.bin) mais avec la version de la branche NEXT (expérimentale) : sudo BRANCH=next rpi-update

pi@raspberrypi:~ $ sudo BRANCH=next rpi-update
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
*** Performing self-update
*** Relaunching after update
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
*** Downloading specific firmware revision (this will take a few minutes)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 168 0 168 0 0 294 0 --:--:-- --:--:-- --:--:-- 294
100 51.1M 100 51.1M 0 0 413k 0 0:02:06 0:02:06 --:--:-- 468k
*** Updating firmware
*** Updating kernel modules
*** depmod 4.4.15-v7+
*** depmod 4.4.15+
*** Updating VideoCore libraries
*** Using HardFP libraries
*** Updating SDK
*** Running ldconfig
*** Storing current firmware revision
*** Deleting downloaded files
*** Syncing changes to disk
*** If no errors appeared, your firmware was successfully updated to 47d64831ccbc99080f98c1bc8948717c3416cb0f
*** A reboot is needed to activate the new firmware

 Autorisation du boot USB

On va modifier le fichier config.txt pour autoriser le boot USB :

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

Ceci ajoute program_usb_boot_mode=1 à la fin du fichier /boot/config.txt.

On peut maintenant redémarrer le Raspberry Pi et vérifier que le registre 1 de l’OTP a bien été modifié

sudo reboot

et pour vérifier le registre :

pi@raspberrypi:~ $ vcgencmd otp_dump | grep 17:
17:3020000a
pi@raspberrypi:~ $

Vérifiez bien que la valeur du registre 17 est    3020000a   ! (0x3020000a pour ceux qui parlent couramment en hexadécimal  »</p

Share Button
Posté dans : Domotique, Geek, veille
Tag :
domotique, geek, veille

Articles récents

  • Install mtr sur Mac OSX M1
  • Serveur PTP linux
  • Postfix « message file too big »
  • Suivre sa consommation d’eau jour, semaine, mois, année avec Eedomus et réaliser enfin des économies
  • Comment automatiser et externaliser les sauvegardes de Jeedom sur NAS Synology

Archives

  • février 2022
  • juin 2019
  • juin 2018
  • février 2018
  • janvier 2018
  • novembre 2017
  • octobre 2017
  • septembre 2017
  • août 2017
  • juillet 2017
  • juin 2017
  • mai 2017
  • avril 2017
  • mars 2017
  • février 2017
  • janvier 2017
  • décembre 2016
  • novembre 2016
  • octobre 2016
  • septembre 2016
  • août 2016
  • juillet 2016
  • juin 2016
  • mars 2016
  • février 2016
  • janvier 2016
  • décembre 2015
  • novembre 2015
  • octobre 2015
  • septembre 2015
  • août 2015
  • juillet 2015
  • juin 2015
  • mai 2015
  • avril 2015
  • août 2014
  • juillet 2014
  • juin 2014
  • mai 2014
  • avril 2014
  • mars 2014
  • février 2014
  • janvier 2014

Mots-clés

30ans alf alire android apple bio chine chocolat cloud dolorean domotique espace geek google gopro hubic humour inconnus ios iphone linux m&ms mac macbook maman mediacenter montre ovh parrot pebble plante pub radioshack raid redbull reseau sense Skittles stockage stream surveillance veille video vidéos wood

Catégories

  • 80s
  • Alire
  • Android
  • Apple
  • Bio
  • Chocolat
  • Cloud
  • Domotique
  • Drone
  • Exploit
  • Geek
  • Humour
  • Linux
  • Mediacenter
  • Non classé
  • Reseau
  • Smartphone
  • veille

Copyright © 2025 GreG.