Franciser une image ISO live

From Le Wiki de debian-fr.xyz
Jump to: navigation, search

  Important.png Cette page est obsolète, les nouvelles ISO Live de debian ont maintenant un menu permettant de choisir le langage au démarrage.


Introduction

NOTE: Cette page est obsolète car les nouveaux fichiers image ISO Live de debian ont maintenant un menu permettant de choisir le langage utilisé par le système qui sera démarré.


J'en avais vraiment marre de rajouter manuellement (avec le clavier en mode qwerty) la longue ligne des options de boot suivante qui permet de démarrer ma debian live directement en français.

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

Et puis, 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à comment je fais depuis un petit moment.

NOTE: Bien sûr cette maipulation tout comme le script qui suit fonctionnent avec tous les fichiers image ISO de type debian live

Description

J'ai décidé d'ajouter ces options de boot directement dans l'ISO téléchargée, juste avant de la graver ou copier sur une clef USB.

Comme le menu affiché au moment du boot dépend du contenu du fichier /isolinux/live.cfg de l'image ISO
dont voici un extrait du contenu (les deux premiers "label"s):

label live-amd64
	menu label ^Live (amd64)
	menu default
	linux /live/vmlinuz
	initrd /live/initrd.img
	append boot=live config quiet splash

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	linux /live/vmlinuz
	initrd

Il me faudra donc modifier la ligne :

	append boot=live config quiet splash

de façon à ce qu'elle devienne :

	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

Mais pour cela, il me faudra d'abord connaître exactement la position de ce texte dans le fichier image ISO téléchargé.

Recherche avec l'éditeur hexcurse

hexcurse est un éditeur hexadécimal qui pourrait permettre de modifier directement le fichier image ISO,
mais comme il faut insérer ces paramètres dans le texte et donc déplacer la partie de texte qui suivait la ligne des paramètres, etc…,
ça fait beaucoup trop de manipulations à faire pour moi, et puis, comme je vous l'ai déjà dit plus haut : je suis vraiment très très fainéant.

Toutefois, cet éditeur permet de rechercher la position d'une chaîne de caractère dans un fichier, et ça, ça m'intéresse beaucoup,
alors, j'entre la commande suivante :

michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso

L'écran affiché présente alors le contenu du fichier image ISO en Hexa (à gauche) et ASCII (à droite).

┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.>│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....>b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...<.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  

La touche "F1" permet d'obtenir une fenêtre d'aide.

┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│ Ctrl Key          HexCurse Keyboard Commands            │◆│ Function Keys  │
│                                                         │▒│                │
│ CTRL+?    Help     - you are reading it now             │▒│ Help     = F1  │
│ CTRL+S    Save     - saves the current file open        │▒│ Save     = F2  │
│ CTRL+O    Open     - opens a new file                   │▒│ Open     = F3  │
│ CTRL+G    Goto     - goto a specified address           │▒│ Goto     = F4  │
│ CTRL+F    Find     - search for a hex/ascii value       │▒│ Find     = F5  │
│ CTRL+A    HexAdres - toggle between hex/decimal address │▒│ HexAdres = F6  │
│ TAB       Hex Edit - toggle between hex/ASCII windows   │▒│ Hex Edit = F7  │
│ CTRL+Q    Quit     - exit out of the program            │▒│ Quit     = F8  │
│                                                         │▒│                │
│ CTRL+U    Page up  - scrolls one screen up              │▒│ Page up  = PGUP│
│ CTRL+D    Page down- scrolls one screen down            │▒│ Page down= PGDN│
│ CTRL+Z    Undo     - reverts last modification          │▒│                │
│ CTRL+T    Home     - returns to the top of the file     │▒│                │
│ CTRL+B    End      - jumps to the bottom of the file    │▒│                │
│                                                         │▒│                │
│                     Press enter to continue             │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
│                                                         │▒│                │
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Hex Edit   Quit  

NOTE: Pour utiliser les touches de raccourcis de hexcurse,
vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir ce post).

Touche Description
"F5" Permet de faire une recherche.
"F8" Quitte "hexcurse".
"TAB" Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
"CTRL-z" Anulle les modifications effectuées.
"Esc" Anulle la demande de "sauvegarde", "ouverture", "aller à" , ou "recherche" en cours.


Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche "Esc",
et je positionne le curseur dans la fenêtre Ascii avec la touche "Tab" afin de faire la recherche sur les caractères Ascii.

┌00000000─────────────────────────────────────────────────┐^┌────────────────┐
│00000000 33 ED 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │◆│3...............│
│00000010 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 │▒│................│
│00000020 33 ED FA 8E D5 BC 00 7C FB FC 66 31 DB 66 31 C9 │▒│3......|..f1.f1.│
│00000030 66 53 66 51 06 57 8E DD 8E C5 52 BE 00 7C BF 00 │▒│fSfQ.W....R..|..│
│00000040 06 B9 00 01 F3 A5 EA 4B 06 00 00 52 B4 41 BB AA │▒│.......K...R.A..│
│00000050 55 31 C9 30 F6 F9 CD 13 72 16 81 FB 55 AA 75 10 │▒│U1.0....r...U.u.│
│00000060 83 E1 01 74 0B 66 C7 06 F1 06 B4 42 EB 15 EB 00 │▒│...t.f.....B....│
│00000070 5A 51 B4 08 CD 13 83 E1 3F 5B 51 0F B6 C6 40 50 │▒│ZQ......?[Q...@P│
│00000080 F7 E1 53 52 50 BB 00 7C B9 04 00 66 A1 B0 07 E8 │▒│..SRP..|...f....│
│00000090 44 00 0F 82 80 00 66 40 80 C7 02 E2 F2 66 81 3E │▒│D.....f@.....f.>│
│000000A0 40 7C FB C0 78 70 75 09 FA BC EC 7B EA 44 7C 00 │▒│@|..xpu....{.D|.│
│000000B0 00 E8 83 00 69 73 6F 6C 69 6E 75 78 2E 62 69 6E │▒│....isolinux.bin│
│000000C0 20 6D 69 73 73 69 6E 67 20 6F 72 20 63 6F 72 72 │▒│ missing or corr│
│000000D0 75 70 74 2E 0D 0A 66 60 66 31 D2 66 03 06 F8 7B │▒│upt...f`f1.f...{│
│000000E0 66 13 16 FC 7B 66 52 66 50 06 53 6A 01 6A 10 89 │▒│f...{fRfP.Sj.j..│
│000000F0 E6 66 F7 36 E8 7B C0 E4 06 88 E1 88 C5 92 F6 36 │▒│.f.6.{.........6│
│00000100 EE 7B 88 C6 08 E1 41 B8 01 02 8A 16 F2 7B CD 13 │▒│.{....A......{..│
│00000110 8D 64 10 66 61 C3 E8 1E 00 4F 70 65 72 61 74 69 │▒│.d.fa....Operati│
│00000120 6E 67 20 73 79 73 74 65 6D 20 6C 6F 61 64 20 65 │▒│ng system load e│
│00000130 72 72 6F 72 2E 0D 0A 5E AC B4 0E 8A 3E 62 04 B3 │▒│rror...^....>b..│
│00000140 07 CD 10 3C 0A 75 F1 CD 18 F4 EB FD 00 00 00 00 │▒│...<.u..........│
│00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001B0 C4 BE 19 00 00 00 00 00 A4 0D CF 4A 00 00 80 02 │▒│...........J....│
│000001C0 01 00 17 3F E0 B4 40 00 00 00 C0 A7 1D 00 00 00 │▒│...?..@.........│
│000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA │▒│..............U.│
└Enter ascii value (): live-amd64                          v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  

Après avoir appuyé sur la touche "F5", en bas à gauche de l'écran s'affiche une invite me proposant d'entrer la chaîne de caractères à rechercher.
Je réponds alors en entrant la chaîne de caractères : live-amd64 et je valide ma saisie avec la touche habituelle : "Entrée".


La recherche prend un petit peu de temps (35 secondes) mais il s'agit quand même d'un très gros fichier, puis le texte recherché est enfin trouvé.
Mais il me faut positionner le curseur au début de la ligne, c'est à dire juste après le premier octet "null" précédent, sur le premier "l" de "label".

┌33807006─────────────────────────────────────────────────┐^┌────────────────┐
│33807000 6C 61 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 │▒│label live-amd64│
│33807010 0A 09 6D 65 6E 75 20 6C 61 62 65 6C 20 5E 4C 69 │▒│..menu label ^Li│
│33807020 76 65 20 28 61 6D 64 36 34 29 0A 09 6D 65 6E 75 │▒│ve (amd64)..menu│
│33807030 20 64 65 66 61 75 6C 74 0A 09 6C 69 6E 75 78 20 │▒│ default..linux │
│33807040 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A 09 69 │▒│/live/vmlinuz..i│
│33807050 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E 69 74 │▒│nitrd /live/init│
│33807060 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 20 62 │▒│rd.img..append b│
│33807070 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 67 20 │▒│oot=live config │
│33807080 71 75 69 65 74 20 73 70 6C 61 73 68 0A 0A 6C 61 │▒│quiet splash..la│
│33807090 62 65 6C 20 6C 69 76 65 2D 61 6D 64 36 34 2D 66 │▒│bel live-amd64-f│
│338070A0 61 69 6C 73 61 66 65 0A 09 6D 65 6E 75 20 6C 61 │▒│ailsafe..menu la│
│338070B0 62 65 6C 20 5E 4C 69 76 65 20 28 61 6D 64 36 34 │▒│bel ^Live (amd64│
│338070C0 20 66 61 69 6C 73 61 66 65 29 0A 09 6C 69 6E 75 │▒│ failsafe)..linu│
│338070D0 78 20 2F 6C 69 76 65 2F 76 6D 6C 69 6E 75 7A 0A │▒│x /live/vmlinuz.│
│338070E0 09 69 6E 69 74 72 64 20 2F 6C 69 76 65 2F 69 6E │▒│.initrd /live/in│
│338070F0 69 74 72 64 2E 69 6D 67 0A 09 61 70 70 65 6E 64 │▒│itrd.img..append│
│33807100 20 62 6F 6F 74 3D 6C 69 76 65 20 63 6F 6E 66 69 │▒│ boot=live confi│
│33807110 67 20 6D 65 6D 74 65 73 74 20 6E 6F 61 70 69 63 │▒│g memtest noapic│
│33807120 20 6E 6F 61 70 6D 20 6E 6F 64 6D 61 20 6E 6F 6D │▒│ noapm nodma nom│
│33807130 63 65 20 6E 6F 6C 61 70 69 63 20 6E 6F 6D 6F 64 │▒│ce nolapic nomod│
│33807140 65 73 65 74 20 6E 6F 73 6D 70 20 6E 6F 73 70 6C │▒│eset nosmp nospl│
│33807150 61 73 68 20 76 67 61 3D 6E 6F 72 6D 61 6C 0A 00 │▒│ash vga=normal..│
│33807160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│33807190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │◆│................│
│338071D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
│338071F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │▒│................│
└─────────────────────────────────────────────────────────┘v└────────────────┘
  Help     Save     Open        Goto     Find      Hex Addr Asc Edit   Quit  

Une fois le curseur bien positionné, en haut à gauche de la fenêtre, on pourra lire le décalage depuis le début du fichier :
33807000, mais attention, il s'agit d'une valeur hexadécimale.


Pour convertir cette valeur hexadécimale en valeur décimale, j'utilise la fonction printf :

michel@debG53SW:~$ printf "%d\n" 0x33807000
864055296

Extraire, avec dd, le texte à modifier

dd permet de lire et écrire de façon "brute", donc dans un fichier de format quelconque,
il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.

michel@debG53SW:~$ dd bs=1 count=512 skip=864055296 if=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso of=fichTemp.txt
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00403728 s, 127 kB/s
michel@debG53SW:~$

Je visualise avec hexdump les 512 octets récupérés :

michel@debG53SW:~$ hexdump -Cv fichTemp.txt 
00000000  6c 61 62 65 6c 20 6c 69  76 65 2d 61 6d 64 36 34  |label live-amd64|
00000010  0a 09 6d 65 6e 75 20 6c  61 62 65 6c 20 5e 4c 69  |..menu label ^Li|
00000020  76 65 20 28 61 6d 64 36  34 29 0a 09 6d 65 6e 75  |ve (amd64)..menu|
00000030  20 64 65 66 61 75 6c 74  0a 09 6c 69 6e 75 78 20  | default..linux |
00000040  2f 6c 69 76 65 2f 76 6d  6c 69 6e 75 7a 0a 09 69  |/live/vmlinuz..i|
00000050  6e 69 74 72 64 20 2f 6c  69 76 65 2f 69 6e 69 74  |nitrd /live/init|
00000060  72 64 2e 69 6d 67 0a 09  61 70 70 65 6e 64 20 62  |rd.img..append b|
00000070  6f 6f 74 3d 6c 69 76 65  20 63 6f 6e 66 69 67 20  |oot=live config |
00000080  71 75 69 65 74 20 73 70  6c 61 73 68 0a 0a 6c 61  |quiet splash..la|
00000090  62 65 6c 20 6c 69 76 65  2d 61 6d 64 36 34 2d 66  |bel live-amd64-f|
000000a0  61 69 6c 73 61 66 65 0a  09 6d 65 6e 75 20 6c 61  |ailsafe..menu la|
000000b0  62 65 6c 20 5e 4c 69 76  65 20 28 61 6d 64 36 34  |bel ^Live (amd64|
000000c0  20 66 61 69 6c 73 61 66  65 29 0a 09 6c 69 6e 75  | failsafe)..linu|
000000d0  78 20 2f 6c 69 76 65 2f  76 6d 6c 69 6e 75 7a 0a  |x /live/vmlinuz.|
000000e0  09 69 6e 69 74 72 64 20  2f 6c 69 76 65 2f 69 6e  |.initrd /live/in|
000000f0  69 74 72 64 2e 69 6d 67  0a 09 61 70 70 65 6e 64  |itrd.img..append|
00000100  20 62 6f 6f 74 3d 6c 69  76 65 20 63 6f 6e 66 69  | boot=live confi|
00000110  67 20 6d 65 6d 74 65 73  74 20 6e 6f 61 70 69 63  |g memtest noapic|
00000120  20 6e 6f 61 70 6d 20 6e  6f 64 6d 61 20 6e 6f 6d  | noapm nodma nom|
00000130  63 65 20 6e 6f 6c 61 70  69 63 20 6e 6f 6d 6f 64  |ce nolapic nomod|
00000140  65 73 65 74 20 6e 6f 73  6d 70 20 6e 6f 73 70 6c  |eset nosmp nospl|
00000150  61 73 68 20 76 67 61 3d  6e 6f 72 6d 61 6c 0a 00  |ash vga=normal..|
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000200
michel@debG53SW:~$

Comme on peut le constater, les 161 derniers octets sont à 0, il y aurait largement assez de place pour insérer les options, d'autant que la taille des secteurs utilisé par cette ISO est de 2048. MAIS, et oui, il y a un "mais": si nous modifions le contenu du fichier par cette méthode, cela ne changera pas la taille du fichier dans le système de fichier qui l'héberge. Le nouveau contenu du fichier "live.cfg" ne devra pas dépasser la taille du fichier original.

Ajouter les options avec sed

Je rajoute les options à la suite de "quiet splash" en utilisant sed :

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

Je vérifie que les options ont bien été ajoutées :

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 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:~$

Bien sûr, la taille du fichier est passée de 512 à 620 octets :

michel@debG53SW:~$ ls -l fichTemp.txt 
-rw-r--r-- 1 michel michel 620 juil.  7 11:50 fichTemp.txt
michel@debG53SW:~$

Mais je ne recopierai que les 512 premiers caractères de ce fichier dans l'image ISO.

Recopier 512 octets dans le fichier image ISO

Avant tout, je vais sauvegarder le fichier original en en faisant une copie :

michel@debG53SW:~$ cp ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso

Maintenant, je replace les 512 premiers octets du fichier fichTemp.txt dans le fichier image ISO avec dd :

michel@debG53SW:~$ dd conv=notrunc bs=1 count=512 seek=864055296 if=fichTemp.txt of=~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
512+0 enregistrements lus
512+0 enregistrements écrits
512 octets (512 B) copiés, 0,00166931 s, 307 kB/s
michel@debG53SW:~$

Tester l'image ISO avec kvm

Je teste le démarrage de l'image ISO avec kvm (ou VirtualBox) :

michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso

Un appui sur la touche "Tab" me permet de constater que les options ajoutées sont bien là,
et le lancement de l'image ISO "debian live" me permet de constater que la francisation de l'interface graphique de Xfce est bien fonctionnelle.

Je peux donc maintenant utiliser ce fichier image ISO "francisé" pour préparer mon périphérique de boot (DVD ou USB).

Il ne reste plus qu'à supprimer les fichiers devenus inutiles :

michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso

NOTE: Si j'avais pas eu peur que vous ne fassiez une erreur de fichier de périphérique, je vous aurai dit que cette manipulation pourrait très bien être faite directement sur la clef USB. C'est aussi facile d'y arriver que de détruire son système linux, alors si vous aimez jouer, amusez vous bien, mais moi, je ne vous ai absolument pas dit comment faire, comme ça, on ne me fera pas porter le chapeau.

Ou alors, utilisez un script.

#!/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 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 répertoire, 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"

#=================================================================================================