Publié le 4 août 2015 - par

Personnaliser NOOBS et ses distributions – 3/3

noobs_3_250pxDernier épisode de cette saga NOOBS. Après avoir installé NOOBS nous avons installé une distribution Raspbian que nous avons personnalisée (frambian).
Il nous reste à intégrer cette distribution modifiée dans NOOBS, à personnaliser les écrans qui défilent pendant l’installation de NOOBS et à ajuster quelques paramètres de démarrage de NOOBS. Tout ceci est l’objet de ce troisième épisode.

Personnaliser NOOBS : Partie 1Partie 2Partie 3

Au sommaire :

Personnaliser NOOBS

Tout savoir sur le partitionnement et le démarrage de NOOBS

Avant de regarder comment NOOBS gère les partitions, vous avez devez savoir comment fonctionne le partitionnement sur le Raspberry Pi : lisez cette page (en anglais) ou celle-ci (en français) si vous ne savez pas comment ça se passe au démarrage d’un Raspbian installé seul sur sa carte microSD.

Nommage des partitions

samsung_sd_200pxPour des raisons historiques il n’y a que 4 emplacements de partitions prévus dans la table de partition.  Les disques durs et les cartes SD et microSD ne peuvent donc avoir plus de 4 partitions primaires. Pour contourner cette limitation, une de ces partitions primaires peut éventuellement être utilisée comme partition étendue.

Une partition étendue peut contenir un nombre illimité de partitions logiques. Sous Linux, les partitions primaires sont toujours numérotées de 1 à 4. Par exemple sur le Raspberry Pi vous trouvez des partitions appelées /dev/mmcblk0p1 à /dev/mmcblk0p4. Toutes les partitions logiques sont quant à elles, numérotées à partir de 5 (par exemple /dev/mmcblk0p5 et suivantes sur le Raspberry Pi).

Partition d’origine

Lorsque NOOBS est copié pour la première fois sur une carte SD au format FAT (Windows), il n’y a qu’une partition unique occupant tout l’espace sur la carte. Et c’est là que les fichiers extraits du fichier zip NOOBS sont écrits. Sous forme de tableau, on peut le représenter ainsi :

noobs_tableau1La seule différence entre NOOBS et NOOBS Lite est que NOOBS Lite n’embarque pas les images de récupération du système d’exploitation Raspbian.

Démarrage de NOOBS – bas-niveau

Lorsque le Raspberry Pi est mis sous tension avec une carte NOOBS insérée :

  1. Il charge et exécute bootcode.bin depuis la partition FAT /dev/mmcblk0p1, exactement comme il le fait pour les images de systèmes autonomes. (Ce comportement est intégré dans le firmware interne du BCM2835 sur tous les Raspberry Pi, et ne peut donc pas être modifié.)
  2. bootcode.bin détecte que start.elf est manquant, alors il charge et exécute recovery.elf en lieu et place.
  3. Le lancement de recovery.elf passe alors le firmware en mode « NOOBS » – il utilise recovery.img lieu de kernel.img, recovery.cmdline au lieu de cmdline.txt, et il définit le système de fichiers racine comme étant recovery.rfs.
  4. recovery.elf lit alors recovery.cmdline puis charge et exécute recovery.img (le noyau Linux), en lui passant la totalité de la ligne de commande qu’il a lue à partir de recovery.cmdline et lui disant de charger recovery.rfs comme système de fichiers racine (un initramfs contenant divers scripts ainsi que l’application NOOBS GUI).
  5. Ce qui se passe ensuite dépend du ‘mode’ dans lequel NOOBS fonctionne…

Démarrage de NOOBS – en mode de configuration

Si  runInstaller  est présent dans la ligne de commande du noyau, c’est que c’est la première fois que NOOBS démarre, il entre alors dans le «mode de configuration ‘. Ensuite :

  1. Il diminue automatiquement la taille de la  première (et seule) partition /dev/mmcblk0p1, lui donnant juste la taille nécessaire pour contenir les fichiers qu’il contient, et la nomme «RECOVERY». Pour NOOBS Lite cette partition aura une taille d’environ XMB; pour NOOBS cette partition aura une taille d’environ XGB.
  2. Il crée une nouvelle partition étendue /dev/mmcblk0p2, en utilisant la presque totalité de l’espace restant sur la carte.
  3. Il crée une nouvelle petite partition au format ext4 (32 Mo) /dev/mmcblk0p3 tout au bout de la carte, et la nomme «SETTINGS». C’est utilisé pour stocker les fichiers qui informent NOOBS des OS qui sont installés (et sur quelles partitions ils sont installés), quel OS doit être chargé par défaut, quelle langue/clavier NOOBS doit utiliser, etc.
  4. Il supprime runInstaller de recovery.cmdline pour empêcher que le processus de configuration ne se déclenche à nouveau.

Les paramètres sont stockés sur une petite partition auxiliaire plutôt que dans la même partition /dev/mmcblk0p1 que tout le reste. Ceci est dû à la «directive principale» de NOOBS – « NOOBS n’écrit jamais  dans la première partition FAT. Dans la première partition FAT, jamais NOOBS n’écrit…. ». Ne jamais écrire dans la première partition (après être sorti du « mode de configuration »), garantit que la première partition ne peut jamais devenir corrompue; et ainsi le «mode de récupération» de NOOBS sera toujours accessible (pour permettre de réinstaller les OS), peu importe ce qui se passe dans le reste de la carte SD.

Les partitions deviennent alors :

noobs_tableau2

Démarrage de NOOBS – en mode récupération

Si NOOBS détecte qu’aucun système d’exploitation n’a encore été installé, ou si l’utilisateur appuie sur la touche Shift (ou que l’une des autres façons de déclencher ce modeest active), NOOBS entre en «mode de récupération». Cela affiche le menu d’installation des OS, permettant à l’utilisateur de choisir quel(s) système(s) d’exploitation il souhaite installer. Reportez-vous à la documentation normale pour plus de détails à propos de ce menu.

noobs_kdrc_02Comme vous l’aurez deviné, «l’espace disponible» (Available) affiché ici est la taille de la partition étendue /dev/mmcblk0p2, qui est l’endroit où tous les systèmes d’exploitation sont installées.

Fichiers de NOOBS

Contrairement à ce qui se passe avec les images autonomes décrites précédemment (qui contiennent des images raw -bit à bit- des partitions ), NOOBS utilisations des archives tar compressées contenant le contenu de la partition, en parallèle avec des fichiers de configuration. NOOBS est chargé de créer effectivement les partitions sur la carte microSD elle-même, ce qui signifie que les partitions sont toujours créés à la taille « correcte » en premier lieu : il n’y a pas besoin de les redimensionner plus tard. Et contrairement aux images de partitions de bas niveau (utilisées dans les images d’OS autonomes), les archives tar ne stockent pas les blocs de disques inutilisés.

Installation d’un système par NOOBS

Pour le premier exemple, supposons que l’utilisateur installe uniquement Raspbian. Le fichier partitions.json (que vous pouvez voir en ligne ici) indique ensuite les partitions qui doivent être créés, la taille qu’elles doivent avoir, et avec quel système de fichiers elles doivent être formatées.

Dans cet exemple, il créerait une partition FAT de 60 Mo (/dev/mmcblk0p5), la formaterait, puis extrairait le contenu du fichier boot.tar.xz dans cette partition de 60Mo. Comme la partition root a le flag want_maximised : true, il créerait une partition ext4 (/dev/mmcblk0p6) remplissant la totalité du reste de la partition étendue, la formaterait, et extrairait le contenu du fichier root.tar.xz dans cette partition. Cela nous donne la structure de partitionnement complète que montre le tableau vu précédemment. NOOBS exécute ensuite le script partition_setup.sh qui monte ces nouvelles partitions, et édite les fichiers (généralement uniquement cmdline.txt dans la partition de démarrage et /etc/fstab dans la partition racine) pour indiquer à Raspbian sur quelles partitions il a été installé. Cela permet de se régler Raspbian soient stockées sur / dev / mmcblk0p5 et / dev / mmcblk0p6 au lieu de / dev / mmcblk0p1 et / dev / mmcblk0p2. Et enfin, il met à jour la partition de paramètres avec des détails sur le système d’exploitation que nous venons d’installer.

noobs_tableau3

Démarrage de NOOBS – démarrage d’un système

Si l’utilisateur n’appuie pas sur la touche Maj (SHIFT), et que NOOBS détecte (en utilisant les informations stockées sur la partition de configuration SETTINGS) qu’un seul système d’exploitation amorçable a été installé, il démarre automatiquement sur ce système d’exploitation. Il le fait en lisant les données dans la partition de configuration SETTINGS pour déterminer la partition de démarrage pour ce système d’exploitation, puis demande au firmware un « redémarrage à chaud » en utilisant la partition de démarrage de l’OS.

Ceci «redémarre» le firmware et charge le fichier start.elf depuis la partition spécifiée (normalement /dev/mmcblk0p5 si un seul système d’exploitation est installé). Tout se passe ensuite comme pour le démarrage autonome décrit au haut de cette page : start.elf charge kernel.img et lit cmdline.txt, puis kernel.img utilise la ligne de commande qui lui a été passée pour déterminer sur quelle partition le système de fichiers racine est stocké (normalement /dev/mmcblk0p6 si un seul système d’exploitation est installé), il charge ensuite le reste du système d’exploitation.

Si au lieu d’un seul OS plusieurs systèmes d’exploitation ont été installés, NOOBS affiche alors le menu OS-boot, qui permet à l’utilisateur de choisir sur quel système d’exploitation il souhaite démarrer.

risc_os_install_13Une fois que l’utilisateur a sélectionné une option (si on arrive au bout du délai (time-out) du menu, c’est le dernier OS qui a démarré qui est sélectionné par défaut), le boot se fait comme décrit dans le paragraphe ci-dessus, NOOBS utilisant les informations de la partition de configuration pour déterminer quelle partition utiliser pour un « redémarrage logiciel  » comme partition de démarrage.

Démarrage de RISC OS avec NOOBS

Le seul petit bémol à ce qui précède est que RISC OS ne comprend pas les tables de partition. Il doit être installé sur une partition spécifique avec un décalage donné. C’est la raison de la présence du fichier riscos-boot.bin, et c’est ce qui explique que la partition ‘root‘ de RISC OS est encore stockée au format raw (brut) et pas sous forme d’une archive. Cependant NOOBS gère automatiquement tous ces détails pour vous, et il est toujours possible d’installer d’autres systèmes d’exploitation conjointement à RISC OS.

Personnaliser l’installation de frambian

noobs_FB

Installation automatique d’un OS avec NOOBS

Même si vous utilisez votre Pi headless (sans affichage), vous pouvez toujours utiliser NOOBS pour installer facilement le système d’exploitation de votre choix. Pour configurer NOOBS afin d’installer automatiquement et « silencieusement » un OS spécifique (c’est à dire sans nécessiter d’intervention de l’utilisateur), suivez ces étapes :

  1. Copiez le dossier du système d’exploitation que vous souhaitez installer dans le répertoire  /os . Vous pouvez aussi supprimer tous les autres systèmes d’exploitation contenus dans le répertoire  /os  de sorte qu’il ne reste que le système d’exploitation que vous avez choisi d’installer.
  2. Si le système d’exploitation que vous souhaitez installer automatiquement a plusieurs configurations d’installation disponibles (flavours), éditez le fichier flavours.json pour qu’il ne contienne que la configuration que vous souhaitez installer.
  3. Éditez le fichier recovery.cmdline dans le répertoire racine de NOOBS et ajoutez silentInstall à la liste des arguments.

Maintenant, lorsque vous démarrez votre Raspberry Pi en utilisant une carte SD contenant cette version modifiée de NOOBS que vous venez de créer, il installe automatiquement l’OS que vous avez choisi et le démarrage après la fin de l’installation

Comment créer une version personnalisée d’un OS

peintre_200px

Personnalisez votre version de NOOBS

Il y a deux cas principaux dans lesquels vous voudrez peut-être créer une version personnalisée de l’un des OS standard qui sont disponibles pour l’installation via NOOBS :

  • Vous êtes enseignant et vous souhaitez déployer facilement une version de système d’exploitation personnalisé contenant un ensemble prédéfini de paquets et de fichiers sur un certain nombre de cartes SD (par exemple pour mettre des Raspberry Pi préconfigurés à disposition d’une classe ou  remettre rapidement un certain nombre de Raspberry Pi en configuration « usine »).
  • Vous voulez être en mesure de sauvegarder les paquets et les fichiers installés sur votre Raspberry Pi pour ne pas avoir à repartir d’une installation de base la prochaine fois.

Les étapes qui suivent vous permettent de créer une copie modifiée de l’une des versions d’OS standard qui contient vos fichiers personnalisés, des paquets que vous avez installé et une configuration personnalisée.

  1. Téléchargez une version de base de NOOBS depuis http://downloads.raspberrypi.org/NOOBS_latest
  2. Extrayez les fichiers de NOOBS de l’archive
  3. Accédez au répertoire os
  4. Créez une copie du dossier contenant la version du système d’exploitation que vous souhaitez modifier et renommez le avec un autre nom.
  5. Modifiez les champs suivants dans le fichier os.json qui se trouve dans le dossier que vous venez de créer
    1. « name » – Remplacer le nom de l’OS avec le nom de votre version d’OS
    2. « description » – Remplacer la description de l’OS standard par celle de la version de votre système d’exploitation personnalisé.
  6. [Optionnellement] Renommez ou remplacez le fichier contenant l’icône <OS>.png fichier icône .png existant avec un correspondant au nom de la coutume votre version OS
  7. [Optionnellement] Remplacez les fichiers d’image PNG dans les répertoires slides et slides_vga  par vos propres diapositives personnalisées
  8. Modifiez les champs suivants dans le fichier partitions.json contenu dans le dossier que vous venez de créer
    1. « Partition_size_nominal » – Remplacez la valeur numérique par la taille des partitions de votre version personnalisée du système d’exploitation
    2. « Uncompressed_tarball_size » – Remplacez la valeur numérique par la taille de vos archives tar du système de fichiers lorsqu’elles sont décompressées
  9. Remplacez les fichiers .tar.xz des partitions root et boot  présents dans le dossier /os par les archives tar des copies des système de fichiers de boot et rootfs créées à partir de votre version personnelle de système d’exploitation NOTA : Ces instructions supposent que vous n’utilisez qu’un seul système d’exploitation à la fois avec NOOBS – Elles ne fonctionneront pas si vous exécutez plusieurs systèmes d’exploitation à partir de une seule carte SD.
    Le nom de ces archives tar doit correspondre aux labels utilisés dans partitions.json. (Ci-dessous remplacez  <label>  par le nom de la distribution).
  1. Pour créer l’archive tar de rootfs, vous devrez exécuter
    tar -cvpf <label>.tar /* --exclude=proc/* --exclude=sys/* --exclude = dev/pts/*

    depuis la racine du système de fichiers de votre version personnalisée de l’OS . (faites cd / pour vous y rendre). Ensuite vous devez compresser l’archive obtenue avec

    xz  -9  -e  <label>.tar
  2. Pour créer l’archive tar de boot, vous devrez exécuter
    tar  -cvpf <label>.tar

    dans le répertoire racine de la partition de démarrage (/boot) de votre version personnalisée de l’OS. Vous devez ensuite compresser l’archive obtenue avec

    xz  -9  -e  <label>.tar

Application à frambian

Tout ça c’est bien beau… Mais revenons à notre distribution  frambian  et voyons comment l’intégrer dans NOOBS.

Rappel des épisodes précédents

noobs_custom_SD_200pxDans le deuxième article de cette série vous avez vu comment préparer votre distribution et produire les deux archives boot.tar.xz et root.tar.xz. Ce sont ces deux fichiers que nous allons réutiliser. Ils doivent être sur votre clé USB. Je ferai ces manipulation sous Windows 8.1, les personnes débutant avec le Raspberry Pi ayant rarement une machine Linux installée… Pour les Linuxiens de longue date, vous transposerez sans mal sur votre système préféré.

Prenez une carte microSD neuve ou formatez en une avec SDFormater 4.0. Pour ma part je reste fidèle aux Samsung EVO que je trouve à moins de 9 € dans le supermarché voisin.

Formatage de la carte microSD

Pour ces essais, j’ai réutilisé une carte SD de 16 Go contenant auparavant Raspbian en autonome (c’est ce qui explique qu’elle s’appelle BOOT). J’ai formaté la carte avec SDFormatter 4.0 avec les options Format Type : Full Erase et Format Size Adjustment : On.

Copie des fichiers de NOOBS

Décompressez les fichiers à partir de l’archive de NOOBS que vous avez téléchargée sur le site de la Fondation. Copiez ces fichiers sur la carte microSD que vous destinez à NOOBS: carte_sd_noobs_01Le dossier qui nous intéresse est le dossier os.

carte_sd_noobs_02Ce dossier contient lui même 2 dossiers : Data_Partition et Raspbian. Double-cliquez sur Raspbian

carte_sd_noobs_03

On retrouve dans ce dossier les deux fichiers boot.tar.xz et root.tar.xz qui sont ceux du Raspbian d’origine. Ce sont ces deux fichiers que nous allons remplacer plus loin par nos fichiers personnalisés.

NOTA : Attention, les logiciels comme WORD ou le Bloc Note insèrent des caractères non compatibles avec Linux. Préférez leur un utilitaire comme Notepad++ par exemple. Ou éditez les avec nano sous Linux.

Modification du fichier partitions.json

On commence par éditer partitions.json qui contient d’origine :

{
"partitions": [
{
"label": "boot",
"filesystem_type": "FAT",
"partition_size_nominal": 60,
"want_maximised": false,
"uncompressed_tarball_size": 20
},
{
"label": "root",
"filesystem_type": "ext4",
"partition_size_nominal": 2730,
"want_maximised": true,
"mkfs_options": "-O ^huge_file",
"uncompressed_tarball_size": 750
}
]
}

La première section (« label »: »boot ») correspond à la partition /boot, la seconde section (« label »: »root ») correspond au rootfs, la partition principale de Raspbian.

Ne modifiez pas la première partie, puisque rien n’a changé dans cette partition /boot sur le Raspberry Pi :

pi@raspberrypi /boot $ sudo xz -l boot.tar.xz
Flux    Blocs    Compressé  Décompressé  Ratio  Vérif   Nom de fichier
1       1     10,5 MiB     19,2 MiB  0,548  CRC64   boot.tar.xz

La taille de la partition peut rester à 60 Mo (« partition_size_nominal »: 60) et la taille du fichier décompressé est bien de 20 Mo environ ( « uncompressed_tarball_size »: 20).

C’est la deuxième section qui nous intéresse car nous avons allégé cette partie de Raspbian :

pi@raspberrypi / $ sudo xz -l root.tar.xz
Flux    Blocs    Compressé  Décompressé  Ratio  Vérif   Nom de fichier
1       1    161,5 MiB    725,8 MiB  0,223  CRC64   root.tar.xz

Pour ma part, j’ai modifié cette section comme suit :

"partition_size_nominal": 2000,
"want_maximised": false,
"mkfs_options": "-O ^huge_file",
"uncompressed_tarball_size": 750

En effet, 2 Go me suffisent comme taille de partition (« partition_size_nominal »: 2000), je ne souhaite pas non plus que la partition occupe toute la place disponible sur la carte microSD (« want_maximised »: false), et enfin l’archive occupera 750 Mo une fois décompactée comme l’indique xz -l.

Suppression du fichier flavours.json

Supprimez le fichier flavours.json. Il contient les informations pour que le système démarre sur Scratch. Sans la partie graphique ni Scratch, ça ne sert plus à rien ! Supprimez Raspbian_-_Boot_to_Scratch.png qui ne sert plus non plus, pour les mêmes raisons.

Remplacement des fichiers de Raspbian

Supprimez boot.tar.xz et root.tar.xz et remplacez les par vos versions personnalisées (celles qui sont sur votre clé USB 😉 )

Premier test

A partir de là vous disposez d’une version de NOOBS qui peut booter sur votre système personnalisé : je vous laisse tester…

NOTA : Avant les tests pensez à faire un sauvegarde du contenu de votre carte. Après le test de démarrage, vous pourrez rapidement reformater la carte microSD avec SDFormatter, puis remettre les fichiers dessus et repartir de ce point.

Modifier les champs du fichier os.json

Le fichier os.json contient les informations sur le système et sur l’utilisateur. Nous allons également les actualiser. D’origine, le fichier os.json contient :

{
"name": "Raspbian",
"version": "wheezy",
"release_date": "2015-05-05",
"kernel": "3.18",
"description": "A community-created port of Debian wheezy, optimised for the Raspberry Pi",
"url": "http://www.raspbian.org/",
"username": "pi",
"password": "raspberry",
"supported_hex_revisions": "2,3,4,5,6,7,8,9,d,e,f,10,11,12,14,19,1040,1041"
}

Que je modifie en

{
"name": "Frambian",
"version": "wheezy",
"release_date": "2015-08-02",
"kernel": "4.0",
"description": "Raspbian allégé - Ne comporte pas la partie graphique...",
"url": "http://www.raspbian.org/",
"username": "pi",
"password": "raspberry",
"supported_hex_revisions": "2,3,4,5,6,7,8,9,d,e,f,10,11,12,14,19,1040,1041"
}

Vous pouvez modifier le nom de l’OS, mais aussi le nom d’utilisateur et le mot de passe par défaut.

Changement de l’icône

RaspbianL’icône affichée par NOOBS dans la fenêtre de choix de l’OS est par défaut celle qui figure à droite de ce texte. Pour personnaliser l’installation de frambian, il faut fournir à NOOBS une icône mesurant 40 x 40 pixels. Ce sera le logo de framboise314 qui tiendra lieu d’icône pour frambian :

logoIl suffit de remplacer l’icône de Raspbian par votre icône. Attention, le nom doit respecter le nom de la distribution (ici : Frambian.png)

Renommer le dossier de Raspbian

Pour personnaliser complètement la version de NOOBS avec frambian, il faut encore renommer le dossier /os/Raspbian en /os/frambian (encore une fois en respectant le nom de la distribution, y compris la majuscule de la première lettre).

Encore un test

Oui, je sais je teste, je teste… Mais dites vous bien que si vous suivez un tutoriel comme celui-ci (ou un autre) sans tester SYSTÉMATIQUEMENT chaque étape, vous risquez de vous retrouver à la fin du tutoriel avec un « truc », voire un « machin » qui ne fonctionne pas… bouee_sauvetage_200pxÇa se finit en général par un commentaire désobligeant du genre « J’ai suivi ce tutoriel, il marche pô !… » ou encore « Ça marche pas, avez vous une idée de l’endroit où j’ai pu me tromper ?« … et le pauvre auteur est bien embêté pour vous aider parce qu’il y a des dizaines d’instructions dans le tutoriel et il ne peut pas savoir ce que vous avez oublié, raté, ce qui n’a pas fonctionné pour une raison ou une autre. Parfois ça fait plus d’un an que le tutoriel a été publié et il a coulé bien de l’eau sous les ponts et des applis sur les Raspberry Pi 😉 Conclusion, n’hésitez pas, sauvegardez à chaque étape, testez, recommencez… C’est uniquement comme ça que vous apprendrez, et pas en suivant à la lettre un ‘tuto » sans comprendre ce qu’il raconte.

Donc ici, si vous testez le démarrage de NOOBS vous obtenez ceci :noobs_frambian_02

Mais que voici donc une belle copie d’écran (Eh oui, elle sert la première partie de cet article…). On y voit qu’ayant supprimé le répertoire Raspbian pour le remplacer par Frambian, j’ai causé une belle frayeur à NOOBs qui s’en est allé sur le web quérir la version de Raspbian en ligne, ce qui est indiqué par la prise RJ45 à droite de la ligne Raspbian.

Par contre vous pouvez voir que ma distribution Frambian a bien été prise en compte par NOOBS 😉 et avec son icône s’il vous plait ! La description est également bien affichée. Comme j’utilise une carte microSD de 16Go NOOBS m’indique que 15 Go sont disponibles (Available)

Les plus téméraires sélectionneront Frambian en cliquant sur la case à gauche de sa ligne, puis choisiront le français comme langue d’installation avant de lancer l’installation en cliquant sur l’icône Install, en haut à gauche et…

noobs_frambian_03… assisteront à la première installation de leur système personnalisé, non sans essuyer la larme qui perle en ce moment historique…

La lecture de la carte SD sur une machine Linux après installation de frambian permet de vérifier que les partitions annoncées ci-dessus ont bien été créées par NOOBS :

/dev/sdb3                 31M  4,5M   25M  16% /media/SETTINGS
/dev/sdb5                 60M   20M   41M  33% /media/boot
/dev/sdb6                2,0G  817M  1,1G  44% /

Elle est pas belle, la vie ?

Il y a encore quelques améliorations à apporter à notre NOOBS pour que tout soit encore plus facile, et plus joli.

Personnaliser le Diaporama d’installation

Le dossier  os/Raspbian/slides_vga  contient les diapos qui sont affichées pendant l’installation pour vous faire patienter.

slides_vgaCes diapos s’appellent tout simplement A.png, B.png … G.png. Pour personnaliser encore un peu plus l’installation de NOOBS, vous pouvez créer vos propres diapos. Elles doivent faire exactement 387 x 290 pixels, avec une résolution de 72 pixels/pouce. Leur nombre peut varier, mais elles doivent garder la même convention de nommage : les lettres consécutives de l’alphabet, en majuscule, suivies de .png.

Pour faire ces modifs, vous choisirez le logiciel qui vous convient le mieux. The Gimp est pas mal, PhotoFiltre aussi. Ceux qui aiment utiliser un bazooka pour écraser un moustique utiliseront Photoshop (oh ! je plaisante !!). Pour ma part et à ma plus grande honte, j’utilise PhotoImpact de Ulead, une antiquité qui doit dater du millénaire précédent, mais qui en quelques clics de souris me permet d’obtenir le résultat que j’attends…

Au démarrage pas de surprise, on retrouve exactement le même écran que précédemment lors du test de NOOBS avec Frambian. Cochez la case de Frambian, choisissez le français comme langue d’installation, puis cliquez en haut à gauche sur l’icône Install.

C’est maintenant que les choses changent puisque les écrans qui défilent sont ceux que vous avez vous même créé.

frambian_noobs_install_02a

Les messages sont en français  et NOOBS est en train de créer une partition pour Frambian…

frambian_noobs_install_03

frambian_noobs_install_04

frambian_noobs_install_05

frambian_noobs_install_06

frambian_noobs_install_07

Ça vous a plu ? A vous de jouer maintenant si vous voulez personnaliser votre NOOBS vous avez tous les éléments en main. Soyez patient, lisez bien les infos avant de vous lancer, testez, sauvegardez… On ne le dira jamais assez.

Et puis si vous voulez tester Frambian, la version de NOOBS spéciale framboise314, elle vous attend sagement, il suffit de cliquer sur ce lien pour la télécharger !

Et pour vérifier le téléchargement :

  •  SHA1 : 776665938E6335597FF1035DA9698E92BCF977A0
  • MD5  :  077CB16F025B17F17829E42D0C222F05

Bien entendu ce ne sont pas les seules possibilités de NOOBS qui nous réserve encore quelques surprises. Suivez moi si vous voulez encore en savoir plus 😉

Configurer la langue par défaut, la partition de boot…

Éditez le fichier recovery.cmdline dans le répertoire principal de NOOBS et ajoutez les arguments suivants le cas échéant :

  • lang=<langage codé sur 2 lettres> (exemple : lang=fr ou lang=en)
  • keyboard=<type de clavier codé sur 2 lettres> (exemple : keyboard=fr ou keyboard=us)
  • display=<numéro du mode d'affichage> (exemple : display=1 ou display=3)
  • partition=<numéro de partition> (exemple : partition=5)

Si les deux premiers paramètres sont assez parlants, le troisième indique à NOOBS quel mode vidéo il doit utiliser pour l’affichage :

  • 1 = HDMI
  • 2 = HDMI safe mode (mode sans échec)
  • 3 = composite PAL
  • 4 = composite NTSC

Le mode 2  ou « mode sans échec » peut être utilisé pour essayer de démarrer avec une compatibilité maximale HDMI

Le quatrième paramètre indique la partition qui est sélectionnée par défaut, celle sur laquelle NOOBS bootera après le time-out du menu.

NOTA : Les valeurs que vous sélectionnerez dans l’interface graphique de NOOBS remplaceront ces paramètres.

Ignorer l’écran d’accueil (spashscreen) et booter directement

Après avoir installé le (ou les) système(s) d’exploitation que vous avez choisi(s), vous pouvez ajouter le fichier suivant dans le répertoire racine de NOOBS pour que la partition indiquée soit bootée, sans passer par les menus de NOOBS. Le splashscrren (l’écran gris avec une framboise au milieu) ne sera pas affiché.

  1. Ajouter un fichier texte nommé autoboot.txt dans le répertoire racine de NOOBS.
  2. Ajouter boot_partition = <numéro de partition> dans le fichier et l’enregistrer sur le disque.

Cela permettra également d’éviter que les écrans de NOOBS soient affichés au démarrage. Le numéro de la partition peut être trouvé en exécutant sudo fdisk -l : la partition sera l’une des partitions FAT32 affichées  /dev/mmcblk0p5  serait la partition 5.

NOTA : Une fois un fichier autoboot.txt présent dans le répertoire racine de NOOBS, il n’y a plus aucun moyen de forcer l’affichage de l’interface graphique de NOOBS. Si vous voulez afficher NOOBS il faudra supprimer (ou renommer) le fichier autoboot.txt.


Dépannage de NOOBS

 Que faire si l’appui sur la SHIFT n’agit pas

Essayez d’appuyer sur la touche SHIFT uniquement lorsque l’écran gris avec le logo du Raspberry Pi apparait, au lieu de la maintenir appuyée tout le temps du démarrage.

Démarrer en « Safe Mode »

Pour démarrer dans une « boîte à outils » en ligne de commande plutôt que de lancer l’interface graphique de  NOOBS, vous pouvez soit :

  1. Ajouter  rescueshell  à la liste d’arguments dans le fichier  recovery.cmdline  qui se trouve dans le répertoire principal de NOOBS.
  2. Insérer un cavalier (jumper) entre les broches 5 et 6 du connecteur GPIO (P1). Si vous avez du matériel connecté au GPIO ou une carte d’extension connectée su le port GPIO, il peut arriver que la broche 5 soit mise à la masse. Ceci déclenche accidentellement le « Safe Mode ». Le paragraphe suivant vous indique comment remédier à cela.

Ne pas démarrer en « Safe Mode »

Si la broche 5 du GPIO est mise à la masse lors du démarrage de NOOBS, celui-ci démarre en mode console (shell). Pour éviter le démarrage en « Safe Mode » (une « boîte à outil » en ligne de commande), vous pouvez ajouter  disablesafemode  à la liste d’arguments dans le fichier  recovery.cmdline  qui se trouve dans le répertoire principal de NOOBS.

Utiliser le GPIO pour passer en Mode Récupération

Pour forcer le passage en Mode Récupération au démarrage de NOOBS et afficher l’interface de NOOBS, vous maintenez normalement la touche MAJ (SHIFT) enfoncée pendant le démarrage. S’il n’y a pas de clavier ou si l’appui sur la touche SHIFT n’est pas détecté, suivez les instructions suivantes pour que l’interface de NOOBS s’affiche au démarrage :

  1. Ajoutez  gpiotriggerenable  à la liste d’arguments dans le fichier  recovery.cmdline  qui se trouve dans le répertoire principal de NOOBS.
  2. Rebootez

Pour forcer le passage en Mode Récupération au démarrage, connectez la broche 3 du GPIO (P1) à la masse GND (broche 25). Si la broche 3 du GPIO reste en l’air (déconnectée) NOOBS va démarrer normalement sur l’OS installé.

Forcer le Mode Récupération au démarrage (prioritaire sur le GPIO et le clavier)

Si vous n’êtes pas en mesure d’utiliser le GPIO ou le clavier pour déclencher le passage en Mode Récupération, vous pouvez :

  1. Ajouter  forcetrigger  à la liste d’arguments dans le fichier  recovery.cmdline  qui se trouve dans le répertoire principal de NOOBS.
  2. Rebooter

Notez que lorsque cette option est activée, le Mode Récupération est affiché chaque fois que vous démarrez à partir de votre carte NOOBS (jusqu’à ce que vous modifiiez  recovery.cmdline  en enlevant  forcetrigger ).

Désactiver l’utilisation du clavier pour passer en mode récupération

Dans quelques rares cas, il se peut que NOOBS détecte un appui sur la touche SHIFT de votre clavier alors que vous n’avez rien fait ;). Dans de tels cas, il est possible de désactiver l’utilisation du clavier pour déclencher le Mode Récupération.

Pour éviter qu’une pression sur la touche SHIFT ne fasse entrer NOOBS dans le Mode  Récupération au démarrage (si vous un clavier problématique qui déclenche le Mode Récupération à tort chaque fois que vous démarrez), vous pouvez :

  1. Ajouter  keyboardtriggerdisable  à la liste d’arguments dans le fichier  recovery.cmdline  qui se trouve dans le répertoire principal de NOOBS.
  2. Rebooter

Modifier le mode de la sortie vidéo

Par défaut, NOOBS envoie la vidéo sur la prise HDMI à la résolution préférée de votre écran, même si aucun écran HDMI est connecté. Si vous ne voyez rien sur votre écran HDMI ou si vous utilisez la sortie composite, appuyez sur la touche 1, 2, 3 ou 4 de votre clavier pour sélectionner la sortie HDMI, le mode sans échec HDMI, la sortie composite en PAL ou en NTSC.

  • 1 = HDMI
  • 2 = HDMI safe mode (mode sans échec)
  • 3 = composite PAL
  • 4 = composite NTSC

Si vous n’avez pas de clavier, vous pouvez toujours modifier le mode d’affichage utilisé par NOOBS en modifiant le fichier recovery.cmdline  situé à la racine du répertoire de Noobs avant le premier démarrage en ajoutant l’argument suivant:

  • display=<numéro du mode d'affichage> (exemple :  display=1 oo display=3)

 

Reconstruire NOOBS

NOTA : Ceci nécessite au moins 6 Go de mémoire.

Récupérer les dépendances

Sur Ubuntu :

  • sudo apt-get install build-essential rsync texinfo libncurses-dev whois unzip

Lancer le script de construction

  • ./BUILDME.sh

Buildroot construira ensuite le logiciel et toutes les dépendances, puis rangera le résultat dans le répertoire  output .

Buildroot compile par défaut plusieurs fichiers en parallèle, en fonction du nombre de cœurs du processeur équipant la machine utilisée.

Si la machine sur laquelle vous compilez NOOBS a un CPU quad core, mais pas beaucoup de RAM, vous pouvez en réduire le nombre pour diminuer le swapping :

  •  buildroot cd; make menuconfig
  • Dans  « Build options » ==> « Number of jobs to run simultaneously » réglez le nombre de tâches simultanées.

Exécuter votre version de NOOBS

Pour préparer une carte microSD avec une version de NOOBS que vous venez de construire, vous devrez :

  • Formater en FAT une carte microSD de 4 Go ou plus
  • Remplacez le répertoire  /os  du répertoire  /output  avec la copie contenue dans la version actuelle de NOOBS (lien de téléchargement)
  • Copiez les fichiers existant dans le répertoire  /output  sur la carte microSD

Infrastructure de Buildroot

Pour ajouter des paquets supplémentaires :  cd buildroot ; make menuconfig

Le paquet du logiciel Recovery est dans : buildroot/package/recovery

Configuration de noyau utilisée : buildroot/kernelconfig-recovery

Principales différences avec  bcmrpi_defconfig :

  • CONFIG_BLK_DEV_INITRD=y – support de initramfs
  • CONFIG_INPUT_EVDEV=y – support de evdev inclus
  • CONFIG_USB_HID=y – driver usb HID inclus
  • Tous les modules désactivés

Modifier la source de Qt

Les sources sont dans le dossier recovery. Soyez attentif au fait que les écrans d’interface utilisateur apparaîtront plus grand dans Qt Creator que lorsqu’ils seront déployés sur un Raspberry Pi. vous pouvez augmenter la taille des polices de caractères de deux points pour compenser.

Certaines constantes peuvent être modifiées dans config.h

Entourez le code qui apppelle les classes spécifiques de Qt Embedded (comme QWSServer) entre

#ifdef Q_WS_QWS

et

#endif

De façon que le projet soit également compilé et puisse être testé sous un Qt standard.

Ajouter/Mettre à jour des traductions

Références:

http://qt-project.org/doc/qt-4.8/i18n-source-translation.html

http://qt-project.org/doc/qt-4.8/linguist-manual.html

Pour mettre en place « crochet » (hook) Git pour mettre à jour automatiquement les fichiers de traduction, exécutez les commandes suivantes à la racine du projet :

chmod + x pre-commit-translation-update-hook.sh

cp pre-commit-translation-update-hook.sh  .git/hooks/pre-commit

Pour ajouter une nouvelle traduction

  • Ajouter à recovery/recovery.pro ce qui suit :
    TRANSLATIONS += translation_<code_de_la_langue>.ts
  • Exécutez lupdate recovery/recovery.pro qui extrait les chaînes à partir du code source et génère/met à jour les fichiers .ts.
  • Les .ts peuvent ensuite être envoyés au traducteur, ouverts dans Qt Linguist et remplis.
  • Ajouter une ligne pour le fichier .ts dans recovery/icons.qrc, mais remplacez l’extension .ts par .qm. Ce fichier contient une liste des fichiers de ressources qui seront intégrés à l’exécutable de l’application lors de la construction.
  • Ajouter une icône du drapeau corrspondant à votre langue prise sur http://www.famfamfam.com/lab/icons/flags/  ou si vous n’y trouvez pas le drapeau dont vous avez besoin, vous pouvez utiliser une autre petite icône png en remplacement. Copiez le fichier de l’icône dans le dossier recovery/icons et ajoutez une ligne pour ce fichier dans recovery/icons.qrc.

Jeux d’icônes utilisés

Les jeux d’icônes actuellement utilisés sont :

Conclusion

Nous voici arrivés au terme de cette série de trois articles. Si vous utilisiez NOOBS uniquement pour installer un système ou le régénérer en cas de problème, vous avez pu vous rendre compte que NOOBS c’est bien plus que ça !

Pouvoir produire et personnaliser votre propre NOOBS vous permettra d’intégrer un OS personnalisé. De plus l’installation se réduit à la copie de fichiers sur une carte microSD neuve, sortie de sa boîte, sans préparation aucune.

Vous avez à votre disposition un outil très souple et adaptable. Profitez-en !

Comme d’habitude, toutes les sources que j’ai utilisées sont référencées dans le texte sous forme de liens ou dans la rubrique Sources en bas des articles. Vous pourrez ainsi vérifier que je n’ai pas raconté trop de conneries mes traductions sont conformes et ne comportent pas d’interprétation erronée…

Et puis si vous avez des remarques… les commentaires sont là pour ça…

noobs_FB

Personnaliser NOOBS : Partie 1Partie 2Partie 3

==============>>  Mise à jour du 9 août 2015    <<==============

Puisque vous avez eu le courage de lire cette série d’articles jusqu’ici, je vous offre un Bonus!

Suite à des demandes de lecteurs souhaitant imprimer de manière correcte ces 3 articles (ce qui n’est pas facile avec des articles en ligne…) j’ai mis ces articles en forme dans un document PDF qui est disponible en téléchargement sous licence CC-BY-NC-SA :

page_0_300pxVous disposez en début de document d’une table des matières très complète qui vous envoie vers le paragraphe désiré avec un simple clic 😉

Sources

Share Button

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. .

29 réflexions au sujet de « Personnaliser NOOBS et ses distributions – 3/3 »

  1. Ping : Personnaliser NOOBS et ses distributions – 2/3 | Framboise 314, le Raspberry Pi à la sauce française….

  2. bzh44

    Et encore une série très intéressante comme toujours. Merci beaucoup.
    Entre les bières et les 1/2 verres de vin, j’ai eu un peu peur que ça finisse mal au terme du 3° épisode … un peu comme pour la recette de la dinde au whisky 😉

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      Merci pour le retour
      Je ne renie pas mes origines : chtimi = bière et bourguignon d’adoption = vin
      et puis… avec la canicule il faut s’hydrater non ?
      cordialement
      François

      Répondre
  3. Ping : Personnaliser NOOBS et ses distributions &ndash...

  4. Gregpouet

    Superbe série d’articles, c’est vraiment du bon boulot !
    Je me posais une petite question : le fait de compresser le rootfs et boot « à chaud » ne pose t-il pas de problèmes ? Dans ce cas, peut-on imaginer de faire des sauvegardes régulières de ces 2 éléments (pour suivre les paquets installés/désinstallés, fichiers de configuration et autres) puis par exemple créer un système de backup rapide en créant un nouveau répertoire dans « os » pour qu’en cas de gros problème on puisse revenir à une version pas trop éloignée de ce qu’on avait avant ce « gros problème » ?
    Merci !

    Répondre
    1. Gregpouet

      Et question complémentaire : j’ai plusieurs types de raspberry (un B, un B+ et un 2), est ce qu’une distribution personnalisée faite sur l’un peut etre compatible avec l’autre ?
      Merci 😉

      Répondre
      1. François MOCQ Auteur de l’article

        Pour répondre à la question subsidiaire, c’est compatible dans le sens descendant. Je m’explique : Un système actuel est capable de reconnaître s’il tourne sur un B, un B+ ou un Pi2. Il s’adapte en conséquence (en particulier certaines adresses de périphériques internes au SoC ont changé entre le BCM2835 et le BCM2836).
        Par contre un système personnalisé sur un B+ ne tournera pas sur un Pi2.
        J’espère que ça répond à votre question
        Cordialement
        François

        Répondre
    2. François MOCQ Auteur de l’article

      Bonjour
      Non, les fichiers sont juste lus sur la carte. Seuls les répertoires mis à jour de façon dynamique peuvent poser problèmes, mais on les exclut de la copie…
      Il existe un moyen tout simple de faire un backup, c’est de faire un image de la carte avec Win32DiskImager sous Windows ou dd sous Linux.
      J’avais aussi décrit un script en février 2014, à tester, mais il doit toujours fonctionner…
      cordialement
      François

      Répondre
      1. Gregpouet

        Merci pour vos reponses, c’est trés clair 😉
        Concernant le backup, je parlais plutot d’un moyen simple pour le faire sans avoir a couper le raspberry puis retirer la carte sd pour faire la copie… C’est pourquoi je me demandais s’il serait possible d’utiliser cette technique de personnalisation de distrib pour ça ! Au pire je testerai et je verrai bien si c’est jouable 😉
        Merci !

        Répondre
          1. Gregpouet

            Ah j’avais mal lu, au temps pour moi !
            Je testerai à l’occas et je testerai aussi avec noobs et je reviendrai pour vous dire les résultats !
            Merci pour vos réponses et merci pour ce site bourré d’infos interessantes 😉

  5. neolao

    Est-ce qu’il est obligé de créer une archive .tar.xz pour une nouvelle partition ?
    On ne peut pas simplement mettre le dossier et le référencer dans partitions.json ?

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      c’est ce qui est indiqué dans la doc de NOOBS
      je n’ai pas essayé de faire autrement car NOOBS attend un tar.gz
      maintenant si vous voulez essayer ça ne risque rien ! (à part de ne pas fonctionner 😉 )
      cordialement
      François

      Répondre
  6. zapoc

    Bonjour superbe article!! Cependant je n’y est pas trouvé la réponse a ma question

    J’ai creer 2 Os customisé, pour le moment pour les installer c’est la procédure classique :
    1)Noobs se lance affiche mes 2 os sur la carte SD en plus des autre OS dispo en ligne
    2)Je dois sélectionner mes 2 OS puis cliquer sur install
    3)Je choisi l’os par defaut
    J’aimerais tout automatiser de façon à ce que l’utilisateur final n’est aucune manip à faire et, si ca n’est pas possible, désactiver l’affichage des OS disponible en ligne.

    Auriez-vous une piste ou une idée la dessus?

    Répondre
  7. Ping : Raspe | Pearltrees

  8. Nico

    Bonjour,

    Excellent articles au sujet de NOOBS et raspbian !
    J’ai une question, peut-être avez vous la réponse !

    J’ai installé une raspbian sans passé par NOOBS donc je n’ai pas de recovery (juste déployé avec un fichier .img)
    Est-il possible de réinstaller par après cette partition recovery ?

    Ex: j’ai eu une erreur avec pam sur la Raspbian et donc je ne savais plus me connecter en SSH & en local ! (System is booting up, see pam nologin). Seul le root aurait été autorisé mais je n’avais pas de mot de passe sur le root !
    En ayant la possibilité de démarrer en ligne de commande avant l’os, j’aurai peut-être pu résoudre ce problème.
    Quelle serait la meilleure pratique ?

    Merci d’avance.
    Bien à vous,

    Répondre
  9. Manu999

    Bonjour,
    article intéressant en effet mais noob 1.9 n’as pas openelec integré.
    comment est-il possible d’intégrer openelec dans noobs?.
    Mes tentatives on echoué car je pense que ,soit je n’ai pas pris la bonne version d’openelec, soit il faut l’adapter a noob.

    merci d’avance.

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP * Time limit is exhausted. Please reload CAPTCHA.