Porteus Kiosk – un linux verrouillé pour l’accès public

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.

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.

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é :

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.