Forum Linux.noyau Création d'une distri personnalisé légère pour projet

Posté par . Licence CC by-sa.
Tags : aucun
4
9
mar.
2019

Bonjour,
Travaillant actuellement sur un projet basé sur Linux, destiné à tourner sur un Raspberry Pi, qui n'exécuteras qu'une seule application.

Je me posais la question de la création d'un OS ultra léger, contenant uniquement les éléments dont j'ai besoin, qui se lancerais à la manière du firmware de la Freebox (basé sur Linux).

C'est a dire qu'au lancement du hardware, soit affiché simplement le nom du projet, la recherche de mise a jour, les étapes de l'initialisation, et qu'une fois prêt, mon application (sûrement développer en Java) soit exécuté en fullscreen sans possibilité de la fermer.

Jai trouvé des projets du type Linux Fromage Scratch ou d'autres qui parte d'une distribution, en copie le contenu minimal et la compile.

Ma question est : suis je sur la bonne voie? Je fait appel à ceux qui ont déjà réalisé ce type d'opération pour me conseiller par leur vécu ou ceux qui ont déjà utilisé la méthode Linux From Scratch pour me dire si cela me permettrait de réaliser ce que je souhaite.

D'autres idée peut-être ?

Cordialement.

  • # Kancoillote linux jurassien édition

    Posté par . Évalué à 5.

    Elle derive de linux fromage scratch. Franchement, tu peux partir d'une distrib existante, viré ce dont tu n'as pas besoin et créer ton soft sur wayland x11 ou fb

  • # Plus simple...

    Posté par . Évalué à 9.

    Salut,

    Plutôt que de partir sur Linux From Scratch dont l'étude est en soi déjà un sacré gros projet, tu devrais plutôt te tourner vers une distribution minimale pour ton Raspberry Pi.

    Au hasard, outre Raspbian qui propose une version "lite", tu peux jeter un œil sur Minibian ou sur DietPi.

    Les trois sont basées sur Debian. Tu pourras donc utiliser les outils APT pour bidouiller tes packages et installer ta JVM, alors qu'avec LFS tu dois faire tout ça à la mano.

    Ensuite, peut-être que si tu nous parlais un peu plus de ton projet, on pourrait raffiner un peu les réponses…

    • [^] # Re: Plus simple...

      Posté par (page perso) . Évalué à 6.

      Bien d'accord. Il est très simple de créer un session X en plein écran pour une seule application, c'est ce que j'ai fait pour un kiosque internet.

      ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

    • [^] # Re: Plus simple...

      Posté par . Évalué à 1.

      Salut :)

      Je crois que son projet est super clair. Enfin, j'espère avoir compris :p

      Je reformule :
      - Étape 1 : savoir créer une distribution linux modée,
      - Étape 2 : savoir installer la distribution modée sur le matériel choisi,
      - Étape 3 : savoir lancer un seul et unique process (masquer le boot, puis une fois linux lancé, interdire les autres applis).

      L'étude de LFS (et du comportement du noyau au boot) peut permettre d'identifier les points importants.

      En fait, tout ce qu'il manque, c'est le temps dans lequel ce projet s'inscrit.

      Si c'est un projet à rendre pour hier, alors oui c'est un peu court pour apprendre le boot linux et LFS et se baser sur de l'existant à coups de copier/coller peut faire le boulot.

      Si c'est pour après demain, c'est différent.

      • [^] # Re: Plus simple...

        Posté par . Évalué à 5.

        Moi ce que j’en ai compris, c'est qu'il se pose la question de la création d'un OS ultra léger sans forcément être sûr que ce soit la bonne voie.

        Je n'ai vu nulle part l'expression d'une volonté d'apprendre à créer sa propre distro basée sur LFS.

        Par contre, il lui faut une sorte de lanceur basique pour une application de son cru, peut-être en Java, ou peut-être pas. Ce qui peut tout à fait être fait en partant sur une Raspbian.

        Ce que l'on ne sait pas par contre c'est s'il a besoin d'une interface graphique ou pas, quelles sont les interactions de son Raspberry avec le monde extérieur (capteurs, relais, … ou uniquement software ? contraintes physiques ? …), quel type de Raspberry il envisage, quels délais, quel est son niveau de connaissance Linux, … toussa quoi.

        L'idée c'est de vérifier l'adéquation projet / hardware / software pour pouvoir le conseiller au mieux.

    • [^] # Re: Plus simple...

      Posté par . Évalué à 2.

      je ne suis même pas sûr si linux est le meilleur OS pour ce type de projet.
      Le projet ressemble à la création d'une "appliance", type netapp, datadomain etc…
      Pour ma part, je partirai plutôt par un BSD, plutôt FreeBSD pour sa relative simplicité par rapport aux autres, ou NetBSD , pour sa portabilité.

      • [^] # Re: Plus simple...

        Posté par . Évalué à 0.

        Un FreeBSD pourrait effectivement être une voie à creuser, surtout pour bénéficier de la licence BSD permissive en cas d'utilisation commerciale de son projet.

        • [^] # Re: Plus simple...

          Posté par . Évalué à 1.

          J'admets avoir répondu un peu trop hâtivement dans mon commentaire du dessous, méconnaissant les distribution BSD.

          Après un peu de recherche, cela peut effectivement être une meilleur solution que Linux: mon projet n'est pas à la base commercial, c'est un projet loisir/pédagogique pour moi et pour ceux que j'ai recruté dans la famille pour faire l'apprenti graphiste et auteur de jeu de société.

          Si BSD me permet de réalisé à bien la totalité du projet, pourquoi pas? Je vais me renseigner sur cet alternative intéressante.

          Mais on garde forcément à l'esprit en tant que Geek qu'un jour, un projet lambda peut devenir un projet phénomène ^

    • [^] # Re: Plus simple...

      Posté par . Évalué à 2.

      Soyons pragmatique, moi j'installerai une Raspbian Lite, bien standard et éprouvée, je doute que tu aies besoin d'un système plus otimisé. Du moins au vu des précisions apportées plus bas sur le but recherché.

  • # unikernel ?

    Posté par (page perso) . Évalué à 3.

    à côté des VMs et des containers, il y a les unikernels

    quelques liens

    https://github.com/cetic/unikernels

    https://blog.alexellis.io/boot-linuxkit-in-10-mins/

    https://jmkhael.io/moby-and-linuxkit-building-a-custom-minimal-immutable-linux-distributions/

    My father was a Brexit negotiator and his father before him

  • # Good!

    Posté par . Évalué à 1. Dernière modification le 10/03/19 à 16:41.

    Elle derive de linux fromage scratch. Franchement, tu peux partir d'une distrib existante, viré ce dont tu n'as pas besoin et créer ton soft sur wayland x11 ou fb

    Fromage… Vive la correction ortographique.

    De prime abord, je pense que c'est une très bonne piste: en fouinant dans les menus de la Freebox, je suis tombé sur les licences de Wayland et police d'Ubuntu…

    Salut,
    Plutôt que de partir sur Linux From Scratch dont l'étude est en soi déjà un sacré gros projet, tu devrais plutôt te tourner vers une distribution minimale pour ton Raspberry Pi.

    Effectivement, plus je cherche, plus je me dis que LFS, c'est pas pour ce projet.

    En fait, tout ce qu'il manque, c'est le temps dans lequel ce projet s'inscrit.

    Je ne suis pas à la seconde du tout, c'est pour un projet "personnel" (je prog en passe-temps).

    En fait le projet est de créer une "plateforme" de jeux de société sur lesquels des téléphones se connecterais pour jouer en famille, afin de rallier les Geek qui squattes le téléphones et ceux qui adorent les moments en famille autour d'un jeu de société.

    je ne suis même pas sûr si linux est le meilleur OS pour ce type de projet.
    Le projet ressemble à la création d'une "appliance", type netapp, datadomain etc…
    Pour ma part, je partirai plutôt par un BSD, plutôt FreeBSD pour sa relative simplicité par rapport aux autres, ou NetBSD , pour sa portabilité.

    Pour compléter donc, le projet sera en fait une grosse app installé sur une RPi, donc je penches plus pour du Linux.

    Merci à tous, si d'autres idées viennent suite à ces compléments, je suis preneur, et je ferais un retour dès que j'aurais créé quelquechose :)

  • # Buildroot / Yocto

    Posté par . Évalué à 4. Dernière modification le 10/03/19 à 17:18.

    C'est peut-être l'occasion de jouer avec Buildroot et Yocto.

    Les deux ont le meme but : te permettre de générer une image sur mesure, prête à booter. Dedans tu y embarqueras toutes les libs nécessaires à faire tourner ton appli.

    Attention, il ne s'agit pas d'une distribution, c'est à dire que tu n'auras pas ensuite un système de paquet ou de mises à jour. Si tu veux modifier quelque-chose, tu devras générer une autre image.

    On pourrait comparer à une espèce de LFS automatisé (bcp plus rapide à mettre en œuvre en tous cas).

    Pour finir, Buildroot est le plus simple d'accès des deux, commence par lui.

    En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

    • [^] # Re: Buildroot / Yocto

      Posté par . Évalué à 2.

      Dans la première phase de développement je comptais de toute les manières commencer par l'appli en elle-même, afin d'avoir quelque-chose de viable, même s'il me faut pour le lancer, booter linux et lancer l'appli.

      ça me permet de voir du concret rapidement, c'est bon pour le moral, plutôt que de bosser sur toutes les bases, sans voir ce que sera finalement mon appli. Et dans ce cas du coup ça me permettrait de savoir exactement les libs dont j'ai besoin pour faire tourner l'appli.

      Après l'inconvénient que je trouves à cette solution dans mon projet c'est que je compte faire régulièrement des mises à jour automatique pendant le boot par des git (correctif/ajout de jeux). L'image est littéralement figé avec ce système? ou simplement les sources et j'ai quand-même la possibilité d'automatiser la création/modification de fichiers?

      • [^] # Re: Buildroot / Yocto

        Posté par . Évalué à 2.

        L'image est "normale", c'est un système Linux standard, tu es donc seul maître à bord, tu fais ce que tu veux. Tu peux donc imaginer dans créer toi-même un système de mise à jour et l'embarquer dans ton Linux. Tu peux faire ce que tu veux, mais c'est à toi de le faire.

        Ce que je voulais dire c'est que tu n'auras pas un "apt get" prêt à l'emploi (c'est pas une distribution, c'est un système Linux compilé sur mesure).

        Buildroot te permet en qques commandes de base de :
        - te compiler une crosstool chain (compiler arm sur une machine x86)
        - te créer un système Linux minimal (kernel, busybox, ulibc ou glibc etc.)
        - créer une image de SD card adaptée à raspberrypi (une partition MSDOS pour le bootloader et le firmware, une partition ext4 pour le système)
        - customiser tout ça à loisir, c'est à dire ajouter ton binaire, tes libs, des scripts, modifier les scripts de base (init.rc) etc.

        C'est le truc parfait pour de l'embarqué, d'ailleurs ça a été prévu exactement pour ça :)

        En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

        • [^] # Re: Buildroot / Yocto

          Posté par (page perso) . Évalué à 6.

          Ce que je voulais dire c'est que tu n'auras pas un "apt get" prêt à l'emploi (c'est pas une distribution, c'est un système Linux compilé sur mesure).

          Yocto permet de le faire, les paquets sont générés automatiquement et de manière obligatoire. Il faut juste mettre en place un serveur après pour héberger ces paquets et configurer le dépôt pour fournir la mise à jour.

          • [^] # Re: Buildroot / Yocto

            Posté par . Évalué à 1.

            Avec Yocto il a aussi moyen d'utiliser SWUpdate pour mettre à jour facilement toute l'image.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.