[dft] [mise à jour u-boot]

Discussions autour de Debian Firmware Toolkit
jml
Messages : 98
Inscription : 29 janv. 2018, 09:47
Localisation : Biévres (91570)

[dft] [mise à jour u-boot]

Message par jml » 24 juil. 2018, 12:46

Bonjour,

Pour info, le composant Debian u-boot n'est pas installé de base par le
projet DFT dans l'arborescence de la flash, seul le binaire est mis à jour lors de la fabrication de cette dernière.

En revanche, il est possible de le mettre à jour comme l'ensemble des
autres composants de la distribution Debian. Bien entendu, compte tenu
des particularités de chaque board, chaque u-boot est spécifique, mais
la méthode de mise en oeuvre est commune, d'où la présence de ce post
dans DFT plutôt que dans chaque board de Armwizard.

Le prérequis est bien entendu de disposer du fichier de configuration
de apt, par exemple :

cat /etc/apt/sources.list.d/armwizard_apt_stretch.list

Code : Tout sélectionner

deb http://apt.armwizard.org/armwizard stretch main contrib non-free tools bsp
Les conventions de nomage de u- boot sont suffixées par DFT avec le type de board.
Par exemple, pour une mise à jour de board type orangepi0, la commande suivante permet de retrouver le nom précis du package

Code : Tout sélectionner

ansible@srv-orangepi0-1:~$ sudo apt search u-boot |grep -i orangepi

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

u-boot-orangepi-r1/stable 2018.07-1 armhf
  u-boot, version 2018.07 for orangepi-r1
u-boot-orangepi-zero/stable,now 2018.07-1 armhf [installed]
  u-boot, version 2018.07 for orangepi-zero
L'installation est standard Debian, dans le cas d'une board type orangepi0 :

Code : Tout sélectionner

sudo apt install u-boot-orangepi-zero

DFT a fait le choix d'installer le binaire u-boot sur la flash sans toutefois installer le package Debian sur l'équipement.
De plus, après installation du paquet u-boot-xxx, aucune action n'est réalisée sur le secteur de boot de l'équipement, ceci pour des raisons évidentes de sureté, DFT ne pouvant garantir la présence ou non d'UPS entre autre sur l'équipement..
Cette action est laissée sous la responsabilité de l'administrateur comme indiqué dans la documentation disponible à l'endroit habituel ...

Code : Tout sélectionner

ansible@srv-orangepi0-1:~$ cat  /usr/share/doc/u-boot-orangepi-zero/install.u-boot.orangepi-zero.md 
# u-boot installation for orangepi-zero

## Disclaimer

This procedure is provided as is, and should be check by yourself before
blindly executing it. Errors in the procedure it self, or user errors when
applying the procedure may result in irreversible data loss, or even bricking
the board.

You have been warned :)

## u-boot installation

The u-boot binary to install has been copied by this package to :
/boot/u-boot/u-boot-orangepi-zero

This is a symlink to the current u-boot file stored at the same location in a
file named u-boot-orangepi-zero.VERSION

u-boot binary has to be installed on the first sectors of the device used by 
the board to boot. This can be done by the following commands, assuming that :

. The commands are run as root or using sudo ( that's the example)

. The commands are run on the target board (orangepi-zero)

. Which means the /dev/mmcblk0 is the internal CF card used to boot

First the commands will cleanup the sectors used on the flash, then copy the
u-boot itself.

 
## shell commands

sudo dd if=/dev/zero of=/dev/mmcblk0 bs=1k count=1023 seek=1 status=noxfer
sudo dd if=/boot/u-boot/u-boot-orangepi-zero of=/dev/mmcblk0 bs=1024 seek=8 status=noxfer
Avant de lancer la commande fatale (!), merci de bien s'assurer de la disponibilité de place sur la flash de boot.
Ainsi, par exemple dans mon cas, j'ai :

Code : Tout sélectionner

ansible@srv-orangepi0-1:~$ sudo fdisk  -l /dev/mmcblk0
Disk /dev/mmcblk0: 14.9 GiB, 15931539456 bytes, 31116288 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xd8c7f5c3

Device          Boot    Start      End  Sectors  Size Id Type
/dev/mmcblk0p1           8192  8000378  7992187  3.8G 83 Linux
/dev/mmcblk0p2        8192000 31115263 22923264   11G  f W95 Ext'd (LBA)
/dev/mmcblk0p5        8194048 10239999  2045952  999M 8e Linux LVM
/dev/mmcblk0p6       10242048 12287999  2045952  999M 8e Linux LVM
/dev/mmcblk0p7       12290048 14335999  2045952  999M 8e Linux LVM
/dev/mmcblk0p8       14338048 16383999  2045952  999M 8e Linux LVM
On constate bien qu'il y a une réservation de 8192-1 secteur de
512 Ko, soit 4 Mo réservé à l'installation de u-boot

Conformément à la doc de SunXi, le u-boot s'installe en moins de 1 Mo.
La première commande provoque un effacement
sudo dd if=/dev/zero of=/dev/mmcblk0 bs=1k count=1023 seek=1 status=noxfer

La second commande a pour objet de mettre à jour le binaire de u-boot à partir du contenu du paquet Debian u-boot-xxxx
sudo dd if=/boot/u-boot/u-boot-orangepi-zero of=/dev/mmcblk0 bs=1024 seek=8 status=noxfer
Il reste à lancer la dernière commande

Code : Tout sélectionner

sudo reboot
.... et tout est OK !

Merci -W-

Répondre