|
|
(11 versions intermédiaires par 2 utilisateurs non affichées) |
Ligne 1 : |
Ligne 1 : |
| == Introduction ==
| |
| 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.
| |
| <code> lang=fr_FR.UTF-8 locales=fr_FR.UTF-8 keyboard-model=pc105 keyboard-layouts=fr keyboard-variant=latin9 timezone=Europe/Paris utc=yes</code>
| |
| 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.
| |
|
| |
|
| <u>'''NOTE:'''</u> Bien sûr cette maipulation comme le script fonctionne avec tous les fichiers image ISO de type '''debian <u>live</u>'''
| |
|
| |
| == Description ==
| |
| J'ai décidé d'ajouter ces options de boot directement dans l'[http://caesar.acc.umu.se/debian-cd/current-live/amd64/iso-hybrid/debian-live-7.5.0-amd64-xfce-desktop.iso|image 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<br />
| |
| dont voici un extrait du contenu (les deux premiers "label"s):
| |
| <pre>
| |
| 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
| |
| </pre>
| |
|
| |
| Il me faudra donc modifier la ligne :
| |
| <pre style="color: red"> append boot=live config quiet splash</pre>
| |
| de façon à ce qu'elle devienne :
| |
| <pre style="color: green"> 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</pre>
| |
| 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, <br />
| |
| 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…, <br />
| |
| ç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,<br />
| |
| alors, j'entre la commande suivante :
| |
| <code>michel@debG53SW:~$ hexcurse ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso</code>
| |
| L'écran affiché présente alors le contenu du fichier image ISO en '''Hexa''' (à gauche) et '''ASCII''' (à droite).
| |
| <code>
| |
| ┌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
| |
| </code>
| |
|
| |
| La touche '''"F1"''' permet d'obtenir une fenêtre d'aide.
| |
| <code>
| |
| ┌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
| |
| </code>
| |
| <u>'''NOTE:'''</u> Pour utiliser les touches de raccourcis de '''hexcurse''', <br />
| |
| vous devrez peut-être désactiver les touches de raccourcis de la fenêtre de terminal virtuel (voir [http://www.debian-fr.org/emulateur-de-terminal-et-raccourcis-claviers-t48963.html ce post]).
| |
|
| |
| {| class="wikitable" width="50%"
| |
| ! width="5%"| Touche
| |
| ! Description
| |
| |-{{ligne grise}}
| |
| | '''"F5"'''
| |
| | Permet de faire une recherche.
| |
| |-{{ligne grise}}
| |
| | '''"F8"'''
| |
| | Quitte "hexcurse".
| |
| |-{{ligne grise}}
| |
| | '''"TAB"'''
| |
| | Est une touche bascule qui permet de positionner le curseur dans chaque partie de l'écran affiché (Hexa ou Ascii).
| |
| |-{{ligne grise}}
| |
| | '''"CTRL-z"'''
| |
| | Anulle les modifications effectuées.
| |
| |-{{ligne grise}}
| |
| | '''"Esc"'''
| |
| | Anulle la demande de ''"sauvegarde"'', ''"ouverture"'', ''"aller à"'' , ou ''"recherche"'' en cours.
| |
| |-{{ligne grise}}
| |
| |}
| |
|
| |
|
| |
|
| |
| Maintenant que je sais comment faire, je ferme la fenêtre d'aide en utilisant la touche '''"Esc"''', <br />
| |
| et je positionne le curseur dans la fenêtre '''Ascii''' avec la touche '''"Tab"''' afin de faire la recherche sur les caractères '''Ascii'''.
| |
| <code>
| |
| ┌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
| |
| </code>
| |
| 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. <br />
| |
| 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é. <br />
| |
| 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 "'''l'''abel".
| |
| <code>
| |
| ┌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
| |
| </code>
| |
| 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 :<br />
| |
| '''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''' :
| |
| <code>
| |
| michel@debG53SW:~$ printf "%d\n" 0x33807000
| |
| 864055296
| |
| </code>
| |
|
| |
| == Extraire, avec '''dd''', le texte à modifier ==
| |
| '''dd''' permet de lire et écrire de façon "brute", donc dans un fichier de format quelconque,<br />
| |
| il conviendra parfaitement pour extraire et replacer une partie du fichier de l'image ISO à modifier.
| |
| <code>
| |
| 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:~$
| |
| </code>
| |
| Je visualise avec '''hexdump''' les 512 octets récupérés :
| |
| <code>
| |
| 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:~$
| |
| </code>
| |
| 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''' :
| |
| <code>
| |
| 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
| |
| </code>
| |
| Je vérifie que les options ont bien été ajoutées :
| |
| <code>
| |
| 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:~$
| |
| </code>
| |
| Bien sûr, la taille du fichier est passée de 512 à 620 octets :
| |
| <code>
| |
| michel@debG53SW:~$ ls -l fichTemp.txt
| |
| -rw-r--r-- 1 michel michel 620 juil. 7 11:50 fichTemp.txt
| |
| michel@debG53SW:~$
| |
| </code>
| |
| 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 :
| |
| <code>
| |
| 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
| |
| </code>
| |
| Maintenant, je replace les 512 premiers octets du fichier '''fichTemp.txt''' dans le fichier image ISO avec '''dd''' :
| |
| <code>
| |
| 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:~$
| |
| </code>
| |
|
| |
| == Tester l'image ISO avec '''kvm''' ==
| |
| Je teste le démarrage de l'image ISO avec '''kvm''' (ou '''VirtualBox''') :
| |
| <code>
| |
| michel@debG53SW:~$ kvm -m 2G -cpu host -boot d -cdrom ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop.iso
| |
| </code>
| |
| Un appui sur la touche "'''Tab'''" me permet de constater que les options ajoutées sont bien là,<br />
| |
| 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 :
| |
| <code>
| |
| michel@debG53SW:~$ rm fichTemp.txt ~/Téléchargements/debian-live-7.5.0-amd64-xfce-desktop-original.iso
| |
| </code>
| |
| == Ou alors, utilisez un script. ==
| |
| <code>
| |
| #!/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 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"
| |
|
| |
| #=================================================================================================</code>
| |