Compare commits

..

1 Commits

Author SHA1 Message Date
f5f12194e1 fix(turris,omnia): disable reboot after resize temporarily
All checks were successful
arcad/emissary-firmware/pipeline/head This commit looks good
2023-04-17 11:30:50 +02:00
21 changed files with 23 additions and 382 deletions

7
Jenkinsfile vendored
View File

@ -23,7 +23,6 @@ pipeline {
stage('Update emissary release') {
when {
branch 'master'
expression {
return params.emissaryRelease != 'latest'
}
@ -53,6 +52,7 @@ pipeline {
echo '${params.emissaryRelease}' > emissary_release.txt
git add emissary_release.txt
git commit -m "feat: use emissary ${params.emissaryRelease}"
git pull --rebase
git push origin \$(git rev-parse HEAD):${env.GIT_BRANCH}
"""
}
@ -60,7 +60,7 @@ pipeline {
}
}
stage('Build') {
stage('Build and release') {
steps {
script {
withCredentials([
@ -80,9 +80,6 @@ pipeline {
}
stage('Release') {
when {
branch 'master'
}
steps {
withCredentials([
usernamePassword([

View File

@ -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

View File

@ -1,20 +1,7 @@
# Documentation
## Structure du projet
```shell
doc/ # Documentation technique
install/ # Tâches Make d'installation spécifiques aux différentes cibles de construction
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)
## Fiches matériel
- [Banana Pi](./hardware/bananapi.md)
- [Flasher une borne](./tutorials/device-flashing.md)

View File

@ -1,140 +0,0 @@
# BananaPi
![banana-rpi3](./../img/bpi-r3-case.jpg)
## Caractéristiques
- MediaTek MT7986(Filogic 830) Quad core ARM Cortex A53
- Wifi 6 2.4G/5GMT7976C
- 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.</br>
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)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

View File

@ -1,94 +1,16 @@
# Compiler un firmware
## Compiler un firmware préconfiguré
L'ensemble des cibles de construction préconfigurés sont disponibles dans le répertoire `targets/`.
Par exemple:
> TODO
```shell
# Télécharger localement les dernières archive du projet emissary
make download-emissary-release
# Exemple: construire un firmware OpenWRT
# Puis...
# ... pour le routeur Linksys WRT1200AC
# Pour le routeur Linksys WRT1200AC
make linksys-wrt1200ac
# ... ou pour le routeur Linksys WRT1900AC
# Pour le routeur Linksys WRT1900AC
make linksys-wrt1900ac
# ... ou pour le routeur Linksys WRT3200ACM
# Pourt le router 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).
### Créer la nouvelle tâche Make
1. Dans le répertoire `targets/`, créer le fichier `bananapi.mk`
```shell
touch targets/bananapi.mk
```
2. Éditer le fichier `targets/bananapi.mk` pour créer la nouvelle tâche Make
```makefile
# On ajoute notre nouvelle tâche "bpi-r3" en dépendance de la tâche
# principale "all"
all: bpi-r3
# On créait une nouvelle tâche "bpi-r3" permettant de construire le
# firmware pour notre BananaPi 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="" \
OPENWRT_TARGET="mediatek/filogic" \
EMISSARY_ARCH="arm64" \
OPENWRT_PROFILE="bananapi_bpi-r3" \
build
```
**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.
- `OPENWRT_TARGET`: "Cible" OpenWRT associée à l'appareil
- `EMISSARY_ARCH`: Architecture du binaire Emissary à déployer dans le firmware
- `OPENWRT_PROFILE`: "Profil" OpenWRT associé à l'appareil
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 `depot/bin/snapshot/mediatek/filogic/bananapi_bpi-r3/`
> 🛈 **Comment trouver les valeurs des variables `OPENWRT_TARGET` et `OPENWRT_PROFILE` ?**
>
> Après avoir trouvé votre appareil sur la [liste de compatibilité d'OpenWRT](https://openwrt.org/toh/start), rechercher l'URL de téléchargement du fichier du firmware, qui devrait ressembler à `https://downloads.openwrt.org/snapshots/targets/mediatek/filogic/openwrt-mediatek-filogic-bananapi_bpi-r3-sdcard.img.gz`.
>
> La valeur de `OPENWRT_TARGET` est la chaîne comprenant les 2 répertoires juste après `targets/`, ici `mediatek/filogic`.
>
> La valeur de `OPENWRT_PROFILE` est la chaîne comprise entre la cible OpenWRT et le type/extension dans le nom de fichier, ici `bananapi_bpi-r3`.
### Personnaliser votre firmware
Afin de personnaliser votre firmware, vous pouvez déclarer des nouvelles tâches Make dans le répertoire `install/` et ensuite les référencer dans la variable `ADDITIONAL_INSTALL`.
Vous pouvez prendre exemple sur le ficher `install/raspberrypi.mk` qui par exemple déploie des fichiers de configuration UCI par défaut ainsi que des scripts [`uci-defaults`](https://openwrt.org/docs/guide-developer/uci-defaults).
```

View File

@ -1 +1 @@
2023.10.3-stable.538.9068203
v2023.4.14-813f837

View File

@ -1,3 +0,0 @@
install-bpi-r3-network-config:
mkdir -p files/etc/config
cp misc/bpi-r3/uci/network files/etc/config/network

View File

@ -1,7 +0,0 @@
install-rpi-network-config:
mkdir -p files/etc/config
cp misc/rpi/uci/network files/etc/config/network
install-rpi-uci-defaults:
mkdir -p files/etc/uci-defaults
cp misc/rpi/uci-defaults/* files/etc/uci-defaults/

View File

@ -1,24 +0,0 @@
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'

View File

@ -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 python3-distutils
apt-get install -y --no-install-recommends curl ca-certificates build-essential wget unzip tar git jq gawk python3 rsync file
# Add LetsEncrypt certificates
RUN curl -k https://forge.cadoles.com/Cadoles/Jenkins/raw/branch/master/resources/com/cadoles/common/add-letsencrypt-ca.sh | bash

View File

@ -1,37 +0,0 @@
#/bin/sh
set -e
main() {
# Update default firewall ruleset
uci add firewall rule
uci set firewall.@rule[-1].name='Allow SSH on WAN'
uci set firewall.@rule[-1].src='wan'
uci set firewall.@rule[-1].proto='tcp'
uci set firewall.@rule[-1].dest_port='22'
uci set firewall.@rule[-1].target='ACCEPT'
uci add firewall rule
uci set firewall.@rule[-1].name='Allow HTTP on WAN'
uci set firewall.@rule[-1].src='wan'
uci set firewall.@rule[-1].proto='tcp'
uci set firewall.@rule[-1].dest_port='80'
uci set firewall.@rule[-1].target='ACCEPT'
uci add firewall rule
uci set firewall.@rule[-1].name='Allow HTTPS on WAN'
uci set firewall.@rule[-1].src='wan'
uci set firewall.@rule[-1].proto='tcp'
uci set firewall.@rule[-1].dest_port='443'
uci set firewall.@rule[-1].target='ACCEPT'
uci commit firewall
# Disable DNS-rebind protection
uci set dhcp.@dnsmasq[0].rebind_protection='0'
uci commit dhcp
reload_config
}
main

View File

@ -1,9 +0,0 @@
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config interface 'wan'
option ifname 'eth0'
option proto 'dhcp'

View File

@ -1,37 +0,0 @@
#/bin/sh
set -e
main() {
# Update default firewall ruleset
uci add firewall rule
uci set firewall.@rule[-1].name='Allow SSH on WAN'
uci set firewall.@rule[-1].src='wan'
uci set firewall.@rule[-1].proto='tcp'
uci set firewall.@rule[-1].dest_port='22'
uci set firewall.@rule[-1].target='ACCEPT'
uci add firewall rule
uci set firewall.@rule[-1].name='Allow HTTP on WAN'
uci set firewall.@rule[-1].src='wan'
uci set firewall.@rule[-1].proto='tcp'
uci set firewall.@rule[-1].dest_port='80'
uci set firewall.@rule[-1].target='ACCEPT'
uci add firewall rule
uci set firewall.@rule[-1].name='Allow HTTPS on WAN'
uci set firewall.@rule[-1].src='wan'
uci set firewall.@rule[-1].proto='tcp'
uci set firewall.@rule[-1].dest_port='443'
uci set firewall.@rule[-1].target='ACCEPT'
uci commit firewall
# Disable DNS-rebind protection
uci set dhcp.@dnsmasq[0].rebind_protection='0'
uci commit dhcp
reload_config
}
main

View File

@ -2,7 +2,11 @@
set -eo pipefail
block info
FLAG_FILE=/root/.disk_resized
if [ -f "$FLAG_FILE" ]; then
exit
fi
DISK=/dev/mmcblk0
PARTITION="${DISK}p2"
@ -16,6 +20,6 @@ LOOP_DEVICE="$(losetup -f --show -o "$FS_OFFSET" "$PARTITION")"
e2fsck -y -f "$LOOP_DEVICE"
resize2fs "$LOOP_DEVICE"
rm -f /etc/uci-defaults/99-resize-disk.sh
touch "$FLAG_FILE"
reboot
# reboot

View File

@ -1,12 +0,0 @@
all: bpi-r3
bpi-r3:
$(MAKE) \
OPENWRT_VERSION="23.05.0-rc3" \
IMAGEBUILDER_URL=https://downloads.openwrt.org/releases/23.05.0-rc3/targets/mediatek/filogic/openwrt-imagebuilder-23.05.0-rc3-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

View File

@ -2,7 +2,7 @@ all: rpi-4 rpi-3
rpi-4:
$(MAKE) \
ADDITIONAL_INSTALL="install-rpi-network-config install-rpi-uci-defaults" \
ADDITIONAL_INSTALL="" \
OPENWRT_TARGET="bcm27xx/bcm2711" \
EMISSARY_ARCH="arm64" \
OPENWRT_PROFILE="rpi-4" \
@ -10,7 +10,7 @@ rpi-4:
rpi-3:
$(MAKE) \
ADDITIONAL_INSTALL="install-rpi-network-config install-rpi-uci-defaults" \
ADDITIONAL_INSTALL="" \
OPENWRT_TARGET="bcm27xx/bcm2710" \
EMISSARY_ARCH="arm64" \
OPENWRT_PROFILE="rpi-3" \

View File

@ -5,7 +5,7 @@ turris: omnia
omnia:
$(MAKE) \
ADDITIONAL_INSTALL="install-turris-omnia-uci-defaults" \
ADDITIONAL_OPENWRT_PACKAGES="losetup squashfs-tools-unsquashfs resize2fs e2fsprogs parted block-mount" \
ADDITIONAL_OPENWRT_PACKAGES="losetup squashfs-tools-unsquashfs resize2fs e2fsprogs parted" \
OPENWRT_TARGET="mvebu/cortexa9" \
EMISSARY_ARCH="armv7" \
OPENWRT_PROFILE="cznic_turris-omnia" \