FRANCISATION DE REDO BACKUP & RESTORE

| Christophe LOUVET | Philippe RONFLETTE | WinJerome |

Dans cet article nous allons apprendre à franciser la distribution spécialisée en sauvegarde/restauration Redo Backup & Recovery. Outre le fait de rendre cet outil accessible aux non-anglophones, ce tutoriel permettra avant tout de proposer des méthodes et des solutions utiles pour la francisation d'autres distributions.

Commentez

- Titre : FRANCISATION DE REDO BACKUP & RESTORE

- Auteurs : Christophe LOUVET, Philippe RONFLETTE, WinJerome

- Parution : 15 avril 2016

- Mise à jour : 16 janvier 2020

- Public visé :

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2016 Christophe LOUVET. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Analyse

- II-A. Que contient Redo Backup & Recovery ?

- II-B. Recherche du fonctionnement de Redo Backup

- III. Essais de fonctionnement sur système indépendant

- IV. Traduction de l'application Redo Backup

- V. Modification du Live CD

- V-A. Qu'est-ce qu'un Live CD ?

- V-B. Fonctionnement d'un Live CD

- V-B-1. UnionFS

- V-B-2. SquashFS

- V-C. Préparation

- V-D. Passage du clavier en français

- V-E. Création d'une partition via l'utilitaire Gparted

- V-F. Copie des fichiers du CD-ROM Redo Backup dans notre partition

- V-G. Extraction du contenu du SquashFS d'origine

- V-H. Modification du système source

- V-H-1. Intégration des modifications de Redo Backup

- V-I. Régénération du SquashFS

- V-J. Régénération du CD-ROM

- V-J-1. Remplacement du SquashFS

- V-J-2. Modification de la configuration du bootloader Isolinux

- V-J-3. Gravure du nouveau CD

- VI. Tests

- VII. Traduction de la partie système et utilitaires

- VII-A. Traduction du menu du dock

- VII-A-1. OpenBox

- VII-A-2. AdeskBar

- VII-A-3. Correction du système pour la traduction

- VII-B. Traduction du menu contextuel d'OpenBox

- VII-C. Traduction des boutons arrêt

- VIII. corrections et améliorations

- IX. Nettoyage du CD

- X. Conclusion

- X-A. Pour aller plus loin

- X-B. Sources

- X-C. En complément

- X-D. remerciements

I - Introduction

Dans cet article nous allons montrer comment franciser la distribution Redo Backup & Recovery dont il n'existe qu'une version anglaise.

Vous pouvez consulter une présentation de Redo Backup ici.

Tout le monde n'est pas à l'aise avec l'anglais et surtout quand il s'agit de faire une sauvegarde, c'est pourquoi nous avons eu l'idée de franciser cet outil et de vous apprendre à le faire vous-même.

Cet outil a un fonctionnement similaire à CloneZilla, mais est plus simple à utiliser. Il comporte cependant beaucoup moins d'options que CloneZilla

Nos essais ont tout d'abord été exécutés dans un environnement virtualisé, de façon à pouvoir plus facilement effectuer des modifications expérimentales.

II - Analyse

II-A - Que contient Redo Backup & Recovery ?

Cette distribution contient le logiciel Redo Backup lui-même, qui démarre dès le chargement de l'interface graphique, ainsi que quelques outils de circonstance tels que :

- Gparted - pour l'édition de partitions ;

- un manager de volumes logiques ;

- Photorec pour la récupération de données ;

- Chromium comme navigateur Web.

La distribution utilise le gestionnaire de fenêtres OpenBox, basé sur l'environnement LXDE. Elle intègre également les outils suivants :

- LXTerminal comme émulateur de terminal ;

- PCManFM comme File Manager ;

- LeafPad comme éditeur de texte.

Ces outils sont accessibles dans le menu d'OpenBox.

II-B - Recherche du fonctionnement de Redo Backup

Nous avons commencé par chercher à comprendre le fonctionnement de Redo Backup.

Où se trouve l'exécutable ?

L'appel depuis la commande suivante nous a permis de le savoir :

ps -aux

La liste des processus actifs nous fait apparaître Redo Backup.

Cette commande lancée dans LXTeminal nous a donné deux informations importantes :

1. L'emplacement de l'exécutable : /sbin/redobackup ;

2. C'est un script Perl (la commande appelante étant /usr/bin/perl -w /sbin/redobackup).

III - Essais de fonctionnement sur système indépendant

Nous avons recopié le script Perl RedoBackup sur une partition ext2 montée dans la VM (voir la partie modifications depuis le CD) et avons redémarré la VM avec un CD Live Debian 7, de façon à le tester sur une distribution complètement indépendante.

Le lancement de la commande nous a retourné le message d'erreur suivant :

Can't locate XML/Simple.pm

Cette erreur étant corrigée en installant le paquet libxml-simple-perl.

apt-get update
apt-get install libxml-simple-perl

Une nouvelle erreur :

cat : /usr/share/redo/VERSION : No such file or directory
cat : /usr/share/redo/TITLE : No such file or directory
Failed to open file '/usr/share/redo/redobackup.glade ' : No such file or directory

Il va donc nous falloir redémarrer sur le Live CD Redo Backup pour récupérer le dossier /usr/share/redo. Nous avons également une autre indication, l'utilisation de Glade, ce qui devrait nous faciliter la traduction.

Après avoir redémarré le Live Debian, nous avons copié le dossier /usr/share/redo de notre partition vers le système en cours. Une fois libxml-simple-perl réinstallé, Redo Backup démarre cependant sans afficher les images. Nous nous en occuperons plus tard.

À ce stade, nous n'avons absolument pas consulté le code.

Pour aller un peu plus loin, nous avons cliqué sur « backup » et avons obtenu l'erreur suivante :

Nous allons donc devoir étudier le code de façon à comprendre d'où elle vient.

En analysant le fichier /sbin/redocbakup (qui comme nous l'avons vu dans la partie 2,2 est un script Perl), nous trouvons à partir de la ligne 113 du code :

##### Backup Logic #####################################################
sub backup_mode {
# Enter Backup mode
our %status;
$status{'action'} = 'backup';
backup_step(1);
}

sub backup_step {
# Advance to the next Backup Step
my $step = $_[0];
….

En descendant un peu plus bas dans le code, nous trouvons autre chose d'intéressant (ligne 133) :

find_local_drives();

En cherchant le code de la fonction, nous trouvons ceci ligne 1328 :

my $drivelist = `fsarchiver probe 2>&1`;

Sans connaître explicitement le langage Perl, nous reconnaissons ici l'appel à une commande système, notamment via la redirection « 2>&1 ».

En effectuant une recherche, nous trouvons que fsarchiver est un utilitaire permettant de sauvegarder le contenu d'un FileSystem dans un fichier compressé.

Tentons donc l'ajout de fsarchiver :

1. apt-get install fsarchiver

Nous n'avons plus le message d'erreur et pouvons sélectionner le volume à sauvegarder.

Il nous faut par contre continuer jusqu'au bout le test.

Nous allons pour cela ajouter un second disque virtuel et copier le premier sur le second.

Nous déclenchons la sauvegarde, mais rien ne se passe. En regardant les messages dans la console ayant servi à lancer Redo Backup nous voyons le message suivant :

1. sh : 1 : partclone.exts: not found

Nous installons donc Partclone :

1. apt-get install partclone

Une fois celui-ci installé, la sauvegarde fonctionne.

Redo Backup & Recovery est donc un frontend de Partclone.

IV - Traduction de l'application Redo Backup

Nous avons vu, dans la partie précédente, que les fichiers principaux sont le script Perl Redo Backup et le fichier redobackup.glade.

Le fichier glade est un fichier XML décrivant l'interface graphique. Glade est un outil de conception d'interface graphique GTK+ (Gimp Tool Kit).

Nous avons donc traduit les chaînes de caractères correspondant à des messages en prenant garde à ne pas toucher aux chaînes correspondant à des identifiants.

Nous nous sommes ensuite attaqués au script Perl lui-même.

Nous avons dû ajouter ceci en début de code de façon à ce que les accents soient pris en compte :

use utf8;
use Encode;

Résultat avec les fichiers de traduction dans un Live CD Debian  :

Nous avons modifié le début du script concernant les copyrights :

#!/usr/bin/perl -w
# ----------------------------------------------------------------------
#   Redo Backup
#   A simple GUI interface that allows bare-metal backup and restore.
# ----------------------------------------------------------------------
#   Copyright (C) 2012 RedoBackup.org
#   French translation / traduction française :
#   Philippe RONFLETTE & Christophe LOUVET
#   Original files with / fichiers originaux avec extension .orig
# ----------------------------------------------------------------------

Nous laisserons une copie des fichiers originaux en leur ajoutant l'extension .orig.

Nous en profitons pour ajouter « _fr » dans le texte du fichier /usr/share/redo/VERSION, ce qui affichera la version avec fr.

Nous avons également traduit le script « drivereset » servant à effacer un disque.

Celui-ci aurait pu être remplacé par Wipe ou Schred.

V - Modification du Live CD

Avant de procéder, il nous faut d'abord comprendre le fonctionnement d'un Live CD.

V-A - Qu'est-ce qu'un Live CD ?

Un Live CD est un CD ou DVD-ROM qui contient un système d'exploitation bootable entièrement opérationnel. Il est tout à fait possible d'ajouter des logiciels et de modifier les fichiers présents. Si ce système est exploité sur une clé USB le nom utilisé sera Live USB. Si le mode persistance est activé, il sera possible de garder ces modifications sur un support. Dans le cas contraire, toute modification sera perdue au redémarrage.

V-B - Fonctionnement d'un Live CD

V-B-1 - UnionFS

Un Live CD va booter sur un Filesystem spécial ; celui-ci est un «unionFS» avec une partie en lecture seule et l'autre en lecture/écriture en RAM (pouvant être sur un disque dur par exemple pour les UnionFS utilisés hors Live CD). Le nom unionFS vient du principe d'union en C permettant de stocker dans un même espace mémoire deux variables différentes.

union mon_union
{
int entier ;
double reel ;
}

Le système réservera pour cette union l'espace mémoire qu'exige la plus grande des deux variables, soit dans notre cas 8 octets (car un int prend 4 octets sur une machine 32 bits, et un double 8 octets).

En appelant mon_union.entier, le contenu sera traité comme un entier, en appelant mon_union.reel, celui-ci sera traité comme un réel double précision. Appeler l'un puis l'autre n'aura aucun sens, la valeur sera erronée, c'est soit l'un ou soit l'autre, les deux pseudovariables occupant le même espace mémoire.

Si nous appliquons cela à l'unionFS :

Deux points de montage distincts sont reliés de façon à être vus comme un seul. Ils se superposent. Dans le cas d'un Live CD, une partie est en lecture seule et une seconde en lecture/écriture, en RAM.

Tant qu'aucune modification n'est effectuée, c'est la partie lecture seule qui est utilisée. Si un fichier est modifié, celui-ci sera écrit dans le point de montage dédié à l'écriture et c'est la nouvelle version qui sera « vue » par le système (la version d'origine, toujours présente dans la partie en lecture seule, est alors masquée par la nouvelle version dans la zone lecture/écriture). La suppression d'un fichier est gérée en le renommant avec le préfixe .whcc, ce qui permet de le cacher au système. Les fichiers préfixés de cette façon ne seront pas visibles..

La partie lecture/écriture d'un Live CD est montée en ramdisk, elle est donc volatile. Il est possible de conserver les modifications en utilisant la fonctionnalité persistance.

Pour plus d'information : https://fr.wikipedia.org/wiki/Union_File_System.

V-B-2 - SquashFS

SquashFS est un FileSystem qui est compressé et en lecture seule. La décompression s'effectue à la volée lors de son utilisation.

Pour plus d'information : https://fr.wikipedia.org/wiki/SquashFS.

Les Live CD récents couplent un SquashFS avec AuFS, qui fonctionne comme UnionFS.

V-C - Préparation

Nous avons tout d'abord commencé par créer notre environnement de travail. Nous avons travaillé dans un environnement virtuel, de façon à pouvoir faire des essais et modifications rapides.

V-D - Passage du clavier en français

Passons tout d'abord le système en clavier français via la commande suivante saisie dans un terminal :

setxkbmap fr

Comme nous sommes en clavier QWERTY, il faut taper « setxkb;qp »

V-E - Création d'une partition via l'utilitaire Gparted

Nous avons créé une partition sur le disque virtuel raccordé à la VM via l'utilitaire Garted, appelé « Partition Editor » dans le menu « Disk Tools » de Redo Backup.

Depuis Gparted :

- création d'une table de partition (car disque vierge) via menu device -?create partition table ;

- création de la partition via le bouton droit de la souris sur la zone non allouée (not allocated) et new ;

- validation des opérations via appui sur l'icône, cela créant par défaut une partition ext2.

Nous montons ensuite cette partition dans le dossier /mnt via la commande :

mount /dev/sda1 /mnt

V-F - Copie des fichiers du CD-ROM Redo Backup dans notre partition

Nous copions ensuite le contenu du CD-ROM accessible depuis /cdrom via les commandes :

mkdir /mnt/cd
cp -R -v /cdrom/* /mnt/cd

Les options -R et -v permettent respectivement de faire une copie récursive et bavarde (v pour verbeux).

V-G - Extraction du contenu du SquashFS d'origine

En regardant le contenu du CD, nous avons repéré le Filesystem compressé dans le fichier /cdrom/casper/filesystem.squashfs.

Pour pouvoir y accéder, nous avons monté celui-ci en loopback, puis copié son contenu dans un dossier pour pouvoir le modifier.

mkdir /mnt2
mount -t squashfs -o loop /mnt/cd/casper/filesystem.squashfs /mnt2

Un message signifiant le montage en lecture seule est affiché.

Nous copions ensuite le contenu dans un dossier :

mkdir /mnt/contenu
cp -R -v /mnt2/* /mnt/contenu

Nous aurions pu utiliser la commande unsquashfs pour arriver au même résultat.

Le fichier squashFS pèse 225 Mo, le contenu décompressé 798 Mo.

V-H - Modification du système source

V-H-1 - Intégration des modifications de Redo Backup

Nous renommons les fichiers d'origine de Redo Backup dans notre copie :

mv /mnt/contenu/sbin/redobackup /mnt/contenu/sbin/redobackup.orig
mv /mnt/usr/share/redo/redobackup.glade /mnt/usr/share/redo/redobackup.glade.orig

Dans notre point de montage /mnt, nous avons les fichiers redobackup traduits dans le dossier fr, nous copions le contenu aux endroits adéquats :

cp /mnt/fr/redobackup /mnt/contenu/sbin
cp /mnt/fr/redobackup.glade /mnt/contenu/usr/share/redo

V-I - Régénération du SquashFS

Nous allons régénérer le nouveau squashFS. Pour cela il nous faut le paquet squashfs-tools.

Il nous est possible d'installer au moins temporairement ce paquet dans le chroot de façon à l'avoir à disposition.

cd /mnt/contenu
chroot .

Nous fixons ensuite les points de montage de proc, sys et devpts dans le chroot :

mount -bind proc proc
mount -bind sys sys
mount -t devpts none dev/pts

Puis l'installation des squashfs-tools (si on le souhaite) :

export LANG=C # pour éviter les messages d'erreurs de locales
apt-get update
apt-get install squashfs-tools

Nous démontons ensuite les volumes montés et quittons le chroot :

umount /dev/pts sys proc
exit

Génération du nouveau squashfs :

mksquashfs /mnt/contenu /mnt/filesystem.squashfs

V-J - Régénération du CD-ROM

V-J-1 - Remplacement du SquashFS

Une fois le nouveau squashFS généré, nous remplaçons l'ancien dans notre copie du CD :

mv /mnt/fileseystem.squashfs /mnt/cd/casper/

Nous ne reconstruirons pas le fichier filesystem.manifest ni l'empreinte md5 md5sum.txt.

Le fichier manifest contient les packages installés dans le Live CD, le fichier md5 permet de vérifier l'intégralité du CD. Ne pas les régénérer n'empêchera pas le fonctionnement de celui-ci. Vous pouvez les régénérer si vous le souhaitez, il faudra par contre le faire une fois toutes les modifications terminées.

V-J-2 - Modification de la configuration du bootloader Isolinux

Isolinux est la version boot sur CD du bootloader Syslinux. Il est équivalent à Grub ou Lilo. Il est relativement simple à modifier. Sa configuration se trouve dans le fichier isolinux/isolinux.cfg.

Nous allons le modifier de façon à forcer l'utilisation du clavier français, et en profiter pour traduire le menu.

Nous éditons simplement la version de notre copie de CD avec l'éditeur de texte intégré : LeafPad.

Pour avoir le clavier français nous avons ajouté «locale=fr_FR console-setup/layoutcode=fr» sur la ligne APPEND (avant les « -- » de fin de ligne) comme vu ici.

V-J-3 - Gravure du nouveau CD

Pour générer l'image ISO, nous utiliserons genisoimage, déjà intégré dans le Live CD. Comme nous aurons à effectuer plusieurs fois la gravure, nous allons créer un script dans notre partition.

#!/bin/sh
cd /mnt/cd
genisoimage -o /mnt/redobackup_fr.iso -b isolinux/isolinux.bin -c isolinux/boot.cat --no-emul-boot --boot-load-size 4 --boot-info-table -r -J ./

Une fois le CD généré, nous récupérons le fichier ISO dans l'hôte en SCP après avoir installé SSH.

Il est nécessaire de créer un mot de passe root, SSH refusant une connexion sans mot de passe.

Nous avons constaté un dysfonctionnement de la connexion ssh en cas de manipulation sur système en live avant installation de celui-ci, problème qui sera résolu en incorporant ssh lors d'une prochaine régénération du squashFS, ou en redémarrant et en réinstallant le paquet ssh.

VI - Tests

Lors du boot du nouveau CD généré, nous avons constaté un problème avec les accents sur l'écran Isolinux.

Par contre, l'accès à l'application Redo Backup francisée est opérationnel, et le clavier est bien en français.

Le problème d'accents a été réglé tout simplement en réenregistrant le fichier isolinux.cfg et en sélectionnant l'encodage CP850, encodage DOS Europe de l'Ouest.

L'encodage CP850 n'est pas présent dans la liste des encodages par défaut de LeafPad, il faut donc sélectionner « others encoding » et taper CP850.

Une fois le CD régénéré, nous avons au boot un affichage correct :

VII - Traduction de la partie système et utilitaires

Nous vous proposons dans cette partie deux approches différentes qui nous ont toutes deux permis d'aboutir à la francisation complète du système et de ses utilitaires.

Pour cette partie nous allons nous occuper des points suivants :

- le menu ;

- le système et les utilitaires.

Le gestionnaire de fenêtres (Window Manager) utilisé dans le Live Redo Backup se nomme OpenBox, celui-ci est connu pour être léger.

VII-A - Traduction du menu du dock

VII-A-1 - OpenBox

La page Wikipédia d'OpenBox précise qu'il y a trois fichiers de configuration :

- ~/.config/openbox/menu.xml

- ~/.config/openbox/rc.xml

- ~/.config/openbox/autostart.sh

Dans ces fichiers, nous ne trouvons pas trace des entrées de menu présentes à savoir :

- Accessories

- System tools

- Settings

Si on clique avec le bouton droit sur la barre en bas (celle de l'accès au menu et de l'affichage de l'heure), et que l'on sélectionne « Preferences », le titre de la fenêtre affiche AdeskBar. Nous allons rechercher de ce côté.

VII-A-2 - AdeskBar

AdeskBar est un lanceur d'applications pour OpenBox, écrit en Python.

Le dossier ~/.config/adeskbar contient un fichier default.cfg, mais dont le contenu ne correspond pas aux entrées de la barre de menu.

Sur les autres distributions de notre connaissance, les lanceurs sont des fichiers .desktop stockés dans ~/.local/share

En regardant dans ce dossier, nous trouvons un dossier contenant les fichiers correspondant aux applications. En éditant le fichier « File Manager » (file-manager.Desktop), et en modifiant la ligne « Name=… » pour y inscrire « Gestionnaire de fichiers », nous constatons, après avoir redémarré AdeskBar en tuant le processus, que cela a été pris en compte dans le menu. Nous modifions donc le nom des différentes entrées.

Pour certaines icônes, il y a plusieurs versions de fichiers, des fichiers *.desktop et des fichiers *gtk.desktop. Dans ce cas nous avons mis les deux fichiers à jour.

Nous nous occupons ensuite des titres de menus.

Dans le dossier ~/.local/share, nous trouvons un dossier desktop-directories contenant « Settings » et « System Tools », mais pas « Accessories ». Après modifications des deux entrées trouvées et redémarrage de ADeskBar, les modifications sont prises en compte.

Nous recherchons ensuite un fichier contenant « Accessories » dans le dossier de l'utilisateur courant :

grep -r Accessories .

Cette commande nous retourne des entrées dans le fichier .config/menu/applications.menu

Nous modifions le texte et redémarrons ADeskBar. Nous nous retrouvons avec deux entrées, un menu Accessoires contenant deux des cinq entrées du menu, et un menu « Accessories » contenant les trois autres. Ce n'est donc pas la bonne méthode.

En effectuant une recherche depuis la racine :

find . -name "*,directory"

nous trouvons un dossier /user/share/desktop-directories contenant un fichier Accessories. Après modification et redémarrage de ADeskBar, cela fonctionne.

Nous avons recopié les fichiers /root/.local/share dans le dossier etc/skel/.local/share de notre copie du squashFS, car dans un Live CD les comptes utilisateurs sont crées à la volée à partir de etc/skel tout comme pour la création d'un utilisateur sur un système standard. Le fichier Accessoires modifié dans /usr/share/dektop-directories a également été copié au même niveau.

Une fois le CD régénéré (comme présenté dans la partie 5), nous avons bien les éléments du menu traduit.

Traduction du système et des outils.

Recherche de francisation du système.

Nous avons tout d'abord tenté de trouver des solutions à la francisation du système de Redo Backup en cherchant :

- dans la documentation sur LXDE et OpenBox disponible sur Internet ;

- sur les forums autour de la question des problèmes de traduction de LXDE et d'OpenBox ;

- dans la documentation plus générale concernant la traduction des distributions Linux.

Ces pistes ont permis de trouver des solutions partielles. En installant un paquet de langues par :

apt-get install language-pack-gnome-fr

et en créant un fichier /etc/default/locale contenant :

LANG="fr_FR.UTF-8"

le système en lui-même est francisé (les messages dans un terminal), ainsi que la date et l'heure, des éléments du menu et de l'interface graphique, mais pas tous. L'interface graphique OpenBox demeure essentiellement en langue anglaise.

Nous décidons alors de faire appel à une démarche méthodique basée sur l'émission d'hypothèses et leur vérification en travaillant directement sur la distribution de Redo Backup installée de façon complète sur une partition en dur. Le principe d'une installation en dur est le même que dans la partie Préparation du Live CD (décompression du fichier squashFS). Il faudra de plus créer un répertoire /boot dans lequel on insérera les deux fichiers vmlinuz et initrid.lz qui se trouvent dans le répertoire /casper du CD. Si cette installation se fait en multiboot, on pourra démarrer sur la partition de Redo Backup en faisant un update-grub à partir du système principal si l'on est sous Linux.

Les bibliothèques de traduction sont-elles toutes bien présentes ?

Regardons du côté des fichiers ajoutés avec language-pack-gnome-fr. Ils se trouvent dans
/usr/share/locale-langpack/fr.

Nous y trouvons un dossier LC_MESSAGES dans lequel sont présents de nombreux fichiers avec l'extension .mo et des noms qui évoquent des fonctions ou applications du système. Ces fichiers ne sont pas lisibles avec un éditeur de texte.

Une recherche sur Internet nous permet de voir que ces fichiers .mo sont des fichiers de traduction, dans un format compilé. On peut les décompiler pour retrouver le fichier dans un format .po éditable avec un éditeur de texte (voir :http//www.allili.net/tutoriaux/convertir-les-fichiers-mo-et-po).

Nous essayons de décompiler un de ces fichiers, par exemple le fichier file-roller.mo, par la commande :

msgunfmt /usr/share/locale-langpack/fr/LE_MESSAGES/file-roller.mo > ~/file-roller.po

En regardant le contenu du fichier texte obtenu, nous voyons qu'il s'agit bien d'un fichier de traduction, et ici qu'il s'agit de la traduction du logiciel d'archivage.

Les bibliothèques de traduction semblent donc bien présentes.

Le système fait-il correctement le lien vers ces fichiers de traduction ?

Le système étant traduit en mode texte comme on peut le voir en utilisant un terminal, on peut donc supposer que c'est au niveau de l'interface graphique que pourrait se situer le problème. La saisie de la commande :

locale

dans un terminal nous montre que les variables d'environnement sont correctement définies. Ce n'est donc pas à ce niveau qu'il y a problème.

Si nous regardons du côté des fichiers de configuration de l'interface graphique, ils se situent dans /etc/xdg/openbox et comportent trois fichiers qui peuvent être surchargés dans une session utilisateur dans ~/.config/openbox.

Tout ce qui concerne l'environnement graphique peut également se situer dans /etc/x11.

Nous nous appuyons sur une distribution Lubuntu, basée sur lxde et Openbox, afin de comparer les deux distributions et tenter de déceler ce qui pourrait manquer à Redo Backup. Les trois fichiers de /etc/xdg/openbox sont présents dans les deux distributions, et rien, dans leur contenu, ne permet d'envisager un problème de ce côté.

On examine /etc/x11. Seule différence essentielle, la présence d'un lien symbolique pointant vers /usr/bin/Xorg dans Redo Backup.

Dans le sous-répertoire xinit, on voit que deux répertoires existent sous Lubuntu et non sous Redo Backup. Le répertoire xinitrc.d de Lubuntu contient un fichier, 50-systemd-user.sh, faisant appel à un élément d'environnement. Nous copions ce répertoire à la même place dans Redo Backup afin de voir s'il y a des changements.

Nous lançons dans une console sous Redo Backup le fichier 50-systemd-user.sh qui est un script. On obtient un message d'erreur informant d'un fichier manquant, systemctl. Nous allons donc le localiser dans Lubuntu par :

find /chemin/Lubuntu -name "systemctl"

Nous le copions dans le répertoire équivalent de Redo Backup, puis nous relançons 50-systemd-user.sh.

Nous avons un nouveau message d'erreur indiquant qu'il manque la bibliothèque libgcrypt.so.20.

Une recherche sur Internet montre qu'il s'agit d'une bibliothèque utilisée pour la cryptographie. Cela ne présente donc pas d'intérêt quant à notre problème.

Nous trouvons un autre sous-répertoire absent dans Redo Backup : xinput.de.
L'analyse de son contenu laisse supposer qu'il a pour rôle la prise en charge des langues asiatiques. Cela ne nous concerne donc pas.

Nous savons que c'est dans le dossier LC_MESSAGES que se trouvent les bibliothèques de traduction. Voyons donc s'il y a des différences entre Lubuntu et Redo Backup dans les fichiers pouvant faire appel à ce dossier. Nous saisissons dans un terminal :

sudo grep -rn "LC_MESSAGES" /etc/*

pour chacune des distributions. Nous ne voyons pas de différences au sein du dossier /etc.

Nous cherchons maintenant dans LC_MESSAGES de Lubuntu une bibliothèque d'une application également présente dans Redo Backup afin de vérifier si les menus de cette application sont traduits. Cela nous permettra de vérifier si le système renvoie bien vers les fichiers de traduction. Nous trouvons un fichier gparted.mo, et en lançant Gparted dans Redo Backup, nous constatons que l'application graphique est correctement traduite.

Le renvoi vers les traductions se fait correctement. Nous pouvons formuler une nouvelle hypothèse.

Les traductions se font également ailleurs que dans le seul dossier  /usr/share/locale-langpack/fr/LC_MESSAGE

Soit il y a présence de bibliothèques du même type dans d'autres dossiers, soit les traductions se font dans les binaires des applications.

Nous tentons une copie d'un binaire de Lubuntu à la place de celui équivalent de Redo Backup, par exemple celui du file manager PCManFM. Nous effectuons l'opération et lançons :

pcmanfm

sous Redo Backup à partir d'une console. Un message d'erreur nous indique qu'il manque la bibliothèque libfm-gtk.so.4. Donc nous saisissons :

apt-get update

puis :

apt-get install libfm-gtk

Nous obtenons un message nous indiquant qu'il est impossible de trouver le paquet.

Une recherche sur Internet nous apprend que ce paquet fait partie du paquet libfm-gtk4 qui reste lui-même introuvable pour Redo Backup. Nous nous heurtons en fait ici à un problème de version entre Lubuntu et Redo Backup : 15.10 pour Lubuntu, 12.04 pour Redo Backup.

Nous allons donc télécharger et installer une Lubuntu 12.04. Ceci fait, nous tentons à nouveau le remplacement du fichier binaire de PCmanFM par celui d'une Lubuntu 12.04, correctement traduit. Le lancement sous Redo Backup se fait sans problème, mais les menus de l'application sont toujours en anglais. Ce n'est donc pas dans le binaire que se font les traductions.

Nous tentons maintenant de trouver un fichier de traduction de PCManFM dans la Lubuntu 12.04 en faisant une recherche sur tous les fichiers .mo présents :

find /usr -name "*.mo"

Comme nous obtenons un très grand nombre de fichiers, nous affinons en filtrant ceux qui sont en rapport avec la langue française :

find /usr -name "*.mo" | grep "fr"

Nous découvrons un autre dossier, /usr/share/locale/fr/LC_MESSAGES, dans lequel se trouvent des fichiers au nom explicite : pcmanfm.mo, openbox.mo, etc.

Nous nous apercevons que ce dossier existe dans Redo Backup, mais il est vide. Nous y copions donc les fichiers de Lubuntu 12.04.

Nous redémarrons sur notre distribution Redo Backup et… elle est maintenant complètement francisée.

Cette démarche nous a permis de cerner où se situaient les problèmes de traduction. Certains fichiers manquants sont donc à reconstituer. La démarche suivante va expliquer comment y parvenir.

Après ces essais, nous passons à la réalisation proprement dite de la traduction.

VII-A-3 - Correction du système pour la traduction

Nous entrons en chroot dans la copie du squashFS du Live CD Redo Backup d'origine (comme vu au chapitre 5.8).

Commençons par regarder les locales :

locale

La commande nous retourne les erreurs suivantes :

locale: cannot set LC_CTYPE to default locale: no such file or directory
locale: cannot set LC_MESSAGES to default locale: no such file or directory
locale: cannot set LC_COLLATE to default locale: no such file or directory

suivies des différents champs LC. Les champs LANGUAGE et LC_CTYPE sont vides, les autres champs sont bien positionnés sur fr_FR.UTF-8.

Régénérons les locales :

locale-gen "fr_FR.UTF-8"

Puis ensuite :

dpkg-reconfigure locales

l'appel à la commande locale ne déclenchera plus d'erreur.

Pour la forme :

apt-get update

L'appel précédent à apt-get update a été judicieux, le système chargeant des éléments notamment dans les dépôts « *translate-fr »

Nous en profitons pour mettre à jour le fuseau horaire :

dpkg-reconfigure tzdata

Régénérons le squashFS puis le CD et voyons le résultat.

Au boot, aucun changement.

Pour faire des tests, nous essayons ensuite de réinstaller l'éditeur de texte leafpad :

apt-get --reinstall install leafpad

Après régénération du CD, même problème.

Nous remarquons, en fin de retour de la commande de réinstallation de leafpad, les messages suivants :

localpurge: Disk space freed in /usr/share/locale: 272KiB
localpurge: Disk space freed in /usr/share/man: 0KiB
localpurge: Disk space freed in /usr/share/gnome/help: 0KiB
localpurge: Disk space freed in /usr/share/omf: 0KiB

L'application «localpurge»  ne nous effacerait-elle pas automatiquement les fichiers de traduction ?

Désinstallons localepurge :

apt-get remove localepurge

Puis réinstallons leafpad.

Regardons le contenu des locales :

ls /usr/share/locale/fr/LC_MESSAGES

leafpad.mo

Très bon signe.

Régénérons le CD pour voir le résultat.

Cela fonctionne. Appliquons la méthode aux autres applications des menus :

apt-get --reinstall install pcmanfm
apt-get --reinstall install chromium-browser
apt-get --reinstall install baobab
apt-get --reinstall install gparted
apt-get --reinstall install system-config-lvm
apt-get --reinstall install lxrandr
apt-get --reinstall install lxappearance
apt-get --reinstall install lshw-gtk
apt-get --reinstall install obconf

Pour trouver le nom des applications, il nous a suffi de les lancer puis d'aller dans le menu help->info.

Après régénération du CD et reboot, certains programmes restent non traduits (Gparted, utilitaire de disque). Il semblerait qu'il s'agisse de programmes Gnome.

Essayons ceci :

apt-get install language-pack-gnome-fr

Cela résout le problème.

Reste non traduit Photorec dont il n'existe pas de version française.

Chromium nous a également posé problème, résolu en installant le paquet «chromium-browser-l10n» :

apt-get install chromium-browser-l10n

Lors de la régénération du CD, Chromium ne fonctionnait plus. Nous l'avons lancé depuis le terminal et avons vu le message suivant :

root@ubuntu:~# chromium-browser
[1971:1971:0330/111614:FATAL:setuid_sandbox_client.cc(282)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /usr/lib/chromium-browser/chrome-sandbox is owned by root and has mode 4755.

Nous avons rectifié le problème en activant le bit SUID sur le fichier /usr/lib/chromium-browser/chrome-sandbox

chmod u+s /usr/lib/chromium-browser/chrome-sandbox

VII-B - Traduction du menu contextuel d'OpenBox

Pour modifier le contenu du menu contextuel, nous avons modifié le fichier /etc/xdg/openbox/menu.xml.

Nous avons ajouté des entrées correspondant aux différents outils des menus. Voici un exemple pour l'entrée éditeur de texte :

<item label="Editeur texte">
<action name"Execute"><execute>leafpad</execute></action>
</item>

Nous avons adapté les entrées existantes. Pour connaître les commandes, il nous a suffi de les retrouver dans les fichiers .desktop vus précédemment.

Nous avons retiré le menu Debian en supprimant l'entrée suivante :

<menu id="/Debian" />

VII-C - Traduction des boutons arrêt

Nous avons ensuite cherché à traduire le bouton d'arrêt en bas à droite :

Nous avons cherché la chaîne « power off computer » dans /usr/share (endroit probable suite à nos recherches précédentes) :

cd /usr/share
grep -r "power off computer" .

La chaîne a été trouvée dans le fichier « /usr/share/adeskbar/plugins/session.py ». Les chaînes sont visibles. Dans la traduction, si nous voulons utiliser des apostrophes, nous devrons faire précéder chacune d'elles par un antislash pour les échapper.

Nous avons ensuite supprimé le fichier session.pyc pour forcer la recompilation et avons relancé AdeskBar. Les chaînes ont été correctement traduites, par contre les commandes restaient sans résultat.

Un clic bouton droit sur l'icône bouton d'arrêt nous permet d'accéder à un menu « Preferences » :

Puis accès dans l'onglet « Launchers » et cliquer sur « Session control » :

Nous avons remplacé les commandes dbus-send—system..... par reboot pour un redémarrage et poweroff pour l'arrêt.

Nous avons ensuite incorporé le fichier Python modifié dans le squashFS ainsi que les réglages Adeskbar depuis « /root/.config/adeskbar/default.cfg dans le /etc/skel du squashFS.

Le fichier .pyc n'a pas été copié, celui-ci n'étant pas présent dans le CD (généré à la volée).

VIII - corrections et améliorations

L'accès à Chromium depuis le menu contextuel ne fonctionnait pas, un message d'erreur était retourné :

Chromium cannot be run as root

Nous avons récupéré la commande de lancement dans le fichier .desktop :

/usr/bin/chromium-browser -user-data-dir=/root/,config/chromium %U

Nous en avons profité pour mettre Google en page de démarrage, le profil a été copié dans le squashFS (/etc/skel).

Nous avons intégré le paquet « gvfs-backends » de façon à pouvoir parcourir le réseau depuis pcManFM.

IX - Nettoyage du CD

Maintenant que nous avons terminé la francisation, nous allons nettoyer notre squashFS. Les opérations de nettoyage se dérouleront en chroot.

Le fait qu'il manque les fichiers de locales provient certainement d'un allègement trop important effectué par le créateur de la distribution.

Nous avons réinstallé des paquets, cela aura rempli le cache avec les .deb téléchargés à nouveau.

Commençons par lister les paquets présents :

dpkg-query -l|more

Nous retirons ensuite les paquets inutiles via la commande :

apt-get --purge remove [nom du paquet]

L'option --purge permet de supprimer également les fichiers de configuration.

Il faut procéder avec parcimonie, supprimer des paquets nécessaires va générer des dysfonctionnements, mieux vaut trop en laisser que trop en enlever.

Nous supprimons ensuite les paquets orphelins restants :

apt-get install deborphan
apt-get --purge remove $(deborphan)
apt-get --purge remove deborphan

Une fois les paquets choisis supprimés, nous effectuons les opérations suivantes :

apt-get --purge autoremove #retire les paquets sans aucune dépendance
apt-get autoclean #nettoie le cache
apt-get clean #nettoie le cache
rm /tmp/* -r -f #supprime les fichiers temporaires
rm /var/log/* -r -f #supprime les logs

En dehors du chroot, nous supprimons ensuite les fichiers d'aide concernant les applications non utilisées, ainsi que les fichiers de locales des autres langues (nous laissons tout de même le dossier « en » pour l'Anglais).

Après ce nettoyage, notre fichier ISO passe à 326 Mo par rapport à la version d'origine pesant 249 Mo. Il devrait être possible de réduire encore un peu le poids, mais cela n'est pas intéressant par rapport au ratio temps passé, espace supplémentaire occupé.

X - Conclusion

Ce travail de francisation nous a permis de rentrer dans l'univers des Live CD ainsi que l'utilisation du Window Manager OpenBox moins répandu que Kde ou Gnome, et d'approfondir également nos compétences système.

X-A - Pour aller plus loin

Nous avons vu dans la partie 3 comment utiliser Redo Backup sur une autre distribution. Il sera donc tout à fait possible de créer notre propre distribution intégrant Redo Backup.

Cette version de la distribution Redo Backup ne fonctionne pas sur les systèmes récents équipés d'UEFI avec le Secureboot activé (tout comme la version d'origine). Pour pallier ceci, nous pourrons partir d'une distribution Linux supportant le Secureboot, telle que Ubuntu 14 ou supérieure, et la personnaliser afin d'y ajouter les scripts de Redo Backup.

X-B - Sources

Pour télécharger l'iso original

Notre version francisée

Lien à propos de ce tutoriel sur le forum Sourceforge de Redo Backup

X-C - En complément

Tutoriel parlant de RedoBackup : Apprendre des solutions de sauvegarde pour le dépannage

Apprendre à créer une clé multiboot avec Redo Backup.

X-D - remerciements

Nous remercions Zoom61 pour sa relecture technique ainsi que jacques_jean pour sa relecture orthographique. Nous remercions également WinJerome pour sa vérification globale des versions françaises et anglaises.