Dernier é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 1 – Partie 2 – Partie 3
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
Pour 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 :
La 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 :
- 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é.)
- bootcode.bin détecte que start.elf est manquant, alors il charge et exécute recovery.elf en lieu et place.
- 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.
- 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).
- 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 :
- 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.
- Il crée une nouvelle partition étendue /dev/mmcblk0p2, en utilisant la presque totalité de l’espace restant sur la carte.
- 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.
- 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 :
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.
Comme 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.
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.
Une 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
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 :
- 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.
- 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.
- É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
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.
- Téléchargez une version de base de NOOBS depuis http://downloads.raspberrypi.org/NOOBS_latest
- Extrayez les fichiers de NOOBS de l’archive
- Accédez au répertoire os
- 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.
- Modifiez les champs suivants dans le fichier os.json qui se trouve dans le dossier que vous venez de créer
- « name » – Remplacer le nom de l’OS avec le nom de votre version d’OS
- « description » – Remplacer la description de l’OS standard par celle de la version de votre système d’exploitation personnalisé.
- [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
- [Optionnellement] Remplacez les fichiers d’image PNG dans les répertoires slides et slides_vga par vos propres diapositives personnalisées
- Modifiez les champs suivants dans le fichier partitions.json contenu dans le dossier que vous venez de créer
- « Partition_size_nominal » – Remplacez la valeur numérique par la taille des partitions de votre version personnalisée du système d’exploitation
- « 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
- 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).
- 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
- 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
Dans 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: Le dossier qui nous intéresse est le dossier os.
Ce dossier contient lui même 2 dossiers : Data_Partition et Raspbian. Double-cliquez sur Raspbian
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
L’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 :
Il 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… Ç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 :
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…
… 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.
Ces 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éé.
Les messages sont en français et NOOBS est en train de créer une partition pour Frambian…
Ç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
oulang=en
)keyboard=<type de clavier codé sur 2 lettres>
(exemple :keyboard=fr
oukeyboard=us
)display=<numéro du mode d'affichage>
(exemple :display=1
oudisplay=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é.
- Ajouter un fichier texte nommé autoboot.txt dans le répertoire racine de NOOBS.
- 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 :
- Ajouter rescueshell à la liste d’arguments dans le fichier recovery.cmdline qui se trouve dans le répertoire principal de NOOBS.
- 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 :
- Ajoutez gpiotriggerenable à la liste d’arguments dans le fichier recovery.cmdline qui se trouve dans le répertoire principal de NOOBS.
- 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 :
- Ajouter forcetrigger à la liste d’arguments dans le fichier recovery.cmdline qui se trouve dans le répertoire principal de NOOBS.
- 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 :
- Ajouter keyboardtriggerdisable à la liste d’arguments dans le fichier recovery.cmdline qui se trouve dans le répertoire principal de NOOBS.
- 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
oodisplay=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 :
- http://www.fatcow.com/free-icons – Licence : Creative commons Attribution
- http://www.famfamfam.com/lab/icons/flags – « Ces icônes de drapeau sont disponibles librement quelqu’en soit l’usage, sans nécessiter d’attribution. »
- http://www.oxygen-icons.org/ – Dicponible sous license Creative Common Attribution-ShareAlike 3.0 et licence LGPL
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…
Personnaliser NOOBS : Partie 1 – Partie 2 – Partie 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 :
Vous 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
- https://github.com/raspberrypi/noobs/wiki/NOOBS-partitioning-explained
- https://github.com/raspberrypi/noobs/wiki/Standalone-partitioning-explained
- https://github.com/raspberrypi/noobs
- http://www.i-programmer.info/programming/hardware/7688-real-raspberry-pi-custom-noobs.html?start=1
- http://www.i-programmer.info/programming/hardware/7688-real-raspberry-pi-custom-noobs.html?start=2
- http://www.framboise314.fr/docs/frambian.zip