editor
621
modifications
m (→Ou alors, utilisez un script. : MàJ en-tête) |
m (→Ou alors, utilisez un script. : nvlle version script) |
||
Ligne 351 : | Ligne 351 : | ||
# SYNTAXE: isoLive2fr <fichier image ISO Live> | # SYNTAXE: isoLive2fr <fichier image ISO Live> | ||
# | # | ||
# BUT: | # 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: | # 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) | # AUTEUR: MicP (debian-fr) | ||
# | # | ||
# DATE: | # DATE: 18/07/2014 | ||
# VERSION: 0. | # | ||
# VERSION: 0.04.05 | |||
# | # | ||
#------------------------------------------------------------------------------------------------- | #------------------------------------------------------------------------------------------------- | ||
Ligne 371 : | Ligne 372 : | ||
# http://www.debian-fr.org/franciser-l-iso-debian-7-5-live-nonfree-moins-de-2-minutes-t48948.html | # 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 | # Ç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. | |||
#================================================================================================= | #================================================================================================= | ||
test "$fichImgEn" || | 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 "\ | printf "\n\n\"$0\" n'a pu avoir accès à \"${fichImgEn}\".\n\n\tEst-ce bien un nom de fichier ?\n\n" | ||
exit 1 | exit 1 | ||
} | } | ||
isoinfo -d -i "$fichImgEn" | | #----------------------------------------------- | ||
# 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\"${fichImgEn}\" n'est PAS un fichier d'image ISO \"Debian Live\"...\n\n" | 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 | exit 1 | ||
} | } | ||
#---------------------------------------------------------------- | |||
# Préparer le nom pour renommer le fichier ISO une fois francisé. | |||
# (insertion de "-FR" juste après "live") | |||
#---------------------------------------------------------------- | |||
frAins="-FR" | frAins="-FR" | ||
insApres="live" | insApres="live" | ||
Ligne 391 : | Ligne 452 : | ||
fichImgFr="${fichImgEn%$insApres*}${insApres}${frAins}${fichImgEn#*$insApres}" | fichImgFr="${fichImgEn%$insApres*}${insApres}${frAins}${fichImgEn#*$insApres}" | ||
#------------------------------------------------------------ | |||
# Créer quelques variables pour la création du menu Francisé. | |||
#------------------------------------------------------------ | |||
fichTmp="/tmp | 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> | |||
</code> |