21/06/2022
Linux underground |
Avertissement : armv7a-hardfloat-linux-gnueabihf devient armv7a-unknown-linux-gnueabihf ! https://www.gentoo.org/support/news-items/2018-09-07-arm-17-profile-migration.html |
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. En vrac, voici quelques notes...
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
(https://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.
Remarquez aussi que je lance screen en root. Y aurait-il un groupe à
rajouter à l'utilisateur pour éviter d'utiliser root ?
# 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.
Signalons aussi pour ceux qui n'utiliseraient pas le "crosscompiler" de Gentoo que la distribution de la "toolchain" arm (anciennement Linaro) est mainteant libre et disponible ici : https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads -> AArch32 target with hard float (arm-linux-gnueabihf).
Avec les sources du dépôt Github :
$ git clone -b v2019.04 https://github.com/u-boot/u-boot --depth=1
$ cd u-boot/
Avec les sources du dépôt Gitlab :
$ wget -c https://gitlab.denx.de/u-boot/u-boot/-/archive/v2019.04/u-boot-v2019-04.tar.bz2
$ tar xvjf u-boot-v2019-04.tar.bz2
$ cd u-boot-v2019-04-3c99166441bf3ea325af2da83cfe65430b49c066
Ensuite pour l'un et l'autre :
$ wget -c https://github.com/eewiki/u-boot-patches/raw/master/v2019.04/0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch
$ wget -c https://github.com/eewiki/u-boot-patches/raw/master/v2019.04/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_evm_defconfig
$ make ARCH=arm CROSS_COMPILE=armv7a-unknown-linux-gnueabihf-
Il semblerait que u-boot-2019.04 soit la dernière version à prendre en charge notre bien aimé BBB.
Pour ceux qui ne peuvent pas compiler u-boot, vous pouvez
récupérer mes fichers u-boot compilés :
$ wget https://www.linuxunderground.be/BBB/u-boot-bin/MLO
$ wget https://www.linuxunderground.be/BBB/u-boot-bin/u-boot.img
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.
La démache sera identique pour le kernel linux officiel.
# cd /usr/src/linux-5.11.5-gentoo
# mkdir -p deploy/boot
# wget https://www.linuxunderground.be/BBB/files/bb.org_defconfig.sh
# chmod +x bb.org_defconfig.sh
# ./bb.org_defconfig.sh
# 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=deploy modules_install
# make ARCH=arm CROSS_COMPILE=armv7a-unknown-linux-gnueabihf- INSTALL_PATH=deploy/boot zinstall
# make ARCH=arm CROSS_COMPILE=armv7a-unknown-linux-gnueabihf- INSTALL_PATH=deploy/boot dtbs_install
# cd deploy
# echo uname_r=$(ls boot/dtbs/) > boot/uEnv.txt
# tar cvzf ../deploy.tar.gz .
Vous verrez par la suite comment utiliser ce fichier deploy.tar.gz
Télécharger sur un miroir Gentoo un stage3 et portage :
(...)/releases/arm/autobuilds/current-stage3-armv7a_hardfp/stage3-armv7a_hardfp-20200509T210605Z.tar.xz
(...)/snapshots/portage-latest.tar.xz
# mkdir /mnt/bbb
# mount /dev/sdX1 /mnt/bbb
# cd /mnt/bbb
# tar xJpf chemin_téléchargement/stage3-armv7a_hardfp-20200509T210605Z.tar.xz
# cd var/db/repos
# tar xJpf chemin_téléchargement/portage-latest.tar.xz
# mv portage gentoo
# cd /mnt/bbb/etc/init.d
# ln -s net.lo net.eth0
# cd /mnt/bbb/etc/runlevels/default
# ln -s /etc/init.d/net.eth0
# ln -s /etc/init.d/sshd
# cd /mnt/bbb/etc/runlevels/boot
# unlink hwclock
# ln -s /etc/init.d/swclock
# cd /mnt/bbb
# echo "Europe/Brussels" > etc/timezone
# tar xvzf /usr/src/linux-5.7.7-gentoo/deploy.tar.gz
Pour définir le mot de passe root, le principe est d'aller écrire
le hash du mot de passe directement dans le fichier /mnt/bbb/etc/shadow
à la ligne root :
root:<hash_mot_de_passe>:10770:0:::::
Ce hash pourra être obtenu en tapant un mot de passe avec la commande :
$ openssl passwd -1
Ou en faisant un copier/coller du hash de votre /etc/shadow dans votre
/mnt/bbb/etc/shadow.
Dans le fichier /mnt/bbb/etc/inittab, en dessous de la ligne
"# SERIAL CONSOLES", assurez-vous d'avoir :
s0:12345:respawn:/sbin/agetty -L 115200 ttyS0 vt100
Finalisez votre configuration sur base des exemples de fichiers de
etc/.
# umount /mnt/bbb
Mettez votre carte sd dans votre BeagleBone Black et démarrez-le.
Au 1er démarrage, pensez à initialiser l'heure et le fuseau horraire :
# date MMDDhhmmYYYY
# emerge --config sys-libs/timezone-data
tlsdate fait partie de
l' "overlay" de linuxunderground. Pour l'installer :
# ACCEPT_KEYWORDS="**" emerge tlsdate
# tlsdate -V -l -t
# touch /sbin/openrc-run
Pour rappel, si vous deviez utiliser la commande date à la place de tlsdate, tapez quelque chose du genre :
# date -u -s 2020-03-22T20:34:00
# touch /sbin/openrc-run
# dd if=/dev/zero of=/swapfile bs=1M count=512
# chmod 600 /swapfile
# mkswap /swapfile
# swapon /swapfile
...
# swapoff -a
# emerge -1 --nodeps dev-python/six
https://wiki.gentoo.org/wiki/Embedded_Handbook/Boards/BeagleBone_Black
https://wiki.gentoo.org/wiki/BeagleBone_Black
https://wiki.gentoo.org/wiki/Embedded_Handbook/General/Cross-compiling_the_kernel
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
https://beagleboard.org/blog/2022-06-06-using-the-u-boot-extension-board-manager-beaglebone-boards-example