Pour un projet spécifique mettant en œuvre des ordinateurs « kiosques » accessibles au public, on m’a demandé de trouver et d’installer un système d’exploitation avec uniquement un navigateur web devant se connecter à une page Web afin d’afficher différents liens.
Objectif : avoir un système linux basique et verrouillé fait pour les écrans tactiles. La configuration principale devrait être, si possible, centralisée.
J’ai fait quelques recherches et j’ai finalement trouvé une distribution linux pour ce genre d’utilisation : Porteus Kiosk
Il en existe d’autres, mais elles ne sont pas pertinentes, pas maintenues ou dépassées.
Table of Contents
Porteus Kiosk
Porteus Kiosk est un système d’exploitation Linux spécifique pour les kiosques. Vous pouvez centraliser la configuration et installer des paquets grâce aux paquets xzm. Il est basé sur slackware.
Vous pouvez télécharger plusieurs images (support UEFI, BIOS normal ou custom build). La « custom build » sert à montrer quelle configuration spécifique pourrait être faite et c’est plus une « preuve de concept » afin de contacter l’équipe pour faire une configuration adaptée à vos besoins, ce service n’est pas gratuit.
Le principal avantage de cette distribution est que vous pouvez « centraliser » un fichier de configuration. Ainsi, à chaque fois que l’ordinateur est lancé, il va lire et lancer le fichier de configuration centralisé et modifier ses paramètres. Vous pouvez modifier le temps d’inactivité, le type de connexion, le type de navigateur (firefox ou chrome), la page d’accueil, etc.
Pour les deux navigateurs (firefox ou chrome), vous pouvez changer la page d’accueil par défaut
Un exemple avec Chrome :
connection=wired network_interface=eth0 dhcp=yes proxy= browser=chrome enable_dpms=yes homepage=http://pascal-mietlicki.fr browser_idle=10 primary_keyboard_layout=fr hide_mouse=no kiosk_config=http://kiosk.pascal-mietlicki.fr/porteus/global.txt allow_popup_windows=yes suspend_idle=10 screen_rotate=left screen_saver_idle=15 timezone=Pacific/Noumea whitelist=nc gouv.fr noumea.nc wake_on_lan=yes zRAM=50% additional_components=uefi.zip
Un exemple avec Firefox :
connection=wired network_interface=eth0 dhcp=yes proxy= browser=firefox enable_dpms=yes homepage=http://pascal-mietlicki.fr browser_idle=60 primary_keyboard_layout=fr disable_navigation_bar=no disable_address_bar=yes kiosk_config=http://kiosk.pascal-mietlicki.fr/porteus/global.txt allow_popup_windows=yes suspend_idle=10 screen_saver_idle=5 shutdown_combination=yes timezone=Pacific/Noumea whitelist=nc noumea.nc zRAM=50% additional_components=05-flash_legacy.xzm
Veuillez noter que vous pouvez désactiver directement la barre d’adresse ou la barre de navigation dans Firefox avec la configuration centrale de porteus kiosk.
Si vous souhaitez activer SSH, vous devrez définir le mot de passe root et ajouter un composant supplémentaire :
root_password=password additional_components=uefi.zip 08-ssh.xzm
Personnaliser la configuration
Si vous voulez faciliter le processus, vous pouvez faire un don à l’équipe de porteus et, normalement, ils construiront une version personnalisée pour vous. Vous pouvez avoir un aperçu de ce qui est possible (adobe reader, skype, etc.) en utilisant l’image personnalisée disponible au téléchargement.
Je n’ai pas essayé d’utiliser ou d’installer un paquet porteus ou slackware (commande txz2xzm ?) dans kiosk. Peut-être que cela pourrait fonctionner. Vous pouvez, apparemment, utiliser openbox et tint2 pour faire une petite interface graphique.
Au lieu de cela, j’ai essayé d’utiliser et de modifier les paquets xzm que vous pouvez déjà trouver dans les fichiers iso fournis. Pour votre information, la plupart des scripts se trouvent dans /opt/porteus-scripts.
Décompresser l’iso
mkdir custom cp - a /mnt/cdrom/* custom/
Vous trouverez alors tous les fichiers et paquets du système dans le dossier « xzm ».
Vous pouvez également utiliser cette commande pour décompresser les fichiers iso :
7z x Porteus-Kiosk-3.4.0-i486.iso
Effectuez vos modifications
Dans ce dossier, vous trouverez différents fichiers intéressants. Les plus intéressants sont dans « settings.xzm », ce paquet contient la plupart des fichiers système et c’est là que vous pouvez faire beaucoup de modifications. Pour le décompresser, utilisez unsquashfs, par exemple :
unsquashfs 003-settings.xzm
Les chemins intéressants dans mon scénario d’utilisation sont :
/home/guest /opt/porteus-scripts
Pour firefox
Vous pouvez modifier le profil dans /home/guest/.mozilla, je vous suggère d’essayer d’implémenter la fonction autoconfig pour centraliser la configuration et pouvoir ajouter de nouveaux modules complémentaires à volonté.
Si vous voulez créer un profil « modèle » pour firefox, copiez le profil par défaut dans ce dossier, lancez firefox avec ce profil porteus par défaut, faites vos modifications (paramètres, add-ons) et ensuite écrasez-le.
Pour chrome
Installez-le sous votre distribution linux préférée :
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
Copiez le dossier /home/guest/.config/google-chrome dans votre dossier personnel puis lancez google-chrome.
Faites toutes les modifications nécessaires, par exemple, j’ai changé les paramètres de langue en français et j’ai installé :
- Virtual Keyboard
- Google Input Tools
- vTabs or Vertabs
Vous pouvez également modifier des paramètres très spécifiques dans Chrome en tapant dans la barre d’adresse (plus d’informations ici) :
about:flags
Une fois terminé, écrasez le nouveau profil. Et assurez-vous que le propriétaire du dossier n’est pas root !
Mode Kiosque
Chrome est livré avec un mode kiosque (sans barre d’adresse ni onglets), en ajoutant le paramètre « –kiosk ». Si vous voulez l’activer sous Porteus kiosk, vous devrez ajouter dans /home/guest/.mozilla/firefox/c3pp43bg.default/chrome/userChrome.css (à la ligne « @namespace url(« http://www.mozilla.org/keymaster/gatekeeper/there…. ») :
statuspanel { display:none!important; }
Avec cette ligne, le mode kiosque sera automatiquement géré par le script gui de porteus.
Créer un nouvel xzm
Une fois que vous avez terminé vos modifications, pour créer le nouveau xzm modifié, utilisez :
mksquashfs settings/ 003-settings.xzm -comp xz -b 256K -Xbcj x86 -noappend
Monter l’iso
Les instructions sont disponibles sur le site web de Porteus.
mkdir /tmp/kiosk_ISO mount -o loop kiosk.iso /mnt/cdrom
Copier les fichiers
cp -a /mnt/cdrom/* /tmp/kiosk_ISO/ umount /mnt/cdrom
Ecraser le xzm
Copiez votre xzm modifié dans l’iso par défaut :
mv 003-settings.xzm /tmp/kiosk_ISO/xzm/
Créer le nouvel iso
mkisofs -o ../Porteus-Kiosk.iso -l -J -joliet-long -R -D -A "Porteus-Kiosk" -V "Porteus-Kiosk" -no-emul-boot -boot-info-table -boot-load-size 4 -b boot/isolinux/isolinux.bin -c boot/isolinux/isolinux.boot $efi .
Pour le flasher sur une clé USB (adapter sdb au périphérique réel de votre USB) :
dd if=Porteus-Kiosk.iso of=/dev/sdb
Débogage
Lorsque vous essayez de voir les résultats et les journaux sous SSH, vous voudrez lancer le navigateur pour voir si tout fonctionne bien. Changez l’affichage pour le faire :
DISPLAY=:0.0 /usr/bin/chrome --kiosk http://pascal-mietlicki.fr
Rotation de l’écran
Si vous souhaitez faire pivoter l’écran, vous trouverez des informations sur : https://wiki.ubuntu.com/X/InputCoordinateTransform…
Par exemple, avec une rotation à gauche, j’ai dû utiliser cette commande xinput :
DISPLAY=:0.0 xinput set-prop 'Quanta OpticalTouchScreen' 'Coordinate Transformation Matrix' 0 -1 1 1 0 0 0 0 1
Si vous voulez l’intégrer dans vos fichiers ISO, vous pouvez normalement utiliser /etc/rc.local que vous devez rendre exécutable avant (avec chmod +x rc.local). Dans rc.local, vous pouvez utiliser « guiexec=scriptaftergui » ou « cliexec=scriptbeforegui ».
Si cela ne fonctionne pas, vous pouvez ajouter un fichier dans etc/X11/xorg.conf.d appelé 99-calibration.conf par exemple avec :
Section "InputClass" Identifier "RotateTouchCW" MatchProduct "Quanta OpticalTouchScreen" Option "TransformationMatrix" "0 -1 1 1 0 0 0 0 1" EndSection
Ajouter des scripts
Tous les scripts de porteus se trouvent dans le dossier : /opt/porteus-scripts
Le script principal qui lance firefox ou chrome est appelé « gui-app » donc vous pouvez le modifier si vous voulez ajouter des options comme « –allow-running-insecure-content », etc.