Forum Linux.général Avoir un écran noir depuis le boot jusqu'au lancement complet

Posté par . Licence CC by-sa.
Tags : aucun
3
21
oct.
2018

Bonjour,

Je suis en train de me fabriquer un petit écran d'information pour la maison. Projet perso donc, le genre de truc qui affiche la météo, l'heure, etc.

Quand la machine boot j'aimerais que l'écran reste noir jusqu'au lancement complet des applications. En fait il y a juste une application en plein écran. C'est pour que ça ne fasse pas moche, qu'on ne voit pas les trucs systèmes et tout le bazar.

Alors j'ai déjà fait en sorte que le BIOS n'affiche rien. J'ai changé le bitmap ASUS par un bitmap intégralement noir. Si j'appuie sur TAB j'ai l'affichage détaillé, et ESC me donne accès aux réglages du BIOS normalement, donc c'est top car ça reste noir au boot mais j'ai accès à toutes les fonctions si je veux.

Pour la partie GRUB c'est bon aussi. J'ai mis GRUB_TIMEOUT_STYLE=hidden dans /etc/default/grub et ça reste tout noir. La touche ESC permet d'afficher GRUB si besoin.

Par contre pour la suite je n'ai pas trouvé comment faire.
Donc pour l'instant tout reste noir jusqu'après GRUB.

J'utilise Debian et XFCE mais je veux bien changer de DE si besoin.

J'ai essayé avec un service systemd qui se lance le plus tôt possible mais ça ne donne rien. La commande lancée est /usr/sbin/vbetool dpms off mais ça ne fait rien du tout, alors qu'en ligne de commande ça coupe l'affichage. J'ai vérifié que mon script se lance bien au boot en créant un fichier témoin lorsqu'il s'exécute (echo ${date} >> /test.txt).

J'ai aussi essayé avec un paramètre du noyau, mais rien non plus. J'ai mis video=VGA:1024x768:d mais l'affichage est toujours là.

J'en suis à imaginer de mettre un relai commandé en USB pour couper le rétroéclairage de l'écran. Si quelqu'un a une meilleure idée ça m'intéresse.

  • # quiet splash

    Posté par (page perso) . Évalué à 1 (+1/-1).

    Donc c'est quoi que tu voix encore au démarrage? Si ce sont des lignes de texte, peut être qu'en mettant cela dans /etc/default/grub (puis en lançant update-grub) ça peut s'arranger:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    Si tu ne veux pas voir le logo de la distri, tu peux essayer d'enlever "splash", mais je n'ai pas testé!

    Un LUG en Lorraine : https://enunclic-cappel.fr

  • # pistes

    Posté par . Évalué à 3 (+2/-0).

    Avec mon ordi, j'ai deux sorties sur un seul écran (chacune sur un chipset différent, le iGPU et une carte graphique, je pense pas que ça importe vraiment mais au cas où).
    Le lancement (BIOS/UEFI GRUB et init) se fait sur l'affichage 0 via DVI tandis que le serveur graphique utilise l'affichage 1 via HDMI (tout ça réglé dans Xorg.conf). Mon écran est configuré sur la source HDMI par défaut, ce qui donne un écran noir jusqu'à LightDM.
    Avec un autologin tu arriverais immédiatement sur le bureau et avec l'option d'enregistrement de session de Xfce tu as tes applis qui se relancent à leur place (par contre j'ai jamais testé en plein écran)

    Autre piste, l'écran est le deuxième affichage d'un bureau étendu. Mais c'est AMHA moins intéressant.

    Après c'est pas faisable si tu comptes utiliser l'écran intégré d'un ordi portable (ce que tu n'as pas précisé).

    • [^] # Re: pistes

      Posté par . Évalué à 1 (+0/-0).

      Après c'est pas faisable si tu comptes utiliser l'écran intégré d'un ordi portable (ce que tu n'as pas précisé).

      Justement c'est un ordi portable. Une récup dont j'ai désossé l'écran pour que ça fasse un truc propre presqu'à fleur de mur.

      Il y a peut-être moyen de dire à X qu'on a un écran bidon comme écran principal. Et donc l'écran réel est vu comme le second écran.

      • [^] # Re: pistes

        Posté par . Évalué à 1 (+0/-0).

        Je sais pas si c'est possible mais en cas de pépin durant l'init ou avec la session X tu voudras sans doute pouvoir basculer en console, même via ssh ou serial.

        Déjà vérifie ce que ça donne en mettant en place l'autologin et la restauration de session (ou un script de démarrage d'appli). Avec tes modifications actuelles, il ne resterait que les infos de démarrage de Linux à masquer (voir la réponse de ted).

        • [^] # Re: pistes

          Posté par . Évalué à 1 (+0/-0).

          Entre temps j'ai trouvé comment masquer tout jusqu'à ce que le curseur de la souris s'affiche sur fond noir.

          Il reste toute la suite de l'initialisation du DE et le lancement de l'application. Ca dure au moins 10 secondes.

          Comment fait-on pour lancer une commande au tout début du lancement de X ? Car je peux tenter de lancer un xset dpms force off à ce moment.

          • [^] # Re: pistes

            Posté par . Évalué à 4 (+2/-0).

            tout dépend de comment tu lances Xorg en fait.

            Perso, j'utilise xinit, du coup il me suffit d'un fichier $HOME/.xinitrc avec les commandes à lancer. Quand ce fichier se finit, le serveur X se ferme, ce qui implique que la dernière ne doit pas se fermer sans action de l'utilisateur, comme, par exemple, un wm.

            En pratique, c'est comme ça que font les gens qui n'utilisent pas un bureau lourd ou un gestionnaire de connexion.
            Pour l'auto-login, avec sysVinit, il suffit de modifier /etc/inittab pour que agetty démarre automatiquement une session d'un utilisateur, et que cet utilisateur aie dans son ".profile" un truc du genre test $(tty) = "/dev/tty1" && xinit.

  • # plymouth

    Posté par . Évalué à 3 (+2/-1).

    faut regarder les options "modeset" et le projet plymouth
    c'est ce dernier qui affiche actuellement un joli "visuel" apres le grub et avant la fenetre de login

    tu dois pouvoir en changer le fond pour avoir un plymouth "noir"
    peut-etre avec juste une barre de progression pour savoir ou en est le systeme quand meme.

    • [^] # Re: plymouth

      Posté par . Évalué à 1 (+0/-0).

      C'est bon, j'ai trouvé bien plus simple pour tout masquer jusqu'au lancement de l'interface graphique.
      J'en suis maintenant à trouver une solution pour masquer l'interface graphique jusqu'au bon moment.

      • [^] # Re: plymouth

        Posté par . Évalué à 3 (+1/-0).

        J'en suis maintenant à trouver une solution pour masquer l'interface graphique jusqu'au bon moment.

        autologin pour la gestion de l'utilisateur
        lancement d'appli des le login pour lancer ton appli
        les options de ton appli pour passer en plein ecran, sans option de sortie de l'utilisateur (mode kiosk sur certains navigateurs par exemple)

      • [^] # Re: plymouth

        Posté par . Évalué à 3 (+1/-0). Dernière modification le 22/10/18 à 19:49.

        à ma connaissance, seul KDE permet de faire cela :

        config de retrait du splash screen : aucun splash.
        config de lancer une session automatiquement, et de la verrouiller (attention, seul kdm sait faire, sddm tjs pas :-( .. ) donc charger tout le bureau en arrière plan automatiquement et avoir quand même une authentification nécessaire pour l'accès…

  • # la meilleure doc se trouve chez ...

    Posté par . Évalué à 3 (+1/-0). Dernière modification le 22/10/18 à 19:54.

    Gentoo, ah non j'ai vieilli, c'est chez ARCH maintenant.

    Principes de base et suffisants aujourd'hui :
    a) utiliser un grub caché (en laissant la possibilité d'accès), c'est 1s moins rapide que timeout=0 mais ça permet de continuer d'avoir accès si besoin
    b) masquer le lancement des services avec rd.systemd.show_status=false en toute dernière option de boot
    c) retirer le curseur clignotant, dernier biniou à s'afficher lors du boot, avec un vt.global_cursor_default=0 en option de boot (un vim te le fera récupérer illico..n'ai crainte : il ne disparait pas à tout jamais)

    Pendant qq temps les options (et surtout l'ordre des options) de boot de rd.systemd changeait pas mal, aujourd'hui c'est bien fixé et ça ne bouge plus.

    Perso j'ai toujours fait ça sur mes PC (et ceux de mon entourage) c'est clean et agréable. Fedora 29 passe au silent-boot par défaut, maintenant.

    A noter que pour grub, mieux vaut mieux suivre la doc de fedora 29 ( et que si tu utilises autre chose, tu devra te contenter d'un timeout=0, donc en cas de pépin de boot il faut sortir le livecd, ce qui n'est finalement pas chi**** et très rare) edit : pas vue que tu utilisais déjà l'option pour grub, désolé.

    • [^] # Re: la meilleure doc se trouve chez ...

      Posté par . Évalué à 3 (+2/-0).

      GRUB caché, déjà fait avec GRUB_TIMEOUT_STYLE=hidden.

      Masquer le lancement des services : pas utile car l'écran est déjà noir avant (consoleblank=1 comme argument du noyau). Il me suffit d'appuyer sur une touche pour voir ce qui s'affiche.

      masquer le curseur : vt.global_cursor_default=0 ne marche pas dans mon cas. J'ai utilisé vt.cur_default=1
      C'est utile uniquement pendant 1 seconde avant que le timeout de consoleblank=1 se déclenche.

  • # BIOS silencieux?

    Posté par . Évalué à 3 (+1/-0).

    Alors j'ai déjà fait en sorte que le BIOS n'affiche rien. J'ai changé le bitmap ASUS par un bitmap intégralement noir. Si j'appuie sur TAB j'ai l'affichage détaillé, et ESC me donne accès aux réglages du BIOS normalement, donc c'est top car ça reste noir au boot mais j'ai accès à toutes les fonctions si je veux.

    Une info ou un lien sur comment tu as as fait? Parce que ça, ça pourrait m'intéresser, même si c'est probablement spécifique firmware par firmware…

    • [^] # Re: BIOS silencieux?

      Posté par (page perso) . Évalué à 9 (+7/-0). Dernière modification le 22/10/18 à 23:07.

      Je répond à sa place vu que c'est moi qui me suis chargé de cette partie.

      C'est à la fois spécifique et plus ou moins général.
      - extraire le contenu du BIOS vers un fichier binaire (je ne sais plus ce que j'ai utilisé, je crois un outil sous Linux)
      - ouvrir le fichier en question avec MMTool (car c'est un BIOS AMI). J'ai galéré car les nouvelles versions ne peuvent pas lire ce vieux BIOS (eee PC)
      - localiser où se trouve le bitmap voulu. En général c'est facile, dans le présent car le bloc est nommé « EOM Logo », c'est explicite
      - extraire le bitmap (onglet « Extract »)
      - noter le format du bitmap (BMP 640x480 8 bits). Des fois c'est un truc exotique mais on y arrive facilement
      - créer le fichier BMP de ton choix avec les mêmes caractéristiques (ou pas, certains BIOS acceptent sans rechigner des résolutions ou profondeurs de couleurs plus grandes)
      - remplacer le bitmap dans l'image du BIOS (onglet « Replace »)
      - sauvegarder la nouvelle image du BIOS
      - se débrouiller pour flasher le nouveau BIOS. Parfois c'est là que c'est compliqué :-)

      Dans le cas de ce eee PC il a également fallut trouver 2 textes qui s'affichent en surimpression du bitmap. J'ai extrait un par un les blocs du BIOS, recherché avec un éditeur hexa, et bêtement remplacé par des espaces (en fait j'aurais dû remplacer le premier octet par un zéro, marqueur de fin de chaîne), puis réinjecté le bloc.

Envoyer un commentaire

Suivre le flux des commentaires

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