Nous assemblons des machines légères dans le but exprès d'afficher une seule page Web sur un grand écran. J'ai besoin que la machine démarre essentiellement aussi légère et aussi rapidement que possible et qu'elle exécute essentiellement un navigateur (WebKit?) En plein écran, chargeant une page qui sera contrôlée dynamiquement par JavaScript. J'utiliserai un processeur Intel D525 dual-core avec GPU intégré, donc je ne devrais pas avoir besoin de configurer de pilotes graphiques propriétaires. Une fois que j'ai installé une de ces machines correctement, je devrais simplement être en mesure de placer dd
le disque dur sur mon ordinateur et de le vider sur chaque nouvelle machine.
J'ai les questions suivantes:
Comment puis-je créer une "distribution" qui ne comprend que ce dont j'ai besoin? Je suppose que j'aurai besoin du noyau (;]), de X et d'un navigateur Web quelconque, mais pas trop. Puis-je prendre quelque chose comme Ubuntu Server et simplement installer X Server et trouver un moyen pour que la machine se connecte automatiquement, démarre X et démarre le navigateur Web, sans poser de questions? Y a-t-il un livre que je peux lire ou un article ou quelque chose?
Que puis-je utiliser pour un joli navigateur Web dépouillé qui exécute essentiellement un "chrome sans chrome"? Ces machines n'accepteront pas du tout les commentaires des utilisateurs. Si je dois les gérer, j'utiliserai SSH.
la source
Tout d'abord, vous ne voudrez peut-être pas réinventer la roue ... Il existe plusieurs distributions axées sur les kiosques. L'un d'eux pourrait vous faire économiser beaucoup de travail.
Deuxièmement, si vous connaissez Kickstart sur Fedora et RHEL (ou CentOS ou Scientific Linux), vous pouvez utiliser les outils Fedora pour faire votre propre rotation de l'une de ces distributions. La documentation est un peu dispersée, mais commencez ici .
la source
Commencez avec une distribution minimale comme Arch Linux , puis installez les packages dont vous avez besoin. Pour un simple navigateur Web, essayez Uzbl .
la source
C'est une question assez complexe, et comme votre projet n'est pas tout à fait clair, certaines de ces suggestions peuvent être hors de propos, mais considérez-les comme des choses à évaluer.
Vous n'avez peut-être pas besoin d'un navigateur Web sur un ordinateur faisant partie de la matrice d'affichage. Si vous essayez d'afficher une seule page sur plusieurs écrans, il est probable que vous souhaitiez utiliser une sorte de technologie d'affichage de masse. Il existe plusieurs variantes de Xorg qui se spécialisent dans la génération d'un grand écran à partir de périphériques vidéo sur plusieurs machines.
Même si vous utilisez des serveurs X distincts sur chaque machine, vous pouvez utiliser le transfert X pour envoyer des données d'affichage à partir d'un ou plusieurs autres ordinateurs, afin que les navigateurs n'aient toujours pas à s'exécuter localement.
Vous souhaiterez soit ne pas utiliser de gestionnaire de fenêtres du tout et utiliser les spécifications de géométrie pour lancer votre application en plein écran, soit utiliser un gestionnaire de fenêtres de tuiles ou de structure configurable (tel que
awesome
) pour gérer les fenêtres sur chaque affichage X. Ceux-ci facilitent le tri et le contrôle des fenêtres en plein écran et sont hautement scriptables.En ce qui concerne un navigateur, je pense que
uzbl
c'est probablement le choix clair.Cela pourrait être une bonne application pour le démarrage réseau. Vous pouvez configurer un serveur avec un noyau de netbook disponible via TFTP et un système de fichiers disponible via nfs. Tout ce que vos clients doivent faire est d'utiliser une carte réseau compatible Netboot pour contacter ce serveur, télécharger leur noyau et c'est parti. Aucun disque dur impliqué! Et entretien facile. Toutes les machines peuvent potentiellement démarrer la même image.
Votre "distribution" devrait probablement comprendre deux choses. 1) un ensemble de packages et 2) un ensemble de fichiers de configuration. L'ensemble de packages est une liste de packages qui doivent être installés. Cela peut généralement être assemblé dans un fichier texte et vous pouvez ensuite utiliser la plupart des gestionnaires de packages de distribution pour installer cette liste de packages sur une cible (soit un disque dur ou un répertoire qui sera votre point de montage nfs). Les fichiers de configuration devraient probablement être conservés dans
git
ou dans un autre système de contrôle de source et contenir quelques scripts et tous les mods de configuration à apporter au système de base installé avec l'ensemble de packages. Construire un nouveau système devient alors:package_manager --install-distro --package-set=/path/packagelist.txt --target=/path
cd /target/path
git clone /path/to/repo
(ou sinon récupérez votre code de configuration à la racine du système)La distribution que vous utilisez comme base devrait dépendre de ce avec quoi vous êtes le plus à l'aise. J'utiliserais PLD-Linux pour moi-même, mais je recommanderais probablement ArchLinux comme système similaire mais mieux documenté pour un débutant. Il n'y a aucune raison que Debian , Fedora ou Gentoo ne fonctionnent pas pour cela.
la source
dwm
ouawesome
. Comment puis-je dire à un gestionnaire de fenêtres de démarrer une application sans la barre de titre en mode plein écran?apt-get
ouaptitude
sur Debian.Buildroot 2016.05 + Midori
Buildroot est un excellent outil pour créer des distributions minimales:
.config
dossierMidori est un navigateur minimaliste basé sur WebKit et Buildroot a un package Midori intégré.
.config
fichier utilisé: https://github.com/cirosantilli/buildroot-configs/blob/32d1174e0bf8d00b92323eebe8901af3f8c389d3/2016.05/qemu_x86_64_x11_midori_defconfigComment générer ce fichier de configuration:
make menuconfig
mesa3d
Nettoyez la version car nous avons modifié la chaîne d'outils et compilez à nouveau:
Attendez des heures. Puis l'habituel:
Et de l'intérieur de QEMU:
et à partir de l'interface graphique X11, cliquez sur une
xterm
fenêtre et exécutez:Résultat:
Taille d'image: 220M! Comparez cela aux 28M d'un système X11 nu Comment installer X11 sur mon propre système Linux Buildroot? - Échange de pile Unix et Linux . Probablement en raison des dépendances de WebKit + GTK3.
Testé sur l'hôte Ubuntu 16.04, QEMU 2.5.0.
NetSurf
Écrit en SDL, qui prend en charge le fbdev: http://www.netsurf-browser.org/about/screenshots/#framebuffer
fbdev est une interface de niveau inférieur offerte par un module du noyau Linux qui ne passe pas par X11 (je pense que X11 peut éventuellement l'utiliser comme backend). Vous écrivez simplement dans la mémoire et cela apparaît à l'écran.
Pour utiliser fbdev sur Ubuntu, vous devez être sur un TTY (par exemple Ctrl + Alt + F1).
Vous pouvez donc probablement vous en sortir avec une image beaucoup plus petite que celle de Midori.
Buildroot 2016.05 a un package
netsurf-buildsystem
qui devrait le fournir, mais je n'ai pas testé. Si quelqu'un parvient à le faire fonctionner, veuillez le modifier dans un lien vers un .config, une capture d'écran et une taille d'image.la source
J'ai écrit un petit script bash une fois qui prend un ISO Arch Linux et génère un nouveau ISO avec une image racine modifiée qui fait une installation entièrement automatisée. Cela inclut le partitionnement ainsi que l'installation et la configuration du système avec Xorg, FVWM et Chromium. Le système installé se connectera automatiquement et démarrera Chromium. Mettez simplement la nouvelle ISO sur une clé USB et détendez-vous. ;-)
Avertissement: le script est fourni tel quel, aucune garantie n'est donnée. Je ne l'ai pas utilisé depuis un moment, il pourrait donc avoir besoin d'un ajustement ici ou là. Modifiez au besoin.
la source
Pour un système comme celui-ci, je recommanderais Puppy .
Bien que vous puissiez créer votre distribution à l'aide de n'importe quelle version de Linux, Puppy facilite la création d' images de démarrage personnalisées, est conçu pour être compact et offre une excellente prise en charge du système de fichiers de superposition.
Non - je recommanderais de construire une image amorçable que vous pouvez raisonnablement maintenir - l'approche que vous proposez reviendra et vous mordra.
la source
Plusieurs personnes ont mentionné uzbl et je suis d'accord pour dire que c'est un bon choix - mais vous trouverez peut-être encore mieux luakit .
Comme Caleb l'a déjà mentionné, vous n'avez pas vraiment besoin de gestionnaire de fenêtres. Voici un exemple de script que j'ai conçu pour exécuter un serveur Xorg sans WM avec un navigateur luakit maximisé:
Il utilise xdotool pour maximiser la fenêtre juste après le démarrage de luakit. Mais il y a peut-être une meilleure solution à cela ...
Pour la base d'un tel système, je recommanderais certainement Gentoo. Ce n'est pas seulement parce que je le connais le mieux;) mais aussi parce qu'il utilise une approche plutôt unique de gestion globale des options de construction de tous les logiciels installés. Je veux dire les drapeaux USE . En les utilisant, vous déterminez l'ensemble des fonctionnalités / bibliothèques / normes utilisées par tous les programmes qui les prennent en charge - ainsi, par exemple, si vous voulez que vos programmes utilisent ALSA et n'aient pas besoin de backends audio supplémentaires comme esd, jack ou pulseaudio, vous placez
alsa -jack -esd -pulseaudio
parmi vos drapeaux USE. Après cela, chaque logiciel que vous créez qui peututiliser des backends audio supplémentaires en dehors d'ALSA sera construit sans leur support. Comme cela se produit au niveau de la configuration / construction, vous vous retrouvez avec un logiciel beaucoup plus fin. Il s'agit donc d'une philosophie de construction (tout en respectant toutes les dépendances) au lieu de dépouiller (ce qui peut finir par être bogué et très difficile à maintenir).la source
Je mentionnerai cela parce que je suis surpris que personne d'autre ne l'ait fait.
Linux from Scratch est un livre (pdf) qui vous guide à travers la création de votre propre distribution Linux. Cela peut être exagéré pour ce que vous essayez d'accomplir (en fait, c'est parce que vous avez déjà les outils dont vous avez besoin), mais cela peut s'avérer un outil inestimable pour comprendre le fonctionnement d'un système. Ce n'est vraiment pas si difficile et aucune programmation n'est impliquée.
la source