18/01/2019

linux  Linux underground

BeagleBone Black et Gentoo

Avertissement :
Cette page est en cours de réécriture. Elle est encore fort incomplète...
armv7a-hardfloat-linux-gnueabihf devient armv7a-unknown-linux-gnueabihf !
https://www.gentoo.org/support/news-items/2018-09-07-arm-17-profile-migration.html

Premier démarrage

Ce matériel est livré prêt à l'emploi. Branchez simplement la cable USB à votre PC d'une part et au BeagleBone Black via le port microUSB d'autre part. Celui-ci démarre alors, alimenté par l'USB. Pour se connecter en SSH :
adresse IP : 192.168.7.2
Login : debian
password : temppwd

Ce 29 août 2014, j'arrive enfin à booter mon BeagleBone black sur la carte microSD. Mais depuis, beaucoup de choses ont changé dans la configuration de notre bien aimé BeagleBone Black. En vrac, voici quelques notes...

Console série

NB:  Pin 1 on the cable is the black wire and connects to pin 1 on the board, the pin with the white dot next to it (http://elinux.org/Beagleboard:Terminal_Shells).

dmesg donne :

[ 1728.681876] usbcore: registered new interface driver usbserial
[ 1728.682022] usbcore: registered new interface driver usbserial_generic
[ 1728.682080] usbserial: USB Serial support registered for generic
[ 1728.698254] usbcore: registered new interface driver ftdi_sio
[ 1728.699633] usbserial: USB Serial support registered for FTDI USB Serial Device
[ 1728.699834] ftdi_sio 1-2.1:1.0: FTDI USB Serial Device converter detected
[ 1728.701000] usb 1-2.1: Detected FT232RL
[ 1728.704377] usb 1-2.1: FTDI USB Serial Device converter now attached to ttyUSB0

# screen /dev/ttyUSB0 115200

ATTENTION : le câble FTDI doit être connecté avant de lancer la commande screen, à tout le moins côté prise USB.

Environnement de compilation Gentoo

# crossdev -C armv7a-hardfloat-linux-gnueabihf
# crossdev -P -v -t armv7a-unknown-linux-gnueabihf

Pour configurer votre environnement de compilation "armv7a-unknown-linux-gnueabihf", consultez directement le Wiki Gentoo.

Compilation de U-boot

Avec les sources du dépôt git :

$ git clone https://github.com/u-boot/u-boot
$ cd u-boot/
$ git checkout v2019.01 -b tmp

Avec les sources de l'archive tarball :

$ wget ftp://ftp.denx.de/pub/u-boot/u-boot-2019.01.tar.bz2
$ tar xvjf u-boot-2019.01.tar.bz2
$ cd u-boot-2019.01

Ensuite pour l'un et l'autre :

$ wget -c https://rcn-ee.com/repos/git/u-boot-patches/v2019.01/0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch
$ wget -c https://rcn-ee.com/repos/git/u-boot-patches/v2019.01/0002-U-Boot-BeagleBone-Cape-Manager.patch
$ patch -p1 < 0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch
$ patch -p1 < 0002-U-Boot-BeagleBone-Cape-Manager.patch
$ make ARCH=arm CROSS_COMPILE=armv7a-unknown-linux-gnueabihf- distclean
$ make ARCH=arm CROSS_COMPILE=armv7a-unknown-linux-gnueabihf- am335x_boneblack_config
$ make ARCH=arm CROSS_COMPILE=armv7a-unknown-linux-gnueabihf-

omap4+

ATTENTION:
Remplacez toujours /dev/sdX par le fichier correspondant à votre périphérique de lecture de carte SD !

Effacez l'actuelle table de partition (et les labels) :

# dd if=/dev/zero of=/dev/sdX bs=1M count=10

Partionnez la microSD :

# sfdisk /dev/sdX <<-__EOF__
4M,,L,*
__EOF__

Installez le bootloader. MLO et u-boot.img sont "dd'ed to drive" :

# dd if=MLO of=/dev/sdX count=1 seek=1 conv=notrunc bs=128k
# dd if=u-boot.img of=/dev/sdX count=2 seek=1 conv=notrunc bs=384k

Formatez la microSD :

# mkfs.ext4 -L rootfs -O ^metadata_csum,^64bit /dev/sdX1

Sources :
https://eewiki.net/display/linuxonarm/BeagleBone+Black
https://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0.

Compilation du kernel

Kernel du dépôt officiel BeagleBone

$ mkdir -p ~/bbb/deploy/boot
$ cd ~/bbb
$ git clone -b 4.19 --single-branch https://github.com/beagleboard/linux.git
$ cd linux
$ ti_config_fragments/defconfig_builder.sh -t ti_sdk_am3x_release
$ make ARCH=arm CROSS_COMPILE=armv7a-unknown-linux-gnueabihf- ti_sdk_am3x_release_defconfig
$ make ARCH=arm CROSS_COMPILE=armv7a-unknown-linux-gnueabihf- bb.org_defconfig
$ make ARCH=arm CROSS_COMPILE=armv7a-unknown-linux-gnueabihf- olddefconfig
$ make ARCH=arm CROSS_COMPILE=armv7a-unknown-linux-gnueabihf- -j4 zImage modules dtbs
$ make ARCH=arm CROSS_COMPILE=armv7a-unknown-linux-gnueabihf- INSTALL_MOD_PATH=~/bbb/deploy modules_install
$ make ARCH=arm CROSS_COMPILE=armv7a-unknown-linux-gnueabihf- INSTALL_PATH=~/bbb/deploy/boot install
$ make ARCH=arm CROSS_COMPILE=armv7a-unknown-linux-gnueabihf- INSTALL_PATH=~/bbb/deploy/boot dtbs_install
$ cd ~/bbb/deploy
$ echo uname_r=$(ls boot/dtbs/) > boot/uEnv.txt
$ tar cvzf ../deploy.tar.gz . --group=root --owner=root

Bizarre, je n'ai jamais pu booter mon BeagleBone Black en compilant ce kernel.

fichier de config de Robert Nelson.
Les "defconfig" présent par défaut : utiles ???
omap2plus_defconfig
bb.org_defconfig
multi_v7_defconfig

Kernel de Robert Nelson

Travail en cours...

Pour utiliser l'environnement de compilation de Gentoo plutôt que Linaro :
$ sed -e 's:#CC=/bin/arm-linux-gnueabihf-:#CC=/bin/arm-linux-gnueabihf-\nCC=/usr/bin/armv7a-unknown-linux-gnueabihf-:' system.sh.sample > system.sh

Un kernel Gentoo pour BeagleBone Black ?

Travail en cours...

Stage3

# mkdir /mnt/bbb
# cd /mnt/bbb
# tar xjpf ~/stage3-armv7a_hardfp-20180831.tar.bz2

Fichiers

Trucs et astuces

Mettre à jour l'horloge software :

# tlsdate -V -l -t
# touch /sbin/openrc-run

Créez de la mémoire swap pour une opération ponctuelle :

# dd if=/dev/zero of=/swapfile bs=1M count=512
# chmod 600 /swapfile
# mkswap /swapfile
# swapon /swapfile
...
# swapoff -a

Gentoo - lors de la mise à jour du stage3 (assez ancien), pour me sortir du blocage de portage :
# emerge -1 --nodeps dev-python/six

Liens

https://wiki.gentoo.org/wiki/Embedded_Handbook/Boards/BeagleBone_Black
https://wiki.gentoo.org/wiki/BeagleBone_Black
https://eewiki.net/display/linuxonarm/BeagleBone+Black
https://www.twam.info/hardware/beaglebone-black/u-boot-on-beaglebone-black
https://wiki.beyondlogic.org/index.php?title=BeagleBoneBlack_Default_uBoot_Environment_Variables


Valid XHTML 1.1 CSS Valide !