In this tutorial, you will learn how to translate the Redo Backup & Recovery only available in English.
It was written by Philippe Ronflette and Me.
This tool is similar to CloneZilla, but is easier to use and it gives graphical mode.
Our tests were made in a virtual environment to quickly and easily experiment modifications.
2-1. What is the content of Redo Backup & Recovery ?▲
This distribution contains the Redo Backup software, starting immediately after the GUI loading. It also contains tools like :
- Gparted - for partitioning edition ;
- a logical volume manager ;
- Photorec for data recovery ;
- Chromium for Internet navigation.
This tools are available in the OpenBox menu.
2-2. How is Redo Backup functioning ?▲
We started to try to understand how is Redo Backup functioning.
Where is the executable file ? We get is with the following command:
We saw the Redo Backup process in the actives process list.
This command launched in LXTerminal gave us two important informations :
- The executable file location : /sbin/redobackup ;
- It's a Perl script which is calling with the following command : /usr/bin/perl -w /sbin/redobackup
3. Tests on independent system▲
We copied the RedoBackup Perl script on a ext2 partition, mounted in our VM (see modifications from CDCreating a partition via the Gparted tool section). We restart the VM and boot on a Debian 7 Live CD, to try it on a completely independent system.
The command launch returned the following error message :
This error was patch with libxml-simple-perl package installation.
apt-get update apt-get install libxml-simple-perl
Next, a new error :
cat : /usr/share/redo/VERSION : No such file or directory cat : /usr/share/redo/TITLE : No such file or directory Failed to open file
': No such file or directory
So we need to reboot the Redo Backup Live CD to retrieve the /usr/share/redo folder. We have another indication, the use of Glade, witch would simplify translation.
After rebooting under Debian Live CD, we have copied the /usr/share/redo folder from Live CD to our partition to the system in use. After libxml-simple-perl reinstalled, Redo Backup starts but without display pictures buttons (just text). We'll see that later.
At this point, we have not modified anything in the source code.
To go a bit further, we've clicked the « backup » button and had the following error :
We have to study the code to find the origin of the problem.
By analysing the /sbin/redocbakup file (which is a Perl script as seen in the section 2.2How is Redo Backup functioning ? ), we find from code line #113 :
Lower in the code, we find another interesting element (line #133) :
By searching in the code other function, we find this at line #1328 :
Without doing Perl programming, we recognize a system call with the redirect argument " 2>&1 ".l
After a research, we find that fsarchiver is a tool to save a partition content into a compressed file.
Let's try to add fsarchiver :
apt-get install fsarchiver
We don't have the error message anymore and can select a volume to save.
We will continue the test until the end.
We will add a second disk into our virtual machine and copy the first one into the second.
We start the backup, but nothing happens. Looking at the console messages where we have launched Redo Backup, we saw the following message :
1: partclone.exts: not found
So, we install Partclone:
apt-get install partclone
After this installation, the backup is working.
Redo Backup & Recovery is a Partclone frontend.
4. Redo Backup application translation▲
As seen in the previous section, the main files are the Redo Backup Perl script and the redobackup.glade file.
The glade file is an XML file describing the graphical user interface. Glade is a conception tool for GTK+ (Gimp Tool Kit) GUI.
So, we have translated the messages strings and took care to not modify id's strings as variables.
We also have translated the Perl script himself.
It was necessary to add the following code lines at the beginning of the script to be able to use specific language characters like the character with accent :
Result of the translation with a Debian Live CD :
We have modified the beginning of the script about copyrights :
We have kept original files by adding the .orig extension in the same original folder locations.
We also added « _fr » in the /usr/share/redo/VERSION file, which allow the application to start with fr displayed.
We also have translated the « drivereset » script used to erase disks.
This script can be replaced by Wipe or Schred.
5. Live CD modification▲
To proceed, we need first of all to understand how a Live CD is functioning.
5-1. What is a Live CD ?▲
A Live CD is a CD or DVD-ROM containing a bootable and fully operational operating system. It's possible to add software or modify files inside it. If this system is used on a USB key , it's named a Live USB. If the persistence mode is activated, it will be possible to keep the modifications made in live on a storage support. Otherwise, all modifications are lost when it is rebooted or powered off.
5-2. How is a Live CD functioning▲
A live CD will boot on a special filesystem named unionFS with a read-only part on the boot support, and a read-write part in RAM (this part can also be on a hard disk for example with unionFS used out of live CD). The unionFS name comes from the C union method allowing the storage of two different variables in the same memory space.
For this union, the system will reserve the greater variable memory space needed for the two variables, 8 bytes in our case (cause an int takes 4 bytes on a 32 bits machines, and a double takes 8 bytes).
If we call my_union.integer, .the content will be used as an integer, else if we call my_union.real , the content will be used as a double precision real number. To call one then the other is a non sense, the value will be false, the two pseudos vars occupying the same memory space.
If we apply this to an unionFS :
Two different mounted points will be linked to show a unique one. They are superimposed. In Live CD case, one part is in read-only, the other read-write in RAM.
As long as no modification is made, the read-only part is used. If a file is modified, this one will be written in the read-wite mounted point and will be showed.(the origin file always present i the read-only part is hidden and the new version will be presented). If a file is deleted, the unionFS renames it with the .whcc extension. The file with this extension won't be shown.
The live CD's read-write part lives in ramdisk, it is non persistent. It's possible to keep modifications with the persistence functionality.
For more information : https://en.wikipedia.org/wiki/UnionFS.
5-3. Preparation ▲
First of all, we started to create our working environment. We worked in a virtual environment, to be able to make different tests quickly.
5-4. Changing keyboard language▲
In our case, we passed the keyboard in French (fr) via the following command ( in other case , it can be different, so use your own codepage) :
We needed to type « setxkb;qp », due to original QWERTY keyoard (french use AZERTY instead of QWERTY)
5-5. Creating a partition via the Gparted tool▲
We created a partition on the VM virtual hard disk via the Gparted tool, named « Partition Editor » in the Redo Backup i « Disk Tools » menu.
From Gparted :
- Creating a partition table (because blank disk) via device menu -→create partition table ;
- creating a partition via the mouse right button in the not allocated area and new ;
- operations validation via click on the icon. This operation created a ext2 partition.
Next, we mount the partition in the /mnt folder using the command :
mount /dev/sda1 /mnt
5-6. Files copy from Redo Backup to our partition▲
Next, we copy the CD-ROM content available from /cdrom via the following commands :
mkdir /mnt/cd cp -R -v /cdrom/* /mnt/cd
The -R and -v options are used to make a recursive (-R) and a verbose (-v) copy.
5-7. Extracting origin SquashFS content▲
Watching the CD content, we saw a compressed filesystem in /cdrom/casper/filesystem.squashfs.
to be able to access it's content, we've mounted it in loopback mode, and then copied its content in a a folder to modify it.
mkdir /mnt2 mount -t squashfs -o loop /mnt/cd/casper/filesystem.squashfs /mnt2
We've got a message telling us the filesystem is in read-only mode.
Next, we copy the content in a folder :
mkdir /mnt/contenu cp -R -v /mnt2/* /mnt/contenu
The unsquashfs command would gave us the same result.
The squashFS takes 225 MB, the uncompressed content takes 798 MB.
5-8. Source system modification▲
5-8-1. Redo Backup modifications integration ▲
We have renamed the Redo Backup original files :
In our mounted /mnt point , we have the translated redobackup files in the fr folder. We copy it to their right locations :
5-9. SquashFS regeneration▲
We will now regenerate the new squashFS. We need first the squashfs-tools package
It's possible to install this package temporarily in the chroot to get it available.
cd /mnt/contenu chroot .
We put the proc, sys and devpts in the chroot :
mount -bind proc proc mount -bind sys sys mount -t devpts none dev/pts
Then, install the squashfs-tools (if desired) :
messagesapt-get update apt-get install squashfs-tools
Next, we unmount the mounted volumes and leave the chroot :
umount /dev/pts sys proc exit
New squashfs generation :
mksquashfs /mnt/contenu /mnt/filesystem.squashfs
5-10. CD-ROM regeneration▲
5-10-1. SquashFS replacement▲
After squashFS generation, we replace the old one in the CD copy :
mv /mnt/fileseystem.squashfs /mnt/cd/casper/
We don't regenerate the filesystem.manifest file in the md5sum.txt fingerprint.
The manifest file contains the list of the Live CD installed package. The md5 file is used to check the CD integrity. To not regenerate it, will not block the running. You can regenerate it if you want, but you need to do it at the end of modifications.
5-10-2. Isolinux bootloader configuration modification▲
You can modify it to force the keyboard layout. In our case, we added «locale=fr_FR console-setup/layoutcode=fr» on the APPEND line (before « -- » at end of line) to put the keyboard in French.
In the same time, we have translated the text in French.
We simply edited the file in our CD copy with the integrated RedoBackup text editor : LeafPad.
5-10-3. New CD version burning▲
We will use genisoimage, already present in the CD, to generate the ISO image. We will use it many times, so we created a script in our partition :
/bin/shcd /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 ./
After CD generation, we copy it from our partition to the host of our VM with SCP, after SSH package installation.
You need to set a root password, otherwise SSH will refuse the connection.
We noticed a malfunction with SSH in case of Live system modification, problem being adjustable by including ssh before next squashFS.generation, or by rebooting and reinstalling ssh package.
After boot of our new CD, we saw a problem with the French accented characters on the IsoLinux screen.
But, the Redo Backup translated application works well. And the keyboard is in French as expected.
The accent problem was fixed recording again the isolinux.cfg file with CP850 charset DOS West Europe encoding. (you need to use the charset needed by your language).
The CP850 is not resent in the LeafPad's defaults encoding, So you need to select "others encoding" and type CP850.
Once CD is regenerated, the display begins correct :
7. System and tools translation▲
In this section, we will show you two differents approach allowing the complete system and tools translation.
In this section, we will discuss about of these points :
- menu ;
- system and tools.
OpenBox is the Window Manager used by Redo Backup live. It is known for it's lightness.
7-1. Dock menu translation▲
The Wikipedia's OpenBox page tells us there is three configuration files :
We don't find the following menu entries in these files :
- System tools
If we click the right mouse button on the bar at the bottom, (which for the menu Access and the time display), and then if we select "Preferences", The window title is "AdeskBar", we will look at this side.
7-1-2. AdeskBar ▲
AdeskBar is an application launcher for OpenBox, written in Python language.
The ~/.config/adeskbar folder contains a default.cfg file. So the content doesn't match with menubar entries.
On the other distributions the launchers are .desktop files, stored in ~/.local/share
In looking this folder, we find un folder containing files matching with our applications. Editing the "File Manager" file (file-manager.Desktop), we modified the line "Name=..." and replaced the text with the french translation, we can see, after killing the AdeskBar process, the modification are in the menu. So we modify the others entries.
For some icons, several files versions are present : *.desktop and *gtk.desktop files . In this case, we have modified the two versions.
Next, we take care of menus titles.
In the ~/.local/share folder, we find a desktop-directories one containing « Settings » and « System Tools » but not « Accessories ». After modifying the two founded entries and AdeskBar reboot, the modifications are working.
Next, we're looking for a file containing « Accessories » in the home user folder:
grep -r Accessories .
This one returned to us the entries in the .config/menu/applications.menu file.
So, we modify the text and restart AdeskBar process. We have two different entries, one "Accessoires" (Accessories french translation) containing two of the five original entries, and one "Accessories" entry containing the three others. So, it's not the good method.
Looking for from the root :
find . -name
We find a /user/share/desktop-directories folder, containing an Accessories file. After modification and reboot, it's OK.
We have copied the /root/.local/share files in our squashFS copy etc/skel/.local/share folder, because in Live CD, user account are created just-in-time from etc/skel . The modified accessories file was also copied in /usr/share/dektop-directories.
Once the CD regenerated (as shown in the section part #5Live CD modification), we have the elements translated correctly.
First of all, we tried to find solutions for Redo Backup translation looking for :
- LXDE and OpenBox documentation available in Internet ;
- in LXDE translations problems dedicated forums ;
- in the general documentation about Linux distributions translations.
Theses tracks have enabled us to find partial solutions. Installing a language package with :
apt-get install language-pack-gnome-fr
By creating a /etc/default/locale file containing :
The system himself was translated in French (messages in Terminal), and the date and time, menu elements, and graphical interface, but not everything. The OpenBox graphical interface is globally still in English.
we decide to use a more methodical method, based on verified hypothesis working directly in the Redo Backup distribution completely installed on a hard disk partition. It's the same method exposed in the Live CD preparationPreparation section (squashFS decompression). It will also be necessary to create a /boot folder and copying the vmlinuz and initrid.lz files from the /casper CD folder. If this installation is a multiboot installation, it will be possible to start Redo Backup doing an update-grub from the main used Linux system.
Are all the translation libraries available ?
Look at the added language-pack-gnome-fr files, present in
We find LC_MESSAGES folder, witch contains many .mo files évoquant functions or applications names from system. These files can't be read with a text editor.
We saw on Internet than .mo files are compiled translation files. We can uncompile them to obtain editable .po files which can be edited with text editor.
We try to uncompile one of it, for example the file-roller.mo file with command :
In looking it's content, we see it's a translation for the archiving software.
The translations libraries seem to be present.
Is the system correctly linking the translation files ?
The system is correctly translated in text mode, we can suppose the problem is located in graphical interface. The use of the command :
A terminal shows us correctly defined environment variables. The problem is elsewhere.
If we have a look in the graphical interface configuration files present in /etc/xdg/openbox containing three files which can be verloaded in a user session in ~/.config/openbox.
Everything about graphical environnement can also be in /etc/x11.
We test with a Lubuntu distribution based on lxde and OpenBox to compare with Redo Backup and try to discover what could be missing in it.
we rely on a distribution Lubuntu, based on lxde and Openbox, to compare the two distributions and try to identify what might miss Redo Backup. . The three files from /etc/xdg/openbox are present in both distributions, and nothing in their content allow to envisage a problem here.
We have a look in etc/x11 . The only difference is a symbolic link pointing to /usr/bin/Xorg in Redo Backup.
In the xinit sub-folder, we see two folders present in Lubuntu but not in Redo Backup. The Lubuntu's xinitrc.d sub-folder contains a 50-systemd-user.sh file calling a environment element. We copy this folder in the same place in Redo Backup to see if it's changing anything.
In a console, we launch the 50-systemd-user.sh file being a script. We obtain a error message telling about systemctl being missing. We locate it with Lubuntu :
find /chemin/Lubuntu -name
We copy it in the same folder place in Redo Backup, and then we launch 50-systemd-user.sh again.
We have a new error message about library libgcrypt.so.20 is missing.
A Internet research about it inform us that this library is used for cryptography. No interest for our problem
We find another missing sub-folder in Redo Backup ; xinput.de .After it's content analysis, this file seems to be used for Asiatic languages support. No matter for our problem again.
We know it's the LC_MESSAGES folder whre are the translations libraries. Let's have a look on the differences between Lubunu and Redo Backup about this :
sudo grep -rn
For both distributions, we don't see differences in /etc.
Now, we're looking for a application's library in Lubuntu also present in Redo Backup to check if menus of this one are translated. We find a gparted.mo file, and launching Gparted in Redo Backup, we notice it is correctly translated.
We can do another hypothesis, The translations are not only done with the /usr/share/locale-langpack/fr/LC_MESSAGE folder.
The reference to the translations are done correctly. We can formulate a new hypothesis.
Or there are identical libraries elsewhere in other folders, or the translations are done directly in the applications binary files.
We try a copy of the binary from Lubuntu instead of Redo Backup equivalent. For example, the PCManFM file manager. We do the operation and start :
From a console in Redo Backup, a error message tells us the libfm-gtk.so.4 is missing. So we type :
apt-get install libfm-gtk
A error message tells us it's impossible to obtain the package.
A Internet Research learn us this package is included in libfm-gtk4, being himself not foundfor Redo Backup. We have here a version problem between Lubunu and Redo Backup, based respectively on Ubuntu 12.04 version for Redo Backup and 15.10 for the used Lubuntu.
Then, we will download and install the Lubuntu 12.04 version. Once this Done, we try again to replace the binary PCManFM file by the Lubuntu 12.04 one, correctly translated. Starting it under Redo Backup is OK, but the application menus are still in English. So the translations are not in the binary.
Now, we try to find the PCManFM translations file in Lubuntu 12.04, doing a search on all presents files :
find /usr -name
We obtain a lot of files, so we refine by filtering those in french.
find /usr -name
We discover another folder : /usr/share/locale/fr/LC_MESSAGES in which we find explicit files : pcmanfm.mo, openbox.mo, etc.
We see this folder in Redo Backup, but it's empty. We copy the Lubuntu 12.04 files in it.
We restart our Redo Backup distribution and then … it's now in French.
This method allowed us to identify where were the translations problems are. Some missing files need to be reconstituted. The next method will explain how to do it.
After these tests, we will realize the translation.
7-1-3. System correction for translation▲
We are going in chroot from our Redo Backup Live CD copy (like saw in 5.8 chapterSource system modification).
Lets start with locales:
The command gave us the following errors :
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
Followed by different LC fields, the LANGUAGE and LC_TYPE are empty, the others are correctly positioned with the fr_FR.UTF-8 value.
Let's regenerate locales :
The call of locale command doesn't return errors.
To be sure :
The previous apt-get update was wise, the system downloading elements from the « *translate-fr » repositories
We benefit to update the time zone :
Let's regenerate the squashFS followed by CD and let's see the result.
After boot, no change.
Then we try to reinstall the leafpad text editor :
apt-get --reinstall install leafpad
After CD regeneration, same problem.
At the end of the Leafpad reinstall command return, we notice the following messages :
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
Does the «localpurge» application erase the translations files ?
Let's deinstall localepurge :
apt-get remove localepurge
Then reinstall leafpad.
We have a look in the locales content :
ls /usr/share/locale/fr/LC_MESSAGES leafpad.mo
Very good sign.
Let's regenerate the CD to see the result.
It's working, let's apply the method to others menu applications:
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
To know applications names, we just have to go to the help menu->info inside them.
After CD regeneration and reboot, some programs stay not translated (Gparted, disk utility). It's seems to be Gnome programs.
Let's try this :
apt-get install language-pack-gnome-fr
This solve the problem.
Photorec stays not translated, there is no french version.
Chromium gave us difficulties, solved with the «chromium-browser-l10n» package re-installation :
apt-get install chromium-browser-l10n
When CD regeneration, Chromium did not work anymore. We started it from the terminal and the the following message :
282)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I
We rectified the problem activating the SUID bit on /usr/lib/chromium-browser/chrome-sandbox file.
chmod u+s /usr/lib/chromium-browser/chrome-sandbox
7-2. OpenBox contextual menu translation▲
To change contextual menu, we modified the /etc/xdg/openbox/menu.xml file.
We added entries corresponding to different tools in normal menu. Look at a example for text editor :
We have adapted existing entries. To know the necessary commands, we just had to look at .desktop files saw previously.
We removed the Debian menu by deletion of following entry :
7-3. Power off buttons translation▲
Next, we wanted to translate power off buttons at the right bottom :
We looked for « power off computer » string in the /usr/share folder (probably location following our previous research) :
cd /usr/share grep -r
The string was found in « /usr/share/adeskbar/plugins/session.py » file. To use quotes , we have to escape them with anti slash character.
Next, we deleted the session.pyc file to force "recompilation" and launched AdeskBarAdeskBar . Strings are correctly translated, but the commands were not work.
A right mouse button click on power off icon permitted us to access to a « Preferences » menu
Then, we have access to a « Launchers » tab containing « Session control » :
We've replaced commands dbus-send—system..... by reboot and poweroff.
Next, we have embedded the modified Python file in the squashFS as well as the AdeskBar settings from /root/.config/adeskbar/default.cfg to the /etc/skel squashFS folder.
The .pyc file wasn't copied, It is not present in the CD (just-in-time generated).
8. Corrections and improvements▲
The chromium access from contextual menu wasn't functioning, an error message was returned :
Chromium cannot be run as root
We retrieved the launch command in .desktop file :
We fixed the starting page in google, the profile was copied in the /etc/skel of . squashFS
We added the « gvfs-backends » package to be able to scan the network from pcManFM.
9. CD cleaning▲
We have now finished the translation. We will clean our squashFS . The cleaning operations will be executed in chroot.
The missing locales is due to mitigation made by distribution creator.
We have reinstall packages, this will have filled the .deb cache with them.
Then list the present packages :
We remove useless packages via :
apt-get --purge remove [nom du paquet]
The --purge option permits to also delete configuration files.
We need to be careful, to delete necessary packages will generate malfunctions. If you have doubt, leave them.
Then, we delete remaining orphans packages :
apt-get install deborphan apt-get --purge remove
(deborphan) apt-get --purge remove deborphan
Once packages deleted, we make the following operations:
apt-get --purge autoremove
cacherm /tmp/* -r -f
filesrm /var/log/* -r -f
Outside chroot, we delete help files about unused applications, and also locales from other languages (we leave English ones).
After cleaning, our ISO files has a size of 326 MM, the original is 249MB. It would be possible to make better, but the ratio of the time necessary to do it and the result is not interesting.
This translation work permits us to enter into the Live Cd universe, and also ti use th OpenBoxWindow Manager less widespread than Gnome or KDE, and to deepen our system skills.
10-1. For further▲
We have seen in the part number 3Tests on independent system how to use on Redo Backup other distribution. So it will be possible to create our own distribution embedding Redo Backup.
This Redo Backup.distribution doesn't work on recent system with UEFI Secure boot activated (like original version). To palliate this, we can modify a distribution with Secure boot support, like Ubuntu 14 or higher, and to personalize it to add Redo Backup. Scripts.
To download original ISO
Published link about this tutorial on the Redo Backup SourceForge forum