aboutsummaryrefslogtreecommitdiff
path: root/source/blog/2016-06-04-Mode-kiosk-sur-une-Raspberry-Pi-1.md
diff options
context:
space:
mode:
authorneodarz <neodarz@neodarz.net>2017-05-04 03:27:33 +0200
committerneodarz <neodarz@neodarz.net>2017-05-04 03:27:33 +0200
commit785bde84dd4888817bb9825ba5ab388ec2b7c4b7 (patch)
treeeb572026c9c953dbd67e3acc2104db11117b4e5f /source/blog/2016-06-04-Mode-kiosk-sur-une-Raspberry-Pi-1.md
parent15c05dbb86fe3d98ec6e6ebe7743fd85b860dcc6 (diff)
downloadmy_new_personal_website-785bde84dd4888817bb9825ba5ab388ec2b7c4b7.tar.xz
my_new_personal_website-785bde84dd4888817bb9825ba5ab388ec2b7c4b7.zip
Update to date
Diffstat (limited to '')
-rw-r--r--source/blog/2016-06-04-Mode-kiosk-sur-une-Raspberry-Pi-1.md140
1 files changed, 140 insertions, 0 deletions
diff --git a/source/blog/2016-06-04-Mode-kiosk-sur-une-Raspberry-Pi-1.md b/source/blog/2016-06-04-Mode-kiosk-sur-une-Raspberry-Pi-1.md
new file mode 100644
index 00000000..8944f5b1
--- /dev/null
+++ b/source/blog/2016-06-04-Mode-kiosk-sur-une-Raspberry-Pi-1.md
@@ -0,0 +1,140 @@
+---
+title: "Mode kiosk sur une Raspberry Pi 1"
+date: 2016-06-04T00:37:05+02:00
+date_display: Jun 04, 2016
+---
+
+# Mise en place du système
+
+Pour l'un de mes stages il y a quelques semaines, je devais réaliser un écran connecté afin de faire un show room pour une entreprise mais le matériel fournis étant une Raspberry Pi 1, je me suis tout de suite douté qu'il risquait d'avoir des problèmes de performances. De plus pour faire cet écran connecté, le chef de projet avait décidé de le faire en web, peut être qu'il aurait été préférable de le faire avec une autre techno, je ne sais pas car je n'ai pas étudié la question.
+
+Mais des problèmes de performances, oh que oui j'en ai rencontrés !
+
+Pour commencer, je ne connaissais pas les configurations déjà présentes sur la carte et dès que j'ai commencé à mettre en un peu de JS dans mon code pour la page web, le navigateur n'a pas arrété de crasher au démarrage de la rasp.
+
+Bon, après le changement de la conf sur plusieurs navigateurs, de changement de gestionnaire de fenêtre j'ai ai eu marre et j'ai décidé de changer directement de distribution. Ah oui, car la rasp était de base sur une raspbian, alors j'ai installé un archlinux dessus et depuis elle va beaucoup mieux, par contre je ne vous cache pas que le JS est toujours lent mais fonctionnel.
+
+EDIT: tinycorelinux aurait pus être une alternative aussi...
+
+Pour l'installation d'Archlinux, pas besoin d'expliquer comment faire, la doc sur leur site est très bien mais je vous mets quand même un [lien](https://archlinuxarm.org/platforms/armv6/raspberry-pi/#installation) car je suis gentil. ;)
+
+---------------------
+
+{{icon>exclamation-triangle?128&color=#D16900}} Avant d'aller plus loin, je vous conseille viviement de changer les mots de passe des comptes `root` et `alarm` !
+
+---------------------
+
+Après l'installation, j'ai dû installer quelques paquets, que voici :
+
+Pour la partie graphique :
+
+ * xorg-server
+ * xorg-xinit
+ * matchbox-window-manager
+ * xf86-video-fbdev
+ * xorg-xset
+ * fbset
+ * xwit (aur)
+
+Et pour la partie serveur web :
+
+ * php
+ * php-apache
+ * php-mcrypt
+ * apache
+
+# Mise en place du démarrage automatique du navigateur lors de la connexion
+
+Bon avant d'automatiser le tout nous allons faire en sorte que notre interface graphique démarre sans encombre. Pour ça nous allons créer le fichier `.xinitrc` ou le modifier si celui-ci est déja présent, voila à quoi ressemble mon fichier de conf:
+
+```sh
+#!/bin/sh
+while true; do
+ # Disable DPMS / Screen blanking
+ xset -dpms
+ xset s off
+
+ # Reset the framebuffer's colour-depth
+ fbset -depth $( cat /sys/module/*fb*/parameters/fbdepth );
+
+ # Hide the cursor (move it to the bottom-right, comment out if you want mouse interaction)
+ xwit -root -warp $( cat /sys/module/*fb*/parameters/fbwidth ) $( cat /sys/module/*fb*/parameters/fbheight )
+
+ # Démarre le gestionnaire de fenétre (suprimer "-use_cursor no" si vous vouler l'intégration de la souris)
+ matchbox-window-manager -use_titlebar no -use_cursor no &
+ midori -a http://127.0.0.1/Magpie-box -e Fullscreen
+done;
+```
+
+Je précise que dans le cas actuel ma boucle permet de redémarer le navigateur en cas de crash de celui-ci au cas où...
+Et pour démarrer cette interface graphique un simple coup de `startx` et c'est plié.
+
+# Configuration du navigateur
+
+On va s'occuper de l'étape où j'ai passé la plus part de mon temps, la configuration du navigateur. Car après m'être littéralement battu avec eux j'ai enfin trouvé la solution ! Sur la Raspberry Pi 1 seulement midori et firefox pouvaient tourner mais le problème est le suivant :
+
+ * Midori prend peu de ressources mais a quelques soucis avec le javascript;
+ * Firefox gère très bien le javascript mais prend trop de ressources pour la rasp -- je parle du cas où il y a des images plutôt lourdes à charger, ce qui était mon cas pour le projet malheureusement :/
+
+Midori pose aussi problème lorsqu'on éteint et qu'on redémmare la rasp de manière brutale, physiquement, le navigateur tente de recharger l'onglet fermé mais n'y arrive pas et du coup il faut rafraichir la page à la main mais je n'ai pas trouvé le moyen de désactiver ce fichu plugin malheureusement.
+
+Donc j'ai opté pour firefox, par contre le mode kiosk n'est possible qu'en installant un plugin et cela ce fait de manière graphique, je n'ai pas encore regardé pour le faire via le terminal. Il faut commencer par modifier la config en tapant dans la bar d'adresse `about:config` et approuver qu'on ne va pas tout casser. Après on change l'option de vérifiction de la signature du plugin de true à false : je ne comprends pas trop
+
+```
+xpinstall.signatures.required false
+```
+
+Et maintenant on installe le [plugin](https://github.com/NeodarZ/r-kiosk/blob/master/build/r_kiosk.xpi).
+
+EDIT: luakit est une alternative à ne pas écarter mais [qutebrowser](https://qutebrowser.org) semble être une meilleur alternative... ;)
+
+## Configuration du serveur web
+
+Une fois ceci configuré, il faut configurer le serveur web pour qu'il soit compatible avec php7, pour cela il faut éditer le fichier `/etc/httpd/conf/httpd.conf` et commenter la ligne suivante :
+
+```
+LoadModule mpm_event_module modules/mod_mpm_event.so
+```
+
+Afin de décommenter la ligne suivante :
+
+
+```
+LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
+```
+
+Ah et ne pas oublier de rajouter cette ligne à la fin :
+
+```
+Include conf/extra/php7_module.conf
+```
+
+## Mise en place de la connection automatique
+
+Maintenant que notre interface graphique démarre tranquillement, on va pouvoir automatiser le tout, pour cela on va commencer par faire en sorte que la connection soit automatique pour cela on crée le dossier suivant : `/etc/systemd/system/getty@tty1.service.d/`
+
+Et enfin créer et modifier le fichier suivant : `/etc/systemd/system/getty@tty1.service.d/override.conf` :
+
+```
+[Service]
+ExecStart=
+ExecStart=-/sbin/agetty --autologin alarm --noclear %I 38400 linux
+```
+
+On peut remarquer que j'ai mis deux fois `ExecStart=`, ce n'est pas une erreur, c'est juste que ma rasp ne voulait pas booter automatiquement avec un seul alors qu'avec deux, c'était nickel... Aller savoir pourquoi ^^
+
+Bon maintenant que notre session se lance il va faloir faire en sorte que notre belle interface graphique se lance toute seule comme une grande, alors pour ça il faut commencer par copier le fichier suivant : `/etc/skel/.bash_profile` et ajouter à la fin :
+
+```sh
+[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
+```
+
+Et là on se dit, oui c'est fini ! Et bien non ! :p
+Ce serait trop facile. Pour faire simple, il faut juste autoriser n'importe quel utilisateur à lancer le serveur Xorg. Pour cela il vous faut créer et modifier le fichier `/etc/X11/Xwrapper.config` et ajouter cette ligne :
+
+```
+allowed_users=anybody
+```
+
+Et voila maintenant c'est bon, nous pouvons profiter de notre mode kiosk fraichement installé ! ;)
+Personnellement je ne vous cache pas que je me suis battu avec la conf de mon navigateur qui finalement démarre sans trop de difficulté...