Compare commits
35 Commits
v2023.04.1
...
v2023.08.0
Author | SHA1 | Date | |
---|---|---|---|
bec89173c1 | |||
6f646ce7b7 | |||
9d0064ccfb | |||
3b981873cc | |||
c7465dba27 | |||
4a4232e358 | |||
250bf06367 | |||
3ca90a54a9 | |||
58d1ffc9a2 | |||
a7f3f2faea | |||
6d0e693fc4 | |||
68a1de079e | |||
7f1472f21b | |||
291ad94b15 | |||
4b181ec9e1 | |||
81360c3fda | |||
2cf46ed9a5 | |||
df763ef49a | |||
9e153e38cb | |||
9214c097b3 | |||
2339bc3aa6 | |||
908a36896e | |||
23452a06ff | |||
83f97abcbd | |||
d0f6e63007 | |||
087f8a27a8 | |||
42c157a1e5 | |||
7b722293b7 | |||
d37c10afae | |||
40d6d2df03 | |||
f70763aed7 | |||
475a807302 | |||
4e075cbd8e | |||
ed52367837 | |||
a6c32c5315 |
@ -1,5 +1,13 @@
|
||||
# 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)
|
||||
|
@ -1,16 +1,85 @@
|
||||
# Compiler un firmware
|
||||
|
||||
> TODO
|
||||
## Compiler un firmware préconfiguré
|
||||
|
||||
L'ensemble des cibles de construction préconfigurés sont disponibles dans le répertoire `targets/`.
|
||||
|
||||
Par exemple:
|
||||
|
||||
```shell
|
||||
# Exemple: construire un firmware OpenWRT
|
||||
# Télécharger localement les dernières archive du projet emissary
|
||||
make download-emissary-release
|
||||
|
||||
# Pour le routeur Linksys WRT1200AC
|
||||
# Puis...
|
||||
|
||||
# ... pour le routeur Linksys WRT1200AC
|
||||
make linksys-wrt1200ac
|
||||
|
||||
# Pour le routeur Linksys WRT1900AC
|
||||
# ... ou pour le routeur Linksys WRT1900AC
|
||||
make linksys-wrt1900ac
|
||||
|
||||
# Pourt le router Linksys WRT3200ACM
|
||||
# ... 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).
|
||||
|
||||
### 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. 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/`
|
||||
|
||||
> 🛈 **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).
|
@ -1 +1 @@
|
||||
v2023.4.13-41b1619
|
||||
v2023.6.25-42d49eb
|
||||
|
7
install/raspberrypi.mk
Normal file
7
install/raspberrypi.mk
Normal file
@ -0,0 +1,7 @@
|
||||
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/
|
37
misc/rpi/uci-defaults/99-x86-uci-custom.sh
Normal file
37
misc/rpi/uci-defaults/99-x86-uci-custom.sh
Normal file
@ -0,0 +1,37 @@
|
||||
#/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
|
9
misc/rpi/uci/network
Normal file
9
misc/rpi/uci/network
Normal file
@ -0,0 +1,9 @@
|
||||
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'
|
37
misc/turris/omnia/uci-defaults/98-turris-omnia-uci-custom.sh
Normal file
37
misc/turris/omnia/uci-defaults/98-turris-omnia-uci-custom.sh
Normal file
@ -0,0 +1,37 @@
|
||||
#/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
|
@ -2,6 +2,8 @@
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
block info
|
||||
|
||||
DISK=/dev/mmcblk0
|
||||
PARTITION="${DISK}p2"
|
||||
|
||||
@ -11,5 +13,9 @@ FS_SIZE="$(unsquashfs -s "$PARTITION" | grep -o 'Filesystem size [0-9]* bytes' |
|
||||
FS_OFFSET="$(expr '(' "$FS_SIZE" + 65535 ')' / 65536 '*' 65536)"
|
||||
LOOP_DEVICE="$(losetup -f --show -o "$FS_OFFSET" "$PARTITION")"
|
||||
|
||||
e2fsck -fy "$LOOP_DEVICE"
|
||||
e2fsck -y -f "$LOOP_DEVICE"
|
||||
resize2fs "$LOOP_DEVICE"
|
||||
|
||||
rm -f /etc/uci-defaults/99-resize-disk.sh
|
||||
|
||||
reboot
|
@ -2,7 +2,7 @@ all: rpi-4 rpi-3
|
||||
|
||||
rpi-4:
|
||||
$(MAKE) \
|
||||
ADDITIONAL_INSTALL="" \
|
||||
ADDITIONAL_INSTALL="install-rpi-network-config install-rpi-uci-defaults" \
|
||||
OPENWRT_TARGET="bcm27xx/bcm2711" \
|
||||
EMISSARY_ARCH="arm64" \
|
||||
OPENWRT_PROFILE="rpi-4" \
|
||||
@ -10,7 +10,7 @@ rpi-4:
|
||||
|
||||
rpi-3:
|
||||
$(MAKE) \
|
||||
ADDITIONAL_INSTALL="" \
|
||||
ADDITIONAL_INSTALL="install-rpi-network-config install-rpi-uci-defaults" \
|
||||
OPENWRT_TARGET="bcm27xx/bcm2710" \
|
||||
EMISSARY_ARCH="arm64" \
|
||||
OPENWRT_PROFILE="rpi-3" \
|
@ -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" \
|
||||
ADDITIONAL_OPENWRT_PACKAGES="losetup squashfs-tools-unsquashfs resize2fs e2fsprogs parted block-mount" \
|
||||
OPENWRT_TARGET="mvebu/cortexa9" \
|
||||
EMISSARY_ARCH="armv7" \
|
||||
OPENWRT_PROFILE="cznic_turris-omnia" \
|
||||
|
Reference in New Issue
Block a user