diff --git a/Makefile b/Makefile index 500ce85..41c22d3 100644 --- a/Makefile +++ b/Makefile @@ -15,8 +15,8 @@ BIN_DIR_NAME_SUFFIX ?= IMAGEBUILDER_URL ?= https://downloads.openwrt.org/releases/$(OPENWRT_VERSION)/targets/$(OPENWRT_TARGET)/openwrt-imagebuilder-$(OPENWRT_VERSION)-$(OPENWRT_TARGET_DASHED).Linux-x86_64.tar.xz -IMAGEBUILDER_ARCHIVE_PATH := tmp/imagebuilder-$(OPENWRT_VERSION)-$(OPENWRT_TARGET_DASHED).tar.xz -IMAGEBUILDER_DIR_PATH := $(PWD)/imagebuilder/$(OPENWRT_VERSION)/$(OPENWRT_TARGET) +IMAGEBUILDER_ARCHIVE_PATH ?= tmp/imagebuilder-$(OPENWRT_VERSION)-$(OPENWRT_TARGET_DASHED).tar.xz +IMAGEBUILDER_DIR_PATH ?= $(PWD)/imagebuilder/$(OPENWRT_VERSION)/$(OPENWRT_TARGET) IMAGEBUILDER_CUSTOM_PACKAGES_DIR_PATH := $(IMAGEBUILDER_DIR_PATH)/packages IMAGEBUILDER_CUSTOM_FILES_DIR_PATH := $(IMAGEBUILDER_DIR_PATH)/files diff --git a/doc/README.md b/doc/README.md index 626f288..d361601 100644 --- a/doc/README.md +++ b/doc/README.md @@ -8,8 +8,13 @@ install/ # Tâches Make d'installation spécifiques aux différentes cibles d misc/ # Fichiers spécifiques aux différentes cibles de construction targets/ # Tâches Make de définition des différentes cibles de construction ``` + ## Tutoriels - [Premiers pas](./tutorials/first-steps.md) - [Compiler un firmware](./tutorials/firmware-compilation.md) -- [Flasher une borne](./tutorials/device-flashing.md) \ No newline at end of file +- [Flasher une borne](./tutorials/device-flashing.md) + +## Fiches matériel + +- [Banana Pi](./hardware/bananapi.md) diff --git a/doc/hardware/bananapi.md b/doc/hardware/bananapi.md new file mode 100644 index 0000000..fc48461 --- /dev/null +++ b/doc/hardware/bananapi.md @@ -0,0 +1,140 @@ +# BananaPi + +![banana-rpi3](./../img/bpi-r3-case.jpg) + +## Caractéristiques + +- MediaTek MT7986(Filogic 830) Quad core ARM Cortex A53 +- Wifi 6 2.4G/5G(MT7976C) +- 2G DDR RAM +- 8G eMMC flash +- 128MB Nand flash +- 2x 2.5GbE network port +- 1x M.2 Key B USB inerface +- 1x M.2 KEY M PCIe inerface +- 1x USB2.0 interface +- 1x Wan port (gigabit) +- 4x LAN port (gigabit) + +## Installation + +Par défaut, la borne est livrée sans système d'exploitation, ce qui rend impossible la procédure de flashage conventionnelle. + +BPI fournit un logiciel qui permet de prendre un fichier .img et de le mettre en place sur une carte SD. + +### Installation bpi-tools + +Il est recommandé d'installer préalablement pv pour plus de commodité. (Disponible et validé sur Ubuntu et Manjaro) + +```Shell +apt-get install pv +``` + +Pour installer bpi-tools sur votre machine, si vous ne pouvez pas accéder à l'URL via curl, rendez-vous sur le dépôt de bpi-tools et effectuez le processus manuellement. + +```Shell +curl -sL https://github.com/BPI-SINOVOIP/bpi-tools/raw/master/bpi-tools | sudo -E bash +``` + +### Installation firmware avec emissary + +Dans cet exemple, nous partirons de l'image OpenWrt avec Emissary suivante : ```openwrt-22.03.2-emissary-v2023.08.02-bec8917-bcm27xx-bcm2711-rpi-4-squashfs-factory.img``` + +1. Téléchargement de l'image : Téléchargez l'image depuis la [forge cadoles](https://forge.cadoles.com/arcad/emissary-firmware/releases) +Après le téléchargement, vous obtiendrez un fichier au format .gz.
+2. Extraction : Exécutez la commande suivante pour extraire l'image (remplacez les ```**``` par les détails spécifiques du fichier) : ```gunzip openwrt-**-emissary-***-****-**-**-rpi-4-squashfs-factory.img.gz``` +3. Déplacement dans le dossier : Placez-vous dans le dossier contenant le fichier .img. +4. Connexion de la carte SD : Branchez la carte SD sur votre machine. Pour vérifier l'identification de la carte, vous pouvez utiliser la commande ```dmesg``` et examiner les dernières lignes (généralement /dev/sda). +5. Vérification du chemin d'accès : Confirmez le chemin d'accès à la carte SD (/dev/sd...). +6. Copie sur la carte SD : Lancez la copie sur la carte SD en utilisant la commande bpi-copy (remplacez le nom de l'image et le chemin d'accès à la carte SD) : + +```Shell +sudo bpi-copy openwrt-22.03.2-emissary-v2023.08.02-bec8917-bcm27xx-bcm2711-rpi-4-squashfs-factory.img /dev/sda +``` + +Le résultat ressemblera à ceci : + +```Shell +============================================================== +jeu. 03 août 2023 10:09:12 CEST +*** start COPY (blue led on ) ..... +umount device: /dev/sda +umount /dev/sda1 +umount /dev/sda2 +============================================================== +IMGFILE=openwrt-22.03.2-emissary-v2023.08.02-bec8917-bcm27xx-bcm2711-rpi-4-squashfs-factory.img +============================================================== +img +8+1 enregistrements lus +8+1 enregistrements écrits +90475842 octets (90 MB, 86 MiB) copiés, 0,130052 s, 696 MB/s +86,3MiO 0:00:00 [ 648MiO/s] [ <=> ] +0+1381 enregistrements lus +0+1381 enregistrements écrits +*** end COPY (blue led off) ..... +jeu. 03 août 2023 10:09:18 CEST +============================================================== +RUNTIME 0:6 +OK!! You can remove the BOOTDISK /dev/sda now!! +``` + +Une fois la copie terminée, retirez la carte SD. Vous pouvez maintenant l'insérer dans le boîtier de destination. + +Après avoir flashé la carte, assurez-vous que les commutateurs sont correctement positionnés (sélection du boot), insérez la carte SD et branchez la borne. + +Connectez-vous à un port LAN du boîtier qui distribuera une adresse IP via DHCP. Vous pourrez ensuite utiliser SSH pour y accéder. + +### OS pour banana-bpi fournit par bpi + +Pour installer OpenWrt sur le BPI-R3, vous devez d'abord télécharger l'image ```bananapi_bpi-r3-sdcard.img.gz``` fourni par OpenWrt. Vous pouvez le télécharger depuis leur [page de téléchargement](https://downloads.openwrt.org/snapshots/targets/mediatek/filogic/). Si vous ne trouvez pas le fichier directement, suivez ces indications : + +1. Accédez à la page de téléchargement OpenWrt (cf image suivante). +2. Recherchez le dossier correspondant au modèle de votre matériel, dans ce cas bananapi_bpi-r3. +3. Téléchargez le fichier bananapi_bpi-r3-sdcard.img.gz. + +![img](./../img/bpi-r3-download.png) + +Après avoir téléchargé le fichier, vous pouvez continuer avec les étapes d'installation. + +#### Flash du Firmware OpenWrt pour BPI + +Suivez les étapes ci-dessous pour flasher la carte avec le firmware OpenWrt pour BPI : + +1. Téléchargement de l'image : Si vous avez suivi les instructions précédentes, vous devriez avoir l'image de l'OS. +2. Extraction de l'image : Exécutez la commande suivante pour extraire l'image (remplacez les **** par les détails spécifiques du fichier) : ```gunzip bananapi_****.img.gz``` +3. Placement de l'image : Placez-vous dans le dossier contenant le fichier .img. +4. Branchement de la carte SD : Branchez la carte SD sur votre machine. Pour vérifier son identification, utilisez ```dmesg``` et observez les dernières lignes (généralement sda). +5. Copie sur la carte SD : Lancez la copie sur la carte SD en utilisant la commande bpi-copy (remplacez les détails de l'image et le chemin d'accès à la carte SD) : + +```Shell +sudo bpi-copy bananapi_bpi-r3-sdcard.img /dev/sda +``` + +Une fois la carte flashée, assurez-vous que le switch a tous ses jumpers orientés vers le haut (sélection du boot). Insérez ensuite la carte SD et branchez la borne. + +Assurez-vous que votre carte réseau est configurée comme suit : + +- Réseau : 192.168.1.0/24 +- Passerelle : 192.168.1.1 + +Brancher votre câble RJ45 sur le port VLAN1, et connectez vous en ssh.(temps de boot moins de 30 secondes) + +```Shell +ssh root@192.168.1.1 +``` + +Pour la première connexion, aucun mot de passe n'est requis. + +## FAQ + +### Sélection du Système de Boot + +Pour choisir le système de boot, il suffit de manipuler un switch composé de quatre jumpers. Par défaut, ils sont tous en position haute, ce qui configure le démarrage à partir de la carte microSD. + +![schéma du switch](./../img/bpi-r3-switch.png) + +### Noms des Périphériques Réseau + +Par défaut, les périphériques réseau sont disposés et nommés comme suit : + +![Lan](./../img/bpi-r3-lan-pic.jpg) diff --git a/doc/img/bpi-r3-case.jpg b/doc/img/bpi-r3-case.jpg new file mode 100644 index 0000000..ea51247 Binary files /dev/null and b/doc/img/bpi-r3-case.jpg differ diff --git a/doc/img/bpi-r3-download.png b/doc/img/bpi-r3-download.png new file mode 100644 index 0000000..e437757 Binary files /dev/null and b/doc/img/bpi-r3-download.png differ diff --git a/doc/img/bpi-r3-lan-pic.jpg b/doc/img/bpi-r3-lan-pic.jpg new file mode 100644 index 0000000..e4261a7 Binary files /dev/null and b/doc/img/bpi-r3-lan-pic.jpg differ diff --git a/doc/img/bpi-r3-switch.png b/doc/img/bpi-r3-switch.png new file mode 100644 index 0000000..6802e80 Binary files /dev/null and b/doc/img/bpi-r3-switch.png differ diff --git a/doc/tutorials/firmware-compilation.md b/doc/tutorials/firmware-compilation.md index bd2b497..d1c651f 100644 --- a/doc/tutorials/firmware-compilation.md +++ b/doc/tutorials/firmware-compilation.md @@ -21,6 +21,7 @@ make linksys-wrt1900ac # ... ou pour le routeur Linksys WRT3200ACM make linksys-wrt3200acm ``` + ## Créer une nouvelle cible de construction Dans ce tutoriel, nous allons voir comment créer une nouvelle cible de construction pour un nouvel appareil, ici un [Banana Pi R3](https://wiki.banana-pi.org/Banana_Pi_BPI-R3). @@ -54,7 +55,7 @@ Dans ce tutoriel, nous allons voir comment créer une nouvelle cible de construc ``` **Explication des variables** - + - `OPENWRT_VERSION`: Version d'OpenWRT à utiliser. _Normalement prédéfinie par le fichier `Makefile` principal mais ill est ici nécessaire de surcharger la variable car il n'existe à ce jour pas de version stable d'OpenWRT pour la BananaPi R3._ - `IMAGEBUILDER_URL`: URL à utiliser pour télécharger le "builder" OpenWRT. _Normalement prédéfinie par le fichier `Makefile` principal mais ill est ici nécessaire de surcharger la variable car il n'existe à ce jour pas de version stable d'OpenWRT pour la BananaPi R3._ - `ADDITIONAL_INSTALL`: Tâches Make d'installation supplémentaires à exécuter. Voir section suivante. @@ -62,13 +63,21 @@ Dans ce tutoriel, nous allons voir comment créer une nouvelle cible de construc - `EMISSARY_ARCH`: Architecture du binaire Emissary à déployer dans le firmware - `OPENWRT_PROFILE`: "Profil" OpenWRT associé à l'appareil -3. Lancer la compilation du firmware +3. Préparation. + + Lancer la commande suivante pour télécharger (ou mettre à jours) les fichiers tar.gz nécessaire à la construction du firmware. Si cette commande n'a pas été exécutée au moins une fois, vous ne serez pas en mesure de construire le ou les firmwares nécessaires. + + ```shell + make download-emissary-release + ``` + +4. Lancer la compilation du firmware ```shell make bpi-r3 ``` - Les fichiers du firmware seront générés dans le répertoire `bin/snapshot/mediatek/filogic/bananapi_bpi-r3/` + Les fichiers du firmware seront générés dans le répertoire `depot/bin/snapshot/mediatek/filogic/bananapi_bpi-r3/` > 🛈 **Comment trouver les valeurs des variables `OPENWRT_TARGET` et `OPENWRT_PROFILE` ?** > diff --git a/install/bananapi.mk b/install/bananapi.mk new file mode 100644 index 0000000..32f596b --- /dev/null +++ b/install/bananapi.mk @@ -0,0 +1,3 @@ +install-bpi-r3-network-config: + mkdir -p files/etc/config + cp misc/bpi-r3/uci/network files/etc/config/network diff --git a/misc/bpi-r3/uci/network b/misc/bpi-r3/uci/network new file mode 100644 index 0000000..951e1f0 --- /dev/null +++ b/misc/bpi-r3/uci/network @@ -0,0 +1,24 @@ +config interface 'lan' + option type 'bridge' + option proto 'static' + option ipaddr '192.168.1.1' + option netmask '255.255.255.0' + list ports 'lan1' + list ports 'lan2' + list ports 'lan3' + list ports 'lan4' + list ports 'sfp2' + option ip6assign '60' + +config interface 'wan' + option type 'bridge' + list ports 'eth1' + list ports 'wan' + option proto 'dhcp' + +config device + config interface 'loopback' + option device 'lo' + option proto 'static' + option ipaddr '127.0.0.1' + option netmask '255.0.0.0' diff --git a/misc/jenkins/Dockerfile b/misc/jenkins/Dockerfile index 337948b..e9eb960 100644 --- a/misc/jenkins/Dockerfile +++ b/misc/jenkins/Dockerfile @@ -8,7 +8,7 @@ ARG https_proxy= # Install dev environment dependencies RUN export DEBIAN_FRONTEND=noninteractive &&\ apt-get update -y &&\ - apt-get install -y --no-install-recommends curl ca-certificates build-essential wget unzip tar git jq gawk python3 rsync file + apt-get install -y --no-install-recommends curl ca-certificates build-essential wget unzip tar git jq gawk python3 rsync file python3-distutils # Add LetsEncrypt certificates RUN curl -k https://forge.cadoles.com/Cadoles/Jenkins/raw/branch/master/resources/com/cadoles/common/add-letsencrypt-ca.sh | bash \ No newline at end of file diff --git a/targets/bananapi.mk b/targets/bananapi.mk new file mode 100644 index 0000000..f6e2c4b --- /dev/null +++ b/targets/bananapi.mk @@ -0,0 +1,12 @@ +all: bpi-r3 + +bpi-r3: + $(MAKE) \ + OPENWRT_VERSION="snapshot" \ + IMAGEBUILDER_URL=https://downloads.openwrt.org/snapshots/targets/mediatek/filogic/openwrt-imagebuilder-mediatek-filogic.Linux-x86_64.tar.xz \ + ADDITIONAL_INSTALL="install-bpi-r3-network-config" \ + ADDITIONAL_OPENWRT_PACKAGES="block-mount kmod-fs-ext4 kmod-usb-storage kmod-usb2" \ + OPENWRT_TARGET="mediatek/filogic" \ + EMISSARY_ARCH="arm64" \ + OPENWRT_PROFILE="bananapi_bpi-r3" \ + build