L’Internet des Objets
13.4 Installation alternative
Un des problèmes de la méthode officielle, c’est qu’il faut passer par une modification du système, soit en modifiant le système de fichiers, soit en utilisant un clavier et un écran au début de la vie du système.
Il existe d’autres méthodes qui peuvent fonctionner pendant un certain temps avant que le gestionnaire ne se décourage et que les modifications matérielles rendent caduques la méthode.
13.4.1 pi-gen
L’outil utilisé actuellement pour générer les images pour le Rasberry PI est pigen.
Pour le récupérer, il faut utiliser git :
git clone https://github.com/RPi-Distro/pi-gen.git
La documentation indique une liste de logiciels à installer.
apt install coreutils quilt parted qemu-user-static \ debootstrap zerofree zip dosfstools bsdtar libcap2-bin \ grep rsync xz-utils file git curl bc
Pour tester, il est possible de lancer la création de l’image. Au bout d’un certain temps, il est possible de récupérer l’image produite. L’ensemble utilise environ 50Go. Le log est disponible dans le fichier work/.../build.log. Il faut préciser le nom choisi pour la distribution, éventuellement sur la ligne de commande :
IMG_NAME=afbian ./build.sh
Les logs sont horodatés, donc on peut voir que la compilation a duré 2H30 environ.
[14:55:36] Begin /home/arno/pi-gen ... [17:18:14] End /home/arno/pi-gen
Les images sont :
- 7G
-
2020-11-12-afbian-full.img
- 3.1G
-
2020-11-12-afbian.img
- 1.3G
-
2020-11-12-afbian-lite.img
Le gros intérêt consiste à générer des systèmes adapté à l’usage souhaité. Pour commencer, il faut créer un fichier config
13.4.2 Fichiers et explications
Pour installer, il faut installer les paquets suivants :
apt install coreutils quilt parted qemu-user-static debootstrap zerofree zip \ dosfstools bsdtar libcap2-bin grep rsync xz-utils file git curl
13.4.2.1 Le fichier depends
Le fichier depends liste les paquets à installer, le format est le nom du programme, deux-points, le nom du paquet debian.
quilt parted realpath:coreutils qemu-arm-static:qemu-user-static debootstrap zerofree zip mkdosfs:dosfstools capsh:libcap2-bin bsdtar grep rsync xz:xz-utils curl xxd file git lsmod:kmod
Va savoir pourquoi, mais les paquets doivent exister sur le système hôte... Il faut aussi avoir récupéré les fichiers par git
13.4.2.2 Le fichier config
ce fichier sera sourcé par le progamme de lancement, il contient les définitions suivantes :
- IMG_NAME
-
peut être raspbian, mais peut être adaptée ;
- DEPLOY_ZIP
-
créé des ZIP (1) ou pas (0)
- USE_QEMU
-
Créé une image adapté pour qemu (1)
- FIRST_USER_NAME
-
(Default : ”pi” )
Username for the first user
- FIRST_USER_PASS
-
(Default : ”raspberry”) Password for the first user
- WiFi
-
WPA_ESSID, WPA_PASSWORD and WPA_COUNTRY (Default : unset) If these are set, they are use to configure wpa_supplicant.conf, so that the raspberry pi can automatically connect to a wifi network on first boot.
- ssh
-
ENABLE_SSH (Default : 0)
Setting to 1 will enable ssh server for remote log in. Note that if you are using a common password such as the defaults there is a high risk of attackers taking over you RaspberryPi.
- Étapes
-
STAGE_LIST (Default : stage*)
If set, then instead of working through the numeric stages in order, this list will be followed. For example setting to stage0 stage1 mystage stage2 will run the contents of mystage before stage2. An absolute or relative path can be given for stages outside the pi-gen directory.
IMG_NAME=Afbian FIRST_USER_NAME=arno FIRST_USER_PASS=pwd ENABLE_SSH=1 DEPLOY_ZIP=0 USE_QEMU=1 STAGE_LIST="stage0 stage1 stage2" KEYBOARD_LAYOUT=fr WPA_ESSID=ssid WPA_PASSWORD=motdepasse LOCALE_DEFAULT=fr_FR.UTF-8 TIMEZONE_DEFAULT=Europe/Paris
Les variables :
ROOTFS_DIR LOCALE_DEFAULT APT_PROXY KEYBOARD_KEYMAP KEYBOARD_LAYOUT WPA_ESSID WPA_PASSWORD TIMEZONE_DEFAULT
13.4.3 La création
Les étapes sont :
- stage0
-
bootstrap
- stage1
-
système le plus minimaliste
- stage2
-
système lite
- stage3
-
desktop
- stage4
-
Système complet (plein de logiciels)
- stage5
-
Encore plus.
13.4.3.1 Bootstrap
Définition de :
-
1. sources de paquets (apt) ;
-
2. locales adapter en français ;
locales locales/locales_to_be_generated multiselect fr_FR.UTF-8 UTF-8 # Default locale for the system environment: # Choices: None, C.UTF-8, en_GB.UTF-8 locales locales/default_environment_locale select fr_FR.UTF-8
-
3. les paquets de firmware RPi.
13.4.3.2 système minimal
-
1. 00-boot-files
-
• contient les fichiers cmdline.txt et config.txt
-
-
2. 01-sys-tweaks
-
• change le bashrc
-
-
3. 02-net-tweaks
-
• contient le hostname (deux fichiers) ;
-
-
4. 03-install-packages
-
• les paquets dédiés RPi
-
13.4.3.3 Système léger
-
1. copies-and-fills
-
2. sys-tweaks
-
• retaille le système de fichiers
-
• le fichier rc.local
-
• debconf pour le clavier
-
• modifie cmdline
-
-
3. net-tweaks
-
• paquets réseaux
-
• réglage de wpasupplicant si besoin
-
• ajout dhcpcd
-
-
4. accept-mathematica-eula
-
5. set-timezone
-
• remplacer londres par paris
-