Capitolo 1: introduzione

Questo articolo spiega come personalizzare le immagini e i loghi visualizzati durante il processo di avvio: l’immagine iniziale dello U-Boot, il logo del kernel Linux, l’immagine del  Psplash Yocto, il messaggio pre-accesso Linux e lo sfondo Wayland. In genere viene utilizzato dai clienti per visualizzare il logo della propria azienda o del prodotto.

1.1. Requisiti software

Innanzitutto, configura il tuo ambiente host e ottieni il codice sorgente della versione di Yocto che desideri utilizzare: vai su variwiki.com, fai clic sulla SOM che stai utilizzando e su “Developers Guide” per la versione di Yocto che desideri utilizzare, quindi fai clic su “Build Yocto from source code” e segui le istruzioni ivi contenute.

1.2. Sezioni immagine e logo BSP personalizzati

I seguenti capitoli sono indipendenti l’uno dall’altro e puoi seguirli nell’ordine che preferisci:


Capitolo 2: schermata iniziale U-Boot

Questo capitolo spiega come modificare l’immagine della schermata iniziale U-Boot.

2.1. Informazioni importanti

  • U-Boot of the following SOMs has support to display a splash screen before the Linux kernel starts booting the system for:
  • Il logo predefinito della schermata iniziale dello U-Boot di Variscite:
U-Boot Splash Screen logo from Variscite

Clicca sulla foto per vedere la taglia

2.2. Come modificare la schermata iniziale U-Boot

  1. Crea l’immagine desiderata in formato BMP a 8 bit (file di immagine bitmap).

Es. Per convertire un’immagine dal formato PNG (ad esempio splash.png) nel formato BMP a 8 bit desiderato:

$ convert splash.png -depth 8 -compress none BMP3:splash.bmp

  1. Ora scegli una delle seguenti opzioni:

2.1 Sovrascrivere direttamente l’immagine predefinita nel meta-layer Variscite pertinente:

Sostituisci il file di immagine splash.bmp nella cartella della schermata iniziale U-Boot BSP:

YOCTO_FOLDER/sources/META-VARISCITE/recipes-bsp/u-boot/u-boot-splash/

Dove META-VARISCITE può essere uno dei seguenti, a seconda del SOM e della versione Yocto:

            • meta-variscite-bsp-imx
            • meta-variscite-fslc
            • meta-variscite-imx

2.2 In alternativa, puoi aggiungere l’immagine splash.bmp desiderata al tuo meta-layer (se ne hai uno):

Aggiungi la seguente cartella al layer e copia il file splash.bmp al suo interno:

 YOCTO_FOLDER/sources/YOUR_META_LAYER/recipes-bsp/u-boot/u-boot-splash/

Ora, crea il seguente file:

 YOCTO_FOLDER/sources/YOUR_META_LAYER/recipes-bsp/u-boot/u-boot-splash.bbappend

E scrivi la riga* seguente al suo interno:

 FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"

  1. Continua a seguire le istruzioni nella relativa pagina “Build Yocto from source code” su variwiki.com per creare una nuova immagine e scriverla su una scheda SD.
  2. Avvia il sistema e dovresti vedere la nuova immagine della schermata iniziale dello U-Boot sul display.


Capitolo 3: logo del kernel Linux

Questo capitolo spiega come modificare il logo predefinito del kernel Linux.

3.1. Informazioni importanti

  • La dimensione predefinita del logo è di 80×80 e il logo iniziale supporta solo 224 colori.
    • Se nell’immagine sorgente viene utilizzato un numero maggiore di colori, ppmquant lo ridurrà a 224 colori.
  • Il numero di loghi visualizzati è uguale al numero di core, ad esempio:
    1 core → 1 logo; 2 core → 2 loghi; 4 core → 4 loghi, ecc.
    • Per riempire il display con un solo logo, questo deve avere la stessa risoluzione del display.
  • I loghi sono allineati nell’angolo superiore sinistro dello schermo.
  • Il logo predefinito del kernel Linux di Variscite:

Linux kernel logo from Variscite

3.2. Come cambiare il logo del kernel Linux

  1. Crea l’immagine desiderata in formato PNG, ad esempio logo.png.
  2. Converti il file logo.png in un formato PPM a 224 colori.

  2.1 Installa il pacchetto richiesto per convertire il logo:

$ sudo apt install netpbm

  2.2 Quindi, converti il file del logo usando pngtopnm:

$ pngtopnm logo.png | ppmquant 224 | pnmnoraw > logo_linux_clut224.ppm

ATTENZIONE: Questa guida spiega come sovrascrivere il logo Linux predefinito, quindi il file PPM convertito dovrebbe essere denominato logo_linux_clut224.ppm.
Se vuoi imparare ad aggiungere un’altra configurazione del kernel per il tuo logo, usa questa patch di Variscite come riferimento.

  1. Copia il file logo_linux_clut224.ppm nella seguente cartella:

 YOCTO_FOLDER/sources/META-VARISCITE/recipes-kernel/linux/files/

Dove META-VARISCITE può essere uno dei seguenti, a seconda del SOM e della versione Yocto:

        • meta-variscite-bsp-ti
        • meta-variscite-bsp-imx
        • meta-variscite-fslc
        • meta-variscite-imx
  1. Ora, crea il seguente file:

 YOCTO_FOLDER/sources/META-VARISCITE/recipes-kernel/linux/linux-variscite_%.bbappend

E scrivi quanto segue* al suo interno:

FILESEXTRAPATHS:prepend = "${THISDIR}/${PN}:" 

SRC_URI:append = " file://logo_linux_clut224.ppm" 


# uncomment the following lines for NXP builds 

#TARGET_DEFCONFIG="${B}/.config" 


# uncomment the following lines for TI builds 

#TARGET_DEFCONFIG="${S}/arch/arm64/configs/am62x_var_defconfig" 


do_configure:prepend() { 

    # Add the kernel_defconf_variable function 

    kernel_defconf_variable() { 

       CONF_SED_SCRIPT="$CONF_SED_SCRIPT /CONFIG_$1[ =]/d;" 

       if test "$2" = "n" 

       then 

           echo "# CONFIG_$1 is not set" >>  ${TARGET_DEFCONFIG} 

       else 

           echo "CONFIG_$1=$2" >>  ${TARGET_DEFCONFIG} 

       fi 

    } 

    # logo support, if you supply logo_linux_clut224.ppm in SRC_URI, 

    # then it's going to be used 

    if [ -e ${WORKDIR}/logo_linux_clut224.ppm ]; then 

        install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm ${S}/drivers/video/logo/logo_linux_clut224.ppm 

        # Call kernel_defconf_variable for each config variable kernel_defconf_variable LOGO y 

        kernel_defconf_variable LOGO_LINUX_CLUT224 y 

        kernel_defconf_variable LOGO_VARISCITE_CLUT224 n 

     fi 

} 

Ricorda solo di rimuovere il commento dall’opzione giusta per la variabile TARGET_DEFCONFIG a seconda di NXP o TI BSP in uso.

  1. Continua a seguire le istruzioni nella relativa pagina “Build Yocto from source code ” su variwiki.com per creare una nuova immagine e scriverla su una scheda SD.
  2. Avvia il sistema e dovresti vedere il nuovo logo del kernel Linux sul display.

*Vedi anche la pagina Logo kernel Linux Yocto su variwiki.com.


Capitolo 4: Yocto PSplash

Questo capitolo spiega come modificare l’immagine del PSplash di Yocto.

4.1. Informazioni importanti

  • La versione Linux 5.4.70 e le versioni precedenti richiedono l’immagine psplash come file “.h”, mentre le versioni più recenti di Linux includono lo script per convertire il file PNG in file ”.h”. Ad esempio, vedi la differenza tra Zeus 5.4.70 (psplash-poky-img.h) e Dunfell 5.4.85 (psplash-poky-img.png).
    Tutte le versioni più recenti della 5.4.70 utilizzano solo il formato PNG.
  • Il logo Yocto PSplash predefinito di Variscite:

 

Yocto PSplash logo from Variscite


4.2. Come modificare l’immagine PSplash nelle nuove versioni di Yocto (file PNG)

  1. Crea l’immagine desiderata in formato PNG e denominala psplash-poky.png.

  1.1 Ora scegli una delle seguenti opzioni:

1.1.1 Sovrascrivere direttamente l’immagine predefinita nel meta-layer Variscite pertinente:

Sostituisci il file di immagine psplash-poky.png nella seguente cartella:

 YOCTO_FOLDER/sources/META-VARISCITE/recipes-core/psplash/files/

Dove META-VARISCITE può essere uno dei seguenti, a seconda del SOM e dell versione Yocto:

            • meta-variscite-sdk-ti
            • meta-variscite-sdk-imx
            • meta-variscite-fslc
            • meta-variscite-imx

1.1.2 In alternativa, puoi aggiungere l’immagine psplash-poky.png al tuo meta-layer (se ne hai uno):

Aggiungi la seguente cartella al tuo layer e copia psplash-poky.png all’interno di essa:

 YOCTO_FOLDER/sources/YOUR_META_LAYER/recipes-core/psplash/files/

Ora, crea il seguente file:

 YOCTO_FOLDER/sources/YOUR_META_LAYER/recipes-core/psplash/psplash_git.bbappend

E scrivi la riga* seguente al suo interno:

 FILESEXTRAPATHS:prepend := "${THISDIR}/files:"

4.3. Come modificare l’immagine PSplash nelle vecchie versioni di Yocto (file di intestazione)

  1. Crea l’immagine desiderata in formato PNG e denominala psplash-poky-img.png.

  1.1 Installa il pacchetto richiesto per convertire il file di immagine PNG:

$ sudo apt install libgdk-pixbuf2.0-dev

1.2 Usa il seguente script per convertire il file di immagine psplash-poky-img.png in un file di intestazione compatibile con psplash:

Eseguilo in questo modo:
$ ./make-image-header.sh psplash-poky-img.png POKY

1.3 Ora scegli una delle seguenti opzioni:

1.3.1 Sovrascrivere direttamente l’immagine predefinita nel meta-layer Variscite pertinente:

Sostituisci il file di immagine psplash-poky-img.h nella seguente cartella:

 YOCTO_FOLDER/sources/META-VARISCITE/recipes-core/psplash/files/

Dove META-VARISCITE può essere uno dei seguenti, a seconda della SOM e versione Yocto:

            • meta-variscite-fslc
            • meta-variscite-imx

1.3.2 In alternativa, puoi aggiungere l’immagine psplash-poky-img.h al tuo meta-layer (se ne hai uno):

Aggiungi la seguente cartella al tuo layer e copia il file psplash-poky-img.h al suo interno:

 YOCTO_FOLDER/sources/YOUR_META_LAYER/recipes-core/psplash/files/

Ora, crea il seguente file:

 YOCTO_FOLDER/sources/YOUR_META_LAYER/recipes-core/psplash/psplash_git.bbappend

E scrivi la riga* seguente al suo interno:

 FILESEXTRAPATHS:prepend := "${THISDIR}/files:"

4.4. Crea l’immagine e avvia il sistema

  1. Continua a seguire le istruzioni nella relativa pagina “Build Yocto from source code” su variwiki.com per creare una nuova immagine e scriverla su una scheda SD.
  2. Avvia il sistema e dovresti vedere la nuova immagine PSplash sul display.


Capitolo 5: messaggio pre-accesso Linux

Questo capitolo spiega come modificare il messaggio pre-accesso Linux.

5.1. Informazioni importanti

  • Il messaggio pre-accesso viene preso dai seguenti file nel filesystem di destinazione:
    • /etc/issue – Questo file contiene il testo da stampare prima della richiesta di accesso.
    • /etc/issue.net – Questo file contiene il testo da stampare prima della richiesta di accesso in una sessione telnet.

Per ulteriori informazioni, esegui quanto segue sul computer host:

$ man 5 issue

    • Il carattere “\” deve essere evitato usando un altro “\”, quindi “\\” viene stampato come “\” nel messaggio pre-accesso.
    • Il messaggio pre-accesso predefinito di Variscite:
__      __        _          _ _
\ \    / /       (_)        (_) |
 \ \  / /_ _ _ __ _ ___  ___ _| |_ ___
  \ \/ / _` | '__| / __|/ __| | __/ _ \
   \  / (_| | |  | \__ \ (__| | ||  __/
    \/ \__,_|_|  |_|___/\___|_|\__\___|
          2022 Variscite, Ltd.

Il contenuto del file di emissione predefinito di Variscite, con i caratteri “\” elisi:

__      __        _          _ _
\\ \\    / /       (_)        (_) |
 \\ \\  / /_ _ _ __ _ ___  ___ _| |_ ___
  \\ \\/ / _` | '__| / __|/ __| | __/ _ \\
   \\  / (_| | |  | \\__ \\ (__| | ||  __/
    \\/ \\__,_|_|  |_|___/\\___|_|\\__\\___|
          2022 Variscite, Ltd.


5.2. Modifica il messaggio pre-accesso

  1. Crea i messaggi pre-accesso che preferisci in formato testo e denominali issue e/o issue.net.
  2. Scegli una delle seguenti opzioni:

2.1 Sovrascrivere direttamente i file con i messaggi pre-accesso predefiniti nel meta-layer Variscite pertinente:
Sostituisci i file issue e/o issue.net nella seguente cartella:

 YOCTO_FOLDER/sources/META-VARISCITE/recipes-core/base-files/base-files/

Dove META-VARISCITE può essere uno dei seguenti, a seconda della SOM e versione Yocto:

          • meta-variscite-sdk-common
          • meta-variscite-sdk-ti
          • meta-variscite-sdk-imx
          • meta-variscite-fslc
          • meta-variscite-imx

2.2 In alternativa, puoi aggiungere i file issue e/o issue.net al tuo meta-layer (se ne hai uno):
Aggiungi la seguente cartella al tuo layer e copia i file issue e/o issue.net.

 YOCTO_FOLDER/sources/YOUR_META_LAYER/recipes-core/base-files/base-files/
Ora, crea il seguente file:

 YOCTO_FOLDER/sources/YOUR_META_LAYER/recipes-core/base-files/ base-files_%.bbappend
E scrivi la riga* seguente al suo interno:

 FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"

  1. Continua a seguire le istruzioni nella relativa pagina “Build Yocto from source code” su variwiki.com per creare una nuova immagine e scriverla su una scheda SD.
  2. Avvia il sistema e dovresti vedere il nuovo messaggio pre-accesso sul terminale.


Capitolo 6: sfondo Wayland/Weston

Questo capitolo spiega come cambiare il colore di sfondo o lo sfondo Wayland/Weston.

6.1. Informazioni importanti

  • Lo sfondo predefinito del desktop Wayland ha il seguente aspetto:

Wayland/Weston Background of Variscite

 

6.2. Cambiare il colore di sfondo Weston e/o aggiungere un’immagine di sfondo

  1. Il file di configurazione Weston predefinito pertinente si trova in:
YOCTO_FOLDER/sources/META-VARISCITE/recipes-graphics/wayland/weston-init/IMX_FOLDER/weston.in

Dove META-VARISCITE può essere uno dei seguenti, a seconda del SOM e della versione Yocto:

            • meta-variscite-sdk-ti
            • meta-variscite-sdk-imx
            • meta-variscite-fslc
            • meta-variscite-imx

e IMX_FOLDER può essere uno dei seguenti, a seconda della versione di Yocto:

            • imx-nxp-bsp
            • imx
  • Per cambiare il colore di sfondo, usa la proprietà background-color nella sezione [shell] all’interno di weston.ini.

La proprietà background-color assume un valore intero senza segno composto da 4 coppie di cifre esadecimali per i canali alfa, rosso, verde e blu (0xAARRGGBB).

Attenzione: il canale alfa è un componente di colore che rappresenta il grado di trasparenza (o opacità) di un colore (ad esempio, i canali rosso, verde e blu).

Ad esempio:

background-color valore Colore
0xff000000 Nero tinta unita
0xffff0000 Rosso tinta unita
0xff00ff00 Verde tinta unita
0xff0000ff Blu tinta unita
0x7fxxxxxx Colore traslucido al ~50% (il colore è determinato dai valori x)
0x7fff0000 Rosso traslucido al ~50%
0xccxxxxxx Colore traslucido al 20% (il colore stesso è determinato dai valori x)
0x33xxxxxx Colore traslucido all’80% (il colore è determinato dai valori x)
0x00xxxxxx Traslucido al 100%, nessun colore

 

  • Per aggiungere un’immagine di sfondo, usa le proprietà background-image e background-type nella sezione [shell] all’interno di weston.ini.

La proprietà background-image richiede la stringa del percorso per il file di immagine.

The background-type property determines how the background image is drawn. It takes one of the following strings:

La proprietà background-type determina come viene disegnata l’immagine di sfondo. Richiede una delle seguenti stringhe:
centered, scale, scale-crop o tile (tile è l’impostazione predefinita).

centered – visualizza l’immagine una volta e centrata. Se l’immagine è più piccola dell’output, il resto della superficie sarà del colore di sfondo. Se le dimensioni sono almeno pari all’output, verrà ritagliata a sinistra e a destra o sopra e sotto.
scale – significa adattata perfettamente all’output, senza mantenere le proporzioni.
scale-crop – mantiene le proporzioni, porta l’immagine di sfondo solo alla grandezza necessaria a coprire l’output e la centra.
L’immagine viene ritagliata a sinistra e destra o sopra e sotto, se le proporzioni non corrispondono all’output.
Tile – ripete l’immagine di sfondo per riempire l’output.

  1. Scegli una delle seguenti opzioni:

2.1 Modificare direttamente il file weston.ini menzionato sopra nel meta-layer Variscite pertinente.

Ad esempio, per utilizzare un file di immagine di sfondo denominato /etc/xdg/weston/wallpaper.png, centrato, su colore di sfondo blu tinta unita, aggiungi le seguenti righe nella sezione [shell] all’interno di weston.ini:

background-color=0xff0000ff
background-image=/etc/xdg/weston/wallpaper.png
background-type=centered

Se hai scelto di aggiungere un’immagine di sfondo (ad esempio /etc/xdg/weston/wallpaper.png), devi aggiungerla anche alla build:

Crea il tuo file di immagine wallpaper.png e copialo in:

   YOCTO_FOLDER/sources/META-VARISCITE/recipes-graphics/wayland/weston-init/

Ora, modifica il seguente file:

   YOCTO_FOLDER/sources/META-VARISCITE/recipes-graphics/wayland/weston-init.bbappend apportandovi le seguenti modifiche:

      • Aggiungi SRC_URI:append= “file://wallpaper.png” al file*, al di fuori di qualsiasi funzione. Questo recupererà l’immagine e la renderà disponibile per l’installazione nel passaggio successivo.
      • Aggiungi la riga seguente alla funzione* do_install:append() per installarla nel file system:

install -D -p -m0644 ${WORKDIR}/wallpaper.png ${D}${sysconfdir}/xdg/weston/

2.2 In alternativa, puoi aggiungere un file weston.ini al tuo meta-layer (se ne hai uno):

Aggiungi la seguente cartella al tuo layer e copia il file weston.ini sopra menzionato al suo interno:

 YOCTO_FOLDER/sources/YOUR_META_LAYER/recipes-graphics/wayland/weston-init/IMX_FOLDER/

Modifica il nuovo file weston.ini nel layer a tuo piacimento (vedi esempio nella sezione precedente).

Ora, crea il seguente file:

   YOCTO_FOLDER/sources/YOUR_META_LAYER/recipes-graphics/wayland/weston-init.bbappend

E scrivi la riga* seguente al suo interno:

   FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"

Se hai scelto di aggiungere un’immagine di sfondo (ad esempio /etc/xdg/weston/wallpaper.png), devi aggiungerla anche alla build:

Crea il tuo file di immagine wallpaper.png e copialo in:

   YOCTO_FOLDER/sources/YOUR_META_LAYER/recipes-graphics/wayland/weston-init/

Ora, modifica il seguente file:

   YOCTO_FOLDER/sources/YOUR_META_LAYER/recipes-graphics/wayland/weston-init.bbappend

e aggiungici quanto segue*:

   SRC_URI:append= " file://wallpaper.png"
   do_install:append() {
      install -D -p -m0644 ${WORKDIR}/wallpaper.png ${D}${sysconfdir}/xdg/weston/
   }
  1. Continua a seguire le istruzioni nella relativa pagina “Build Yocto from source code” su variwiki.com per creare una nuova immagine e scriverla su una scheda SD.
  2. Avvia il sistema e dovresti vedere il nuovo sfondo Wayland.

 

* Attenzione, la sintassi prepend/append di Yocto è stata modificata a partire da Yocto Hardknott Se stai usando una versione di Yocto precedente a Hardknott, sostituisci “:append” e “:prepend” rispettivamente con “_append” e “_prepend”.