# Franciser fichier ISO debian Live (en moins d'1 seconde)

**URL:** <https://www.debian-fr.org/t/franciser-fichier-iso-debian-live-en-moins-d1-seconde/62827>\
**Category:** Trucs et Astuces\
**Created:** [Février 21, 2016, 8:32 UTC](https://www.debian-fr.org/t/franciser-fichier-iso-debian-live-en-moins-d1-seconde/62827 "2016-02-21T20:32:26Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 21, 2016, 8:32 UTC](https://www.debian-fr.org/t/franciser-fichier-iso-debian-live-en-moins-d1-seconde/62827/1 "2016-02-21T20:32:26Z")

</div>

# Si vous êtes pressé, rendez-vous [directement ici](http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html#p490105):

J’en avais vraiment marre de rajouter manuellement (avec le clavier en mode “qwerty”) les options de boot pour “franciser” ma “live nonfree”.

Et comme je suis un très très gros fainéant pour me lancer dans la création d’une nouvelle image ISO à chaque nouvelle version,  
voilà ce que je fais depuis un petit moment :

Pour “Franciser” en moins de 2 minutes le [fichier image ISO debian 7.5 live nonfree](http://live.debian.net/cdimage/release/stable+nonfree/amd64/iso-hybrid/debian-live-7.5-amd64-xfce-desktop+nonfree.iso) :  
il suffit d’ajouter les options

```nohighlight
 lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

```

à la suite des options du boot.

NOTE :  
Si besoin, vous pourrez aussi en profiter pour ajouter dans cette liste d’options l’option `persistence`,  
mais pour ça, le clavier en mode “qwerty” ne va pas vous causer de problèmes.  
Bien sûr, vous pouvez adapter la configuration pour le pays et autres dispositions de clavier de votre choix.

* * *

(Sur [cette image ISO](http://live.debian.net/cdimage/release/stable+nonfree/amd64/iso-hybrid/debian-live-7.5-amd64-xfce-desktop+nonfree.iso), l’offset 0x36F82800 =\> 922232832, utilisé pour `skip` à été “cherché/trouvé” avec le programme `hexcurse`)

```nohighlight
michel@debG53SW:~$ dd bs=1 skip=922232832 count=512 if=debian-live-7.5-amd64-xfce-desktop+nonfree.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00298631 s, 171 kB/s
michel@debG53SW:~$ 

```

Visualisation du contenu du fichier `fichTemp.txt` récupéré avec la commande ci-dessus :

```nohighlight
michel@debG53SW:~$ cat fichTemp.txt
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash nouveau.modeset=0 radeon.modeset=0

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 

```

Modifier le fichier `fichTemp.txt` en ajoutant les options “francisantes” à la suite des options du boot :

```nohighlight
lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

```

```nohighlight
michel@debG53SW:~$ sed -i 's/radeon.modeset=0/radeon.modeset=0 lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes/' fichTemp.txt
michel@debG53SW:~$ 

```

Vérifier le résultat de la modification :

```nohighlight
 
michel@debG53SW:~$ cat fichTemp.txt
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash nouveau.modeset=0 radeon.modeset=0 lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 

```

Modifier le nom du fichier image ISO qui va être modifié :

```nohighlight
michel@debG53SW:~$ mv debian-live-7.5-amd64-xfce-desktop+nonfree.iso debian-live-FR-7.5-amd64-xfce-desktop+nonfree.iso
michel@debG53SW:~$ 

```

Inscrire la modification dans le fichier image ISO :

```nohighlight
michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=922232832 if=fichTemp.txt of=debian-live-FR-7.5-amd64-xfce-desktop+nonfree.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00350515 s, 146 kB/s
michel@debG53SW:~$ 

```

Extraire la zone modifiée depuis le fichier image ISO vers un autre fichier (`verif.txt`):

```nohighlight
michel@debG53SW:~$ dd bs=1 count=512 skip=922232832 if=debian-live-FR-7.5-amd64-xfce-desktop+nonfree.iso of=verif.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00422957 s, 121 kB/s
michel@debG53SW:~$ 

```

Vérifier le résultat de la modification :

```nohighlight
michel@debG53SW:~$ cat verif.txt 
label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash nouveau.modeset=0 radeon.modeset=0 lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe/Paris utc=yes

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
michel@debG53SW:~$ 

```

Tout va bien, la ligne d’options `append boot=` a bien été modifiée.  
on peut maintenant graver un CD ou copier (avec `dd`) le fichier ISO sur une clef USB.

* * *

Voilà voilà: l’image ISO ainsi modifiée va maintenant permettre de lancer `debian Live 7.5 non-free` en français sans rien avoir à rajouter sur la ligne de boot.

NOTE:  
Le fichier `fichTemp.txt` récupéré était constitué de 386 octets de caractères suivis d’octets nulls (0x00), pour un total de 512 octets.  
La modification a rajouté 108 octets de caractères au fichier original, mais on n’a pas recopié les 108 octets (à 0x00) de la fin du fichier modifié, étant donné que seuls les premiers 512 octets ont étés recopiés

On aurait tout aussi bien pu utiliser 2048 octets (taille de bloc utilisé pour cette ISO9660),  
et même en profiter pour rajouter un ou plusieurs autres choix dans le menu de boot.

==================  
D’autre part, dans [linux kernel boot parameters (redsymbol.net)](http://redsymbol.net/linux-kernel-boot-parameters/3.2/)

> [@](#):
>
> The number of kernel parameters is not limited, but the length of the complete command line (parameters including spaces etc.) is limited to a fixed number of characters. This limit depends on the architecture and is between 256 and 4096 characters. It is defined in the file ./include/asm/setup.h as COMMAND\_LINE\_SIZE.

Donc, s’il s’agissait d’une installation utilisant la même version que celle du système que j’utilise (wheezy 7.5),

```nohighlight
michel@debG53SW:~$ uname -a
Linux debG53SW 3.2.0-4-amd64 #1 SMP Debian 3.2.57-3+deb7u2 x86_64 GNU/Linux
michel@debG53SW:~$ fgrep COMMAND_LINE_SIZE /usr/include/asm-generic/setup.h
#define COMMAND_LINE_SIZE	512
michel@debG53SW:~$ 

```

cette ligne de paramètres de boot serait donc limitée à 512 octets:

---

<div class="post-metadata">

**Author:** ![bobo38](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/f14d63/32.png) [@bobo38](https://www.debian-fr.org/u/bobo38)\
**Post date:** [Février 21, 2016, 8:32 UTC](https://www.debian-fr.org/t/franciser-fichier-iso-debian-live-en-moins-d1-seconde/62827/2 "2016-02-21T20:32:29Z")

</div>

Comment as-tu déterminer le « seek=922232832 » ?

Tes manips d’écriture sur image .iso m’intéressent, parce que je souhaiterais tenter la manip’ suivante pour booter un .iso Archlinux sur mon eeePC (évoqué sur ce fil : [forums.archlinux.fr/topic15433.html](https://forums.archlinux.fr/topic15433.html))

[quote]You can disable to check entirely by switching out which file the EFI system boots to. There are three .efi files in the ISO image. By overwriting the one your system is using with the simpler non Secure Boot enabled one, you can sidestep the whole problem.

```
Mount your USB boot media (or unpack the ISO to later repack and burn if you must use a CD)
Move to the directory where it is mounted and issue the following copy command:
cp EFI/boot/loader.efi to EFI/boot/bootx64.efi
Boot that sucker up and eat cake.[/quote]

```

source – [superuser.com/questions/615142/u … ity-policy](http://superuser.com/questions/615142/uefi-failed-to-install-override-security-policy)

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 21, 2016, 8:32 UTC](https://www.debian-fr.org/t/franciser-fichier-iso-debian-live-en-moins-d1-seconde/62827/3 "2016-02-21T20:32:30Z")

</div>

> [@](#):
>
> … Comment as-tu déterminer le « seek=922232832 » ? …

J’ai visualisé le fichier image ISO avec l’éditeur Hexa [mono]hexcurse[/mono] :

```auto
michel@debG53SW:~$ hexcurse debian-live-7.5-amd64-xfce-desktop+nonfree.iso
```

[mono]F1[/mono] (Voir [ce post](https://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html)) m’a permis d’afficher l’aide, et d’y trouver que [mono]F5[/mono] correspondait à [mono]Find[/mono].

J’ai donc quitté l’affichage de l’aide avec [mono]Esc[/mono],  
et j’ai positionné le curseur clignotant (avec [mono]Tab[/mono]) sur la partie [mono]ASCII[/mono] (Texte) à droite de la fenêtre,

J’ai alors utilisé la touche [mono]F5[/mono] pour entrer : [mono]live-amd64[/mono].

Une fois cette chaîne de caractère trouvée dans le fichier, il m’a suffit de positionner mon curseur 6 caractères avant,  
et en haut à gauche de la fenêtre d’affichage [mono]Hexa[/mono], j’ai pu constater que l’offset était de [mono]36F82800[/mono].

J’ai alors utilisé la touche [mono]F8[/mono] pour quitter [mono]hexcurse[/mono] sans sauvegarder de modifications.

Puis, j’ai convertis cette valeur Hexadécimale en valeur décimale :

```auto
michel@debG53SW:~$ printf "%d\n" 0x36f82800
922232832
michel@debG53SW:~$ 
```

EDIT: Mais si j’avais pris le temps de lire un peu mieux la page d’aide, je me serai économisé cette peine et j’aurai directement eu la conversion décimale de l’offset en tapant [mono]Ctrl-a[/mono], bien que sur cette version (1.55) de [mono]hexcurse[/mono], il y a un petit problème avec cette fonctionnalité…

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 21, 2016, 8:32 UTC](https://www.debian-fr.org/t/franciser-fichier-iso-debian-live-en-moins-d1-seconde/62827/4 "2016-02-21T20:32:41Z")

</div>

Pour la “persistence” :

Il suffit qu’une partition dont le label est [mono]persistence[/mono] soit accessible au système [mono]live[/mono] lors de son démarrage,  
et que cette partition ait, à sa racine, un fichier [mono][persistence.conf](http://live.debian.net/manpages/current/en/html/persistence.conf.5.html)[/mono]

Pour mes tests, j’ai simplement mis dans ce fichier une seule ligne de texte : [mono]/ union[/mono]  
ce qui m’a permis de faire une mise à jour de la version [mono]live[/mono] (1,2Gio d’espace occupé suite à la mise à jour…).

Mais vous pouvez “fignoler” votre mode de [mono][persistence](http://live.debian.net/manpages/current/en/html/persistence.conf.5.html)[/mono] en fonction de vos besoins.

===================  
Il me reste maintenant à tester aussi l’ajout du fichier de paquetage [mono]non-free[/mono] (sur une autre partition, peut-être même la partition [mono]persistence[/mono]…) indispensable pour faire fonctionner la carte réseau de mon PC G53SW,  
et à démarrer avec la [mono]debian live officielle[/mono] (pas [mono]nonfree[/mono]).

---

<div class="post-metadata">

**Author:** ![ggoodluck47](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/c67d28/32.png) [@ggoodluck47](https://www.debian-fr.org/u/ggoodluck47)\
**Post date:** [Février 21, 2016, 8:32 UTC](https://www.debian-fr.org/t/franciser-fichier-iso-debian-live-en-moins-d1-seconde/62827/5 "2016-02-21T20:32:42Z")

</div>

Salut,

Dommage de laisser s’enfouir dans la jungle de Trucs & Astuces alors que le wiki est là 😕

---

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Février 21, 2016, 8:32 UTC](https://www.debian-fr.org/t/franciser-fichier-iso-debian-live-en-moins-d1-seconde/62827/6 "2016-02-21T20:32:50Z")

</div>

Ce script

[code]#!/bin/sh  
FICHIER=$1  
FICHIERMAJ=`echo $FICHIER | tr '[:upper:]' '[:lower:]'`  
NOM=`basename $FICHIER`  
ISO=$2  
DEB=0  
PAS=65536  
FIN=`expr $PAS - 1`  
FINP=$DEB  
MAXDL=1048576  
#4194304  
ONCHERCHE=true  
VITMIN=1024  
isoinfo -l -R -i $ISO | tr ‘[:upper:]’ ‘[:lower:]’ | grep -v “^ \*$” \> /tmp/listing  
while read ligne ; do  
if echo $ligne | grep -q “^directory” ; then  
DIR=`echo $ligne | awk '{print $4}'`  
elif echo $ligne | grep -q “^-” ; then  
ligne=`echo $ligne | sed -e '1,$s/\[//g'| sed -e '1,$s/\]//g'`  
FIC=`echo $ligne | awk '{print $11}' | sed -e 's/;1 *$//' | sed -e 's/\.$//'`

# echo $DIR$FIC $FIC $FICHIERMAJ

```
        if ( [! -z $FIC] && ([$DIR$FIC = $FICHIERMAJ] || [$FIC = $FICHIERMAJ])) ; then
            ONCHERCHE=false
            OFFSET=`echo $ligne | awk '{print $9}'`
            DEBUT=`expr $OFFSET \* 2048`
            LONGUEUR=`echo $ligne | awk '{print $5}'`

```

# echo $OFFSET $DEBUT $LONGUEUR

```
            tail -c +$(expr $DEBUT + 1) $ISO | head -c +$LONGUEUR > $NOM
            exit 0
        fi 
    fi
done < /tmp/listing

```

[/code]permet de trouver un fichier de nom donné sur une image ISO.  
J’en avais fait un script permettant de charger un fichier donné à partir d’une image ISO en téléchargement sans tout télécharger:

[code]#!/bin/sh  
FICHIER=$1  
URL=$2  
FICHIERMAJ=`echo $FICHIER | tr '[:upper:]' '[:lower:]'`  
NOM=`basename $FICHIER`  
ISO=/tmp/getfic-`date +%s`.iso  
DEB=0  
PAS=65536  
FIN=`expr $PAS - 1`  
FINP=$DEB  
MAXDL=1048576  
#4194304  
ONCHERCHE=true  
VITMIN=1024  
while ($ONCHERCHE) ; do  
echo curl -L -r $FINP-$FIN $URL  
curl -L -r $FINP-$FIN $URL \>\> $ISO  
isoinfo -l -R -i $ISO | tr ‘[:upper:]’ ‘[:lower:]’ | grep -v “^ \*$” \> /tmp/listing  
while read ligne ; do  
if echo $ligne | grep -q “^directory” ; then  
DIR=`echo $ligne | awk '{print $4}'`  
elif echo $ligne | grep -q “^-” ; then  
ligne=`echo $ligne | sed -e '1,$s/\[//g'| sed -e '1,$s/\]//g'`  
FIC=`echo $ligne | awk '{print $11}' | sed -e 's/;1 *$//' | sed -e 's/\.$//'`

# echo $DIR$FIC $FIC $FICHIERMAJ

```
        if ( [! -z $FIC] && ([$DIR$FIC = $FICHIERMAJ] || [$FIC = $FICHIERMAJ])) ; then
            ONCHERCHE=false
            OFFSET=`echo $ligne | awk '{print $9}'`
            DEBUT=`expr $OFFSET \* 2048`
            LONGUEUR=`echo $ligne | awk '{print $5}'`

```

# echo $OFFSET $DEBUT $LONGUEUR

```
            echo -n > $NOM
            while [$LONGUEUR -ge $MAXDL] ; do
            BOUT=`expr $DEBUT + $MAXDL - 1`
            curl -L -y 10 --speed-limit $VITMIN -r $DEBUT-$BOUT $URL > t_$NOM
           LONG=`ls -l t_$NOM | awk '{print $5}'` 
            if [$LONG -eq $MAXDL] ; then
            cat t_$NOM >> $NOM
            rm t_$NOM
            DEBUT=`expr $BOUT + 1`
            LONGUEUR=`expr $LONGUEUR - $MAXDL`
            else
            rm t_$NOM
            fi
            done
            BOUT=`expr $DEBUT + $LONGUEUR - 1`
            while [$LONGUEUR -gt 0] ; do
                    curl -L -y 10 --speed-limit $VITMIN -r $DEBUT-$BOUT $URL > t_$NOM
                    LONG=`ls -l t_$NOM | awk '{print $5}'` 
                    if [$LONG -eq $LONGUEUR] ; then
                            cat t_$NOM >> $NOM
                            rm t_$NOM
                            LONGUEUR=0
                    else
                            rm t_$NOM
                    fi
            done
            exit 0
        fi 
    fi
done < /tmp/listing
    if ($ONCHERCHE) ; then
        FINP=`expr $FIN + 1`
        FIN=`expr $FIN + $PAS`
        PAS=`expr $PAS + $PAS`
    fi

```

done  
[/code]

---

<div class="post-metadata">

**Author:** ![bobo38](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/f14d63/32.png) [@bobo38](https://www.debian-fr.org/u/bobo38)\
**Post date:** [Février 21, 2016, 8:33 UTC](https://www.debian-fr.org/t/franciser-fichier-iso-debian-live-en-moins-d1-seconde/62827/7 "2016-02-21T20:33:27Z")

</div>

Pour des modifications d’image .iso plus profondes un tutoriel détaillé :  
[linux.jpvweb.com/mesrecetteslinu … ges\_iso\_cd](http://linux.jpvweb.com/mesrecetteslinux/doku.php?id=images_iso_cd)  
(basé sur mount et mkisofs)

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 21, 2016, 8:33 UTC](https://www.debian-fr.org/t/franciser-fichier-iso-debian-live-en-moins-d1-seconde/62827/8 "2016-02-21T20:33:40Z")

</div>

> [@](#):
>
> … Dommage de laisser s’enfouir dans la jungle de Trucs & Astuces alors que le wiki est là :-? …

Voilà voila : [Franciser une image ISO live](https://www.isalo.org/wiki.debian-fr/Franciser_une_image_ISO_live)

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 21, 2016, 8:33 UTC](https://www.debian-fr.org/t/franciser-fichier-iso-debian-live-en-moins-d1-seconde/62827/9 "2016-02-21T20:33:44Z")

</div>

@fran.b

Sûr que ma méthode de recherche avec hexcurse est un pis aller,  
et je ne connaissais pas assez bien les commandes utilitaires des images ISO.  
En fait, j’ai laissé tombé mes recherches sur le format ISO9660 quand j’ai vu arriver joliet.  
Alors depuis…

Finalement, je crois bien que mon “tuto” va passer à la poubelle 🙂 :

```auto
#!/bin/bash

fichImgEng="debian-live-7.5.0-amd64-xfce-desktop.iso"
fichImgFR="debian-live-FR-7.5.0-amd64-xfce-desktop.iso"
fichRech="live.cfg"
chOrigin="quiet splash"
chAjout="lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes"

chRempl="$chOrigin $chAjout"
blkSize=`isoinfo -d -i $fichImgEng | grep "block size" | awk '{print $5}'`
valOffset=`isoinfo -l -R -i $fichImgEng | grep $fichRech | awk '{print $10 * '$blkSize'}'`

cp $fichImgEng $fichImgFR && \
dd bs=1 count=$blkSize skip=$valOffset if=$fichImgEng 2>/dev/null | \
sed "s/$chOrigin/$chRempl/" | \
dd conv=notrunc,sync bs=1 count=$blkSize seek=$valOffset of=$fichImgFR
```

Encore Merci pour la source d’inspiration 🙂

---

<div class="post-metadata">

**Author:** ![ggoodluck47](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/c67d28/32.png) [@ggoodluck47](https://www.debian-fr.org/u/ggoodluck47)\
**Post date:** [Février 21, 2016, 8:33 UTC](https://www.debian-fr.org/t/franciser-fichier-iso-debian-live-en-moins-d1-seconde/62827/10 "2016-02-21T20:33:46Z")

</div>

Salut,

Nous pouvons compter sur toi pour mettre à jour le wiki ![:038](https://www.debian-fr.org/uploads/default/original/1X/08df484251490af77ba342c0331f3ee271065fe9.gif "bravo")

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 21, 2016, 8:33 UTC](https://www.debian-fr.org/t/franciser-fichier-iso-debian-live-en-moins-d1-seconde/62827/11 "2016-02-21T20:33:47Z")

</div>

Ça c’est sûr que je vais mettre à jour le wiki.

Mais je vais essayer d’améliorer ce brouillon de semblant de “script” d’abord,  
en m’inspirant de ce que fran.b a transmis :  
Un “.sh” avec un “here sting” utilisant le répertoire “/tmp” et les paramètres de la ligne de commande, au moins.  
Enfin… je vais essayer de faire au mieux.

EDIT: Avec des TouDou en plus

```auto
#!/bin/sh
#
#============================================
# En commentaire dans le script: les "TouDou"
#============================================
# Ici je mettrai un pavé descriptif.

# Modifier les noms de variable de ce script,
# afin qu'ils soient en anglais.

# La ligne de commande sera vérifiée, et parsée pour extraire les paramètres,
# pour au moins l'existence du nom du fichier ISO-Live en paramètre.
fichImgEng=$1

# Avant d'aller plus loin dans l'exécution du script,
# il faudra vérifier le système hôte (version et distro Linux) et la version de "isoinfo" et "dd" (merci à [b]bobo38[/b])
# il faudra vérifier aussi si le contenu du fichier est bien une ISO-Live (avec "isoinfo").
#
# En projet : 
# - utiliser "printf" à la place d'"echo", ou mieux: pas de message, juste le code d'erreur correct.
# - modifier "exit" pour qu'il envoie un code d'erreur correspondant à "fichier non trouvé"
isoinfo -d -i "$1" | grep "Application id: DEBIAN LIVE" || \
  {
    printf "\n\"${1}\" n'est PAS un fichier d'image ISO \"Debian Live\"...\n\n"
    exit 1
  }

# FR est proposé pour l'instant, on verra en fnct des futurs fichiers de config à créer.
langSortie="FR"

# Création du nom pour renommer le fichier image ISO live :
# (je reverrai ça pour placer le "FR" juste après le "-live-")
fichImgFR=${fichImgEng%.*}-${langSortie}.${fichImgEng##*.}

# Récup de la somme MD5 avant modif pour vérif depuis le site "debian" (ou autre).
# Script externe à faire pour tout ce qui concerne MD5....

# Les variables suivantes devront êtres initialisées en fonction du contenu de l'ISO-Live.
fichRech="live.cfg"
chOrigin="quiet splash"

# Cette ligne sera composée par un menu avec sélection de choix d'options possibles
# qui seront extraites d'un fichier séparé en fnct des différentes versions,
# et/ou des variables locales et config clavier du système en cours.
#
# Je créerai deux fichiers de plus pour les configs et l'historique
# qui seront associés à ce script.
# Puis les fonctions interactives de création de la chaîne d'options de boot.
# Voir : http://redsymbol.net/linux-kernel-boot-parameters/3.2/
#
chAjout="lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-model=pc105 timezone=Europe\/Paris utc=yes"
chRempl="$chOrigin $chAjout"

# Là je mettrai la fonction "help"
# qui affichera l'écran d'aide.
# (Prévoir création/utilisation de fichier ".mo" ".po" par "gettext" (si possible...))

# Ces deux opérations devront êtres contrôlées (sortie code d'erreur si pb).
#
# j'ai modifié le calul pour "valOffset" qui sera en unité de "blkSize"
# ce qui permet à "dd" de lire par bloc. (donc, un seul block à lire)

blkSize=`isoinfo -d -i $fichImgEng | grep "block size" | awk '{print $5}'`
valOffset=`isoinfo -l -R -i $fichImgEng | grep $fichRech | awk '{print $10'}'`

# Là, je changerai de méthode : la copie de l'ISO entière ne sera pas faite.
# Je modifierai le bloc original (live.cfg), puis le renommerai le fichier image ISO en fnct du langage.
# le bloc sera transféré dans un "here string" pour traitement par "sed",
# puis, si demandé, recopie et sauvegarde éventuelle du bloc original dans l'historique.
# De plus, cette suite d'opérations devra être contrôlée (sortie d'un code d'erreur si pb).
cp $fichImgEng $fichImgFR && \
dd bs=$blkSize count=1 skip=$valOffset if=$fichImgEng 2>/dev/null | \
sed "s/$chOrigin/$chRempl/" | \
dd bs=$blkSize count=1 seek=$valOffset of=$fichImgFR conv=notrunc,sync

# Re-calcul et sauvegarde dans l'historique 
# de la nouvelle somme MD5 pour l'image ISO-Live modifiée,
# pour contrôle après gravure ou autre.

# La récup, depuis le site officiel de debian, de la somme MD5 de l'ISO originale
# et le calcul de la somme MD5 du fichier modifié,
# seront fait par un autre script externe (à créer)
```

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 21, 2016, 8:34 UTC](https://www.debian-fr.org/t/franciser-fichier-iso-debian-live-en-moins-d1-seconde/62827/12 "2016-02-21T20:34:13Z")

</div>

Le petit dernier (presque finit, mais qui fonctionne tout de même).  
Du coup, j’ai changé “minute” par “seconde” dans le titre de ce fil

```auto
#!/bin/sh -
#====================================================================================================
# NOM: isoLive2fr.sh
#
# SYNTAXE: isoLive2fr <fichier image ISO Live>
#
# BUT: Ajouter les paramètres de boot
# dans un fichier image ISO Live debian,
# de façon à ce qu'elle démarre en Français.
#
# NÉCESSITE: Commande Version Paquetage
# -------- ------- -----------
# isoinfo 1.1.11 genisoimage
# GNU dd 8.0.13 coreutils
# GNU awk 4.0.1 gawk
# GNU grep 2.12 grep
# GNU sed 4.2.1 sed
#
# TESTÉ SUR: debian wheezy 7.5.0 (Debian 3.2.60-1+deb7u1 x86_64 GNU/Linux)
#
# AUTEUR: MicP (debian-fr)
#
# DATE: 14/07/2014
# VERSION: 0.03
#
#----------------------------------------------------------------------------------------------------
# NOTES: Ce n'est qu'une ébauche de script inspiré par ceux qui ont été postés par fran.b
# dans le fil de discussion suivant :
# http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter les contrôles d'erreur, et plus...
#
# Si l'image ISO de la clef USB n'est pas "mounté", il est possible de modifier directement
# l'image ISO sur la clef USB en donnant le nom de fichier de périphérique ("/dev/sdc" par exemple)
# en paramètre à ce script, à la place du nom de fichier image ISO.
#----------------------------------------------------------------------------------------------------
# Projets :
#----------
# - Créer une entrée (FR) à insérer dans le menu de "grub" et a mettre "par defaut".
# - Ajouter la gestion des listes (tableau) en entrée 
# depuis un "glissé" de nom de dossier, ou sélection multiple depuis l'interface graphique.
#----------------------------------------------------------------------------------------------------
# En prévision:
# -------------
# - Pour les futurs scripts associés :
# - Fichier de Configuration :
# Rechercher dans l'ISO à Franciser les fichiers des locales et clavier disponibles.
# - Vérifier somme MD5 du fichier image ISO source avant modification.
# - Créer somme MD5 du fichier image ISO modifiée pour test intégrité après gravure.
#====================================================================================================

#------------------------------------------------------------
# Y-a t-il un paramètre sur la ligne de commande du script ?
# Sinon, demander gentiment à l'utilisateur d'entrer
# un chemin de fichier image ISO de type Live en paramètre.
#------------------------------------------------------------
fichImgEn="$1"

test "$fichImgEn" ||
  {
    printf "\n\nDonnez un chemin du fichier d'image \"ISO Live debian\" à franciser en paramètre de cette commande.\n\n Comme par exemple:\n\n\t$0 ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso\n\n\"$0\" vous remercie.\n\n"
    exit 1
  }

#------------------------------------------------------------
# Est-ce bien un fichier d'image ISO de type "DEBIAN LIVE" ?
# pour le savoir, tester la présence du fichier "live.cfg".
#------------------------------------------------------------
NmFichLive="live.cfg"

varLiveCfg=`isoinfo -l -R -i "${fichImgEn}" | grep "${NmFichLive}" | awk '{print $5, $10}'`

#---------------------------------------------------
# Si le fichier "live.cfg" n'est pas là,
# l'annoncer par un message, et quitter le script.
#---------------------------------------------------
if [-z "${varLiveCfg}"]; then
  printf "\n\"$0\" n'a pas pu trouver de fichier \"${NmFichLive}\" dans le fichier \"$fichImgEn\".\n\n\tCe fichier n'est peut-être PAS un fichier d'image ISO \"Debian Live\"...\n\n"
  exit 1
fi

#----------------------------------------------------------
# Récupérer la taille et la position du fichier "live.cfg".
#----------------------------------------------------------
valuOffset=${varLiveCfg##* } # récup de ce qui suit l'espace
ficcfgSize=${varLiveCfg%% *} # récup de ce qui précède l'espace

#-----------------------------------------------
# Récupérer la taille de bloc utilisé par l'ISO.
#-----------------------------------------------
chBlksSize="Logical block size is:"
isoBlckSiz=`isoinfo -d -i "${fichImgEn}" | grep "${chBlksSize}" | awk '{print $5}'`

#--------------------------------------------------------------
# Créer un nom unique dans le temps pour le fichier temporaire.
#--------------------------------------------------------------
fichTmp="/tmp/tmpAeffacer`date +%s`.dat"

#----------------------------------------------------------------
# Préparer le nom pour renommer le fichier ISO une fois francisé.
# (insertion de "-FR" juste après "live")
#----------------------------------------------------------------
frAins="-FR"
insApres="live"

fichImgFr="${fichImgEn%$insApres*}${insApres}${frAins}${fichImgEn#*$insApres}"

#---------------------------------------------------------------
# Créer la nouvelle chaîne de caractères des paramètres de boot.
#---------------------------------------------------------------
chOrigin="quiet splash"
chAjout="lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes"

chRempl="$chOrigin $chAjout"
#---------------------------------------------------------------

dd bs=$isoBlckSiz count=1 skip=$valuOffset if="${fichImgEn}" 2>/dev/null | \
sed "s/$chOrigin/$chRempl/" > "${fichTmp}" && \
dd bs=$isoBlckSiz count=1 seek=$valuOffset if="${fichTmp}" of="${fichImgEn}" conv=notrunc,sync 2>/dev/null && \
mv "${fichImgEn}" "${fichImgFr}" && \
rm "${fichTmp}"

printf "\nVoilà voilà! \"${fichImgFr}\" est la version francisée.\n\n"
#=====================================================================
```

---

<div class="post-metadata">

**Author:** ![ggoodluck47](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/c67d28/32.png) [@ggoodluck47](https://www.debian-fr.org/u/ggoodluck47)\
**Post date:** [Février 21, 2016, 8:34 UTC](https://www.debian-fr.org/t/franciser-fichier-iso-debian-live-en-moins-d1-seconde/62827/13 "2016-02-21T20:34:22Z")

</div>

Salut,

Testé cette version qui est réellement époustouflante de rapidité.

[quote]printf "\nDonnez un chemin d’image “ISO Live” debian en paramètre.\n"  
exit 1[/quote]

Pourquoi ne pas donner une chance à celui qui a oublié de donner la réponse à ce moment ?

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 21, 2016, 8:34 UTC](https://www.debian-fr.org/t/franciser-fichier-iso-debian-live-en-moins-d1-seconde/62827/14 "2016-02-21T20:34:25Z")

</div>

> [@](#):
>
> … Pourquoi ne pas donner une chance à celui qui a oublié de donner la réponse à ce moment ? …

En fait, j’avais envie d’en faire un script qui serait utilisable par les interface graphiques: genre glisser un fichier sur le script, ou mieux: un dossier, et toutes les ISO Live trouvées dans le dossier seraient francisées, ou/et le gestionnaire de fichiers pourrait proposer cette option par un click droit, etc…

Pour l’utilisation en ligne de commande, je ferai un autre script qui appellera celui là, et qui permettra de choisir différentes options (langues, TimeZones, types de claviers, etc…) depuis un fichier de configuration, et un autre fichier historique qui garderai les listes d’options en fonction des machines de l’utilisateur.

En fait, si je mettais tout ça dans le même script, ça deviendrait (à mon avis) vite trop lourd, et surtout trop dépendant d’un contexte particulier.

Par exemple, bobo38 a essayé de l’utiliser avec Arch, mais voilà: l’utilitaire “isoinfo” qu’il a utilisé ne retournait pas les informations dans le même ordre.  
Il a résolu le problème en modifiant lui même le script, mais j’aimerais éviter ce genre de problèmes qui pourrait aussi arriver avec les autres utilitaires utilisés, et donc aussi, l’interface utilisateur (si tant est qu’il n’y en ait qu’un type, d’utilisateur).

Pour l’instant, j’essaie (avec mes faibles connaissance d’autodidacte) de rendre ce script le plus “propre” (portable peut-être) possible.  
Alors j’en suis à “nettoyer” toutes les erreurs que je peux y trouver, et c’est bien sûr très long car j’apprends (lecture) à mesure et par essais (pour vérifier et assimiler).

Bien sûr, je suis preneur de tous les conseils qu’on pourrait me donner, notamment au sujet des erreurs de type “bashisme” car j’en connais trop peu pour les voir toutes, et je suis sûr qu’il doit y en avoir de grosses, et même d’autre type d’erreurs que je ne vois pas du tout.

Voilà pourquoi je ne laisse aucune autre chance à l’utilisateur, car c’est un autre script ou autre interface qui s’en chargera.

---

<div class="post-metadata">

**Author:** ![ggoodluck47](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/c67d28/32.png) [@ggoodluck47](https://www.debian-fr.org/u/ggoodluck47)\
**Post date:** [Février 21, 2016, 8:34 UTC](https://www.debian-fr.org/t/franciser-fichier-iso-debian-live-en-moins-d1-seconde/62827/15 "2016-02-21T20:34:25Z")

</div>

Salut,

Pour moi, il me va très bien mais si je ne l’avait lu avant je n’aurait pas pensé à entrer le chemin complet dans la commande.  
Bravo encore ![:038](https://www.debian-fr.org/uploads/default/original/1X/08df484251490af77ba342c0331f3ee271065fe9.gif "bravo")

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 21, 2016, 8:34 UTC](https://www.debian-fr.org/t/franciser-fichier-iso-debian-live-en-moins-d1-seconde/62827/16 "2016-02-21T20:34:26Z")

</div>

Merci beaucoup pour l’appréciation 😁

[quote=“ggoodluck47”]… si je ne l’avait lu avant je n’aurait pas pensé à entrer le chemin complet dans la commande. …[/quote]Alors, il va me falloir aussi apprendre à faire une page pour “man” concernant ce script. =\> dans les “TouDoux”.

---

<div class="post-metadata">

**Author:** ![ggoodluck47](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/c67d28/32.png) [@ggoodluck47](https://www.debian-fr.org/u/ggoodluck47)\
**Post date:** [Février 21, 2016, 8:34 UTC](https://www.debian-fr.org/t/franciser-fichier-iso-debian-live-en-moins-d1-seconde/62827/17 "2016-02-21T20:34:29Z")

</div>

[quote=“MicP”]Merci beaucoup pour l’appréciation 😃

> [@](#):
>
> … si je ne l’avait lu avant je n’aurait pas pensé à entrer le chemin complet dans la commande. …[/quote]Alors, il va me falloir aussi apprendre à faire une page pour “man” concernant ce script. =\> dans les “TouDoux”.

Plutôt que de demander gentiment où se trouve l’iso à traiter 😆

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 21, 2016, 8:34 UTC](https://www.debian-fr.org/t/franciser-fichier-iso-debian-live-en-moins-d1-seconde/62827/18 "2016-02-21T20:34:30Z")

</div>

[quote=“ggoodluck47”]… demander gentiment …[/quote]Voilà, j’ai apporté les 🙂 modifications demandées 🙂 , plus quelques commentaires.

J’y travaille encore, bien sûr.

EDIT: J’avais mis ça :

```auto
test "$fichImgEn" ||
  {
    printf "\n\"$0\" vous prie de bien vouloir avoir l'obligeance, l'extrême amabilité, la bonté et la délicatesse\nde donner le chemin du fichier d'image \"ISO Live\" debian à franciser en paramètre de cette commande.\n\n Comme par exemple:\n\n\t$0 ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso\n\n\"$0\" vous remercie pour votre diligence.\n\n"
    exit 1
  }
```

Mais je l’ai enlevé : Peur que ce genre d’humour soit “mal pris”.  
Désolé. :oops:

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 21, 2016, 8:34 UTC](https://www.debian-fr.org/t/franciser-fichier-iso-debian-live-en-moins-d1-seconde/62827/19 "2016-02-21T20:34:33Z")

</div>

Une nouvelle version qui insère un choix (pour la config en français) [strike]de plus dans la liste des choix[/strike] de démarrage proposés.

EDIT: Si le contenu du fichier original est bien modifié, la nouvelle taille du fichier “live.cfg” ne l’est pas,  
étant donné que le système de fichier de l’image ISO n’est pas actif.  
Seuls les 351 (taille originale du fichier) premiers octets de ce fichiers seront donc pris en compte.

Il faudra donc se contenter d’une seule entrée francisée afin de limiter la taille du fichier modifié à sa taille originale.

==========  
J’ai quand même réussi à faire faire à “sed” ce que faisait “grep” dans ce script =\> Plus besoin de “grep”.

```auto
#!/bin/sh -
#=================================================================================================
# NOM: isoLive2fr.sh
#
# SYNTAXE: isoLive2fr <fichier image ISO Live>
#
# BUT: Remplacer le menu de démarrage par une nouvelle entrée.
# Cette nouvelle entrée permettra un démarrage directement en français.
#
# NÉCESSITE: Commande Version Paquetage
# -------- ------- -----------
# isoinfo 1.1.11 genisoimage
# GNU dd 8.13 coreutils
# GNU basename 8.13 coreutils
# GNU awk 4.0.1 gawk
# GNU sed 4.2.1 sed
#
# AUTEUR: MicP (debian-fr)
#
# DATE: 18/07/2014
#
# VERSION: 0.04.05
#
#-------------------------------------------------------------------------------------------------
# NOTES: Ce n'est qu'une ébauche de script inspiré par ceux qui ont été postés par fran.b
# dans le fil de discussion suivant :
# http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html
#
# Ça fonctionne, mais je reviendrai plus tard pour rajouter des contrôles d'erreur, et plus...
#-------------------------------------------------------------------------------------------------
# Projets :
#
# - Ajouter la gestion des listes (tableau) en entrée
# depuis un "glissé" de nom de dossier, ou sélection multiple depuis l'interface graphique.
# - Adapter le script pour pouvoir modifier directement l'image "ISO Live" déjà "gravée" sur Clef USB.
# - Contrôler si le fichier n'a pas déjà été "francisé".
#---------------------------------------------------------------
# En prévision: (Pour le futur script pour le fichier de config)
# - Rechercher dans l'ISO à Franciser les fichiers des locales et clavier disponibles.
#=================================================================================================

fichImgEn="$1"
#-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Ci dessous, la ligne des paramètres de boot qui sera utilisée par le menu de démarrage par défaut.
# Ce menu apparaîtra en premier dans la liste avec le nom: "Live Fr" (suivit du type d'architecture de votre machine).
#-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
nvParams="append boot=live config quiet splash lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes"
#-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

#------------------------------------------------------------
# Y-a t-il un paramètre sur la ligne de commande du script ?
#------------------------------------------------------------
test -z "${fichImgEn}" &&
  {
    printf "\n\nDonnez le chemin du fichier d'image \"ISO Live debian\" à franciser en paramètre de cette commande.\n\n Comme par exemple:\n\n\t$0 ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso\n\n\"$0\" vous remercie.\n\n"
    exit 1
  }

#----------------------------------------------------------------
# Le paramètre corresponds-t-il à un nom de fichier accessible ?
#----------------------------------------------------------------
test -f "${fichImgEn}" ||
  {
    printf "\n\n\"$0\" n'a pu avoir accès à \"${fichImgEn}\".\n\n\tEst-ce bien un nom de fichier ?\n\n"
    exit 1
  }

#-----------------------------------------------
# Récupérer la taille de bloc utilisé par l'ISO.
#-----------------------------------------------
chBlksSize="Logical block size is:"

isoBlckSiz=$(isoinfo -d -i "${fichImgEn}" | sed -n "/${chBlksSize}/p" | sed 's/.* //')

#--------------------------------------------------------------
# Est-ce bien un fichier d'image ISO de type "DEBIAN LIVE" ?
# pour le savoir, vérifier la présence du fichier "live.cfg".
#--------------------------------------------------------------
NmFichLive=" live.cfg"

varLiveCfg=$(isoinfo -l -R -i "${fichImgEn}" 2>/dev/null | sed -n "/${NmFichLive}/p" | awk '{print $5, $10}')

#----------------------------------------------------------
# Récupérer la taille et la position du fichier "live.cfg".
#----------------------------------------------------------
ficCFGsize=${varLiveCfg%% *} # récup de ce qui précède l'espace
blckOffset=${varLiveCfg##* } # récup de ce qui suit l'espace
octsOffset=$(( $blckOffset * $isoBlckSiz ))

#---------------------------------------------------
# Si le fichier "live.cfg" n'est pas là,
# l'annoncer par un message, et quitter le script.
#---------------------------------------------------
test -z "${varLiveCfg}" &&
  {
    printf "\n\"$0\" n'a pas pu trouver de fichier \"${NmFichLive}\" dans le fichier \"${fichImgEn}\".\n\n\tCe fichier n'est peut-être PAS un fichier d'image ISO \"Debian Live\"...\n\n"
    exit 1
  }

#----------------------------------------------------------------
# Préparer le nom pour renommer le fichier ISO une fois francisé.
# (insertion de "-FR" juste après "live")
#----------------------------------------------------------------
frAins="-FR"
insApres="live"

fichImgFr="${fichImgEn%$insApres*}${insApres}${frAins}${fichImgEn#*$insApres}"

#------------------------------------------------------------
# Créer quelques variables pour la création du menu Francisé.
#------------------------------------------------------------
chLive=" ^Live ("
chLiveFR=" ^Live Fr ("
chMenDef="\tmenu default"
chAppend="\tappend boot="

#--------------------------------------------------------------------
# Créer un nom unique dans le temps pour le fichier temporaire,
# dans un sous-répertoire de "/tmp/" au nom du script et utilisateur.
#--------------------------------------------------------------------
nomRepTmp="$(basename $0)"
nomRepTmp="/tmp/${nomRepTmp%.*}-${USER}"
test -d "${nomRepTmp}" || mkdir "${nomRepTmp}"
fichTmp="${nomRepTmp}/tmp-$(date +%s).dat"

#-----------------------------------------------------------------------------------
# Extraire le contenu du fichier "live.cfg",
# sélectionner le paragraphe concernant le premier menu,
# modifier le titre du label, supprimer la ligne des paramètres de boot,
# puis sauvegarder dans "$fichTmp".
#----------------------------------------------------------------------------------
dd bs=1 count=$ficCFGsize skip=$octsOffset if="${fichImgEn}" 2>/dev/null | \
sed -n "1,/${chAppend}/p" | sed -e "s/${chLive}/${chLiveFR}/" -e "/^${chAppend}/d" > "${fichTmp}"

#--------------------------------------------------
# Ajouter la nouvelle chaîne des paramètres de boot
# + une ligne vide à la fin du fichier temporaire.
#--------------------------------------------------
printf "\t${nvParams}\n\n" >> "${fichTmp}"

#-------------------------------------------
# Remplacer le contenu du fichier "live.cfg"
# par des caractères 0x00 sur l'image ISO.
#-------------------------------------------
dd bs=1 count=$ficCFGsize seek=$octsOffset if=/dev/zero of="${fichImgEn}" conv=notrunc,sync 2>/dev/null

#------------------------------------------------
# Copie du nouveau contenu du fichier "live.cfg".
#------------------------------------------------
dd bs=1 seek=$octsOffset if="${fichTmp}" of="${fichImgEn}" conv=notrunc,sync 2>/dev/null

#-----------------------------------------
# Renommer le fichier image ISO avec "FR".
#-----------------------------------------
mv "${fichImgEn}" "${fichImgFr}"

#---------------------------------------------
# Supprimer le sous-répertoire et son contenu:
# le fichier temporaire.
#---------------------------------------------
rm -rf "${nomRepTmp}"

#------------------------------
# Annoncer que tout a été fait.
#------------------------------
printf "\nVoilà voilà! \"${fichImgFr}\" est la version francisée.\n\nSomme MD5 :\n"

#-----------------------------------------------------------
# Calcul de la somme MD5 de la nouvelle image ISO francisée.
#-----------------------------------------------------------
md5sum "${fichImgFr}"
printf "\n\n"

#=================================================================================================
```

NOTE: Ce script ne pourra fonctionner correctement que si:

- Le fichier “live.cfg” existe bien dans le système de fichiers du fichier “image ISO” donné en paramètre,
- La chaîne de caractères “live” existe dans le nom du fichier “image ISO” donné en paramètre,
- La chaîne de caractères " ^Live (" est présente dans le nom du premier label du menu de démarrage de l’ISO,
- La chaîne de caractères des options de boot du premier label débute par: “append boot= live config quiet splash”.
