Add old_files used before to generate an iso with preseed file.

This commit is contained in:
gardouille 2017-02-27 10:10:22 +01:00
parent 0d32828d45
commit cfbf04b9e7
3 changed files with 444 additions and 0 deletions

246
old_files/gen_iso.sh Executable file
View File

@ -0,0 +1,246 @@
#!/bin/sh
################################################################################################
##
## Nom: gen_iso.sh
##
## Licence: Creative Commons
##
## Version : 0.3
##
## Comportement: Recréer une image iso de Debian businesscard en ajoutant des configuration
## personnelles (preseed.cfg, boot automatique, installation automatique, ...)
##
## Dépendances:
## - genisoimage
## - Être lancé en root
##
##
################################################################################################
##
## Date de création: 30-08-2011
##
## Auteur: Gardouille
## Inspiré par le script de Yves Mettier
##
## Dernière modifications:
## 30-08-2011: -
# **********************************************************************************************
##
## 29/12/2011 - 0.3:
## - Proposition de modifier l'utilisateur principal
## - Téléchargement de la dernière image iso Debian Testing Businesscard
## - Vérification de la date de l'iso (si présente):
## - Aujourd'hui: l'image iso est réutilisée pour ce script
## - Antérieure: l'image iso est supprimée puis retéléchargée
## 13/09/2011 - 0.2:
## - Proposition à l'utilisateur de modifier les variables hostname et domainname
## - Vérification que le script se lance en root
## - Vérification que genisoimage est bien installé ou proposition d'installation
# **********************************************************************************************
##
## À modifier:
## - Ajouter un mode full silent
## - Proposer une liste de noyau en fonction de la distribution choisie
## - Ajouter le fichier de logs pour les echo
## - Ajouter des valeurs par défaut pour les variables
##
##
################################################################################################
# **********************************************************************************************
#
# Variables globales
#
# -----------------------------------------------------------
fichier_log="/tmp/gen_iso.log"
if [ -f ${fichier_log} ]; then
rm -f ${fichier_log}
fi
PREFIX=/tmp/debian
# Emplacement temporaire
TMPDIR=${PREFIX}/tmp
# Emplacement temporaire où l'iso originale sera montée
MNTDIR=${TMPDIR}/mnt
# Emplacement qui contient les données à ajouter (preseed, isolinux) ainsi que la future image iso
DATADIR=/media/udata/config_debian/sid
# Emplacement où sera stocké le contenu de la nouvelle image iso
NEWISODIR=${TMPDIR}/new_debian_businesscard
# Fichier preseed.cfg
PRESEEDFILE=${DATADIR}/preseed.cfg
# Fichier image iso originale
DEBIANISO=${DATADIR}/debian-testing-i386-businesscard.iso
# Adresse de l'iso Debian
URLISO="http://cdimage.debian.org/cdimage/daily-builds/daily/arch-latest/i386/iso-cd/debian-testing-i386-businesscard.iso"
# Fichier isolinux.cfg
ISOLINUX_CFG_FILE=${DATADIR}/isolinux.cfg
# Emplacement de la nouvelle image iso
NEWDEBIANISO=${DATADIR}/new-debian-testing-businesscard.iso
# Variable pour modifier le fichier preseed.cfg
MYHOSTNAME=""
MYDOMAINNAME=""
MYUSER=""
# Fin des variables globales
# -----------------------------------------------------------
# **********************************************************************************************
# **********************************************************************************************
#
# Fonctions globales
#
# -----------------------------------------------------------
# Divers echos ...
echoi() { echo " (ii) $*" >> "${fichier_log}" ; }
echok() { echo " (ok) $*" >> "${fichier_log}" ; }
echow() { echo " (!!) $*" >> "${fichier_log}" ; }
echnk() { echo " (EE) $*" >> "${fichier_log}" ; }
## maj_iso_debian
# Télécharge le dernier build de l'iso debian testing
maj_iso_debian()
{
if [ -f ${DEBIANISO} ]; then # Si une image iso est déjà présente
stat -c %y ${DEBIANISO}|grep `date +%Y-%m-%d` > /dev/null 2>&1
DATEISO=$?
if [ "${DATEISO}" = 0 ]; then # Si DATEISO=0, l'image iso est d'aujourd'hui
echoi "L'image iso est d'aujourd'hui."
else # Sinon on la met à jour
echoi "L'image iso doit-être mise à jour"
rm -f ${DEBIANISO}
wget ${URLISO}
fi
else
wget ${URLISO}
fi
}
## Proposer à l'utilisateur de modifier une variable
# Prototype: set_var $1 $2 $3
# $1: variable à modifier
# $2: nom de la variable à modifier
# $3: message à afficher
set_var()
{
echo -n ${3} " ["$1"] "
read $2
while [ -z "${1}" ] # Tant que la variable est vide
do
echo -n ${3} " [${1}] "
read $2
done
}
# Fin des fonctions globales
# -----------------------------------------------------------
# **********************************************************************************************
# **********************************************************************************************
#
# Programme principale
#
# -----------------------------------------------------------
# Téléchargement de la dernière image iso debian
maj_iso_debian
### Vérification que le script est bien lancé en root
if [ "${USER}" = "root" ]; then
echo "Lancement du script d'installation"
else
echo "/!\\ Le script nécessite d'être root /!\\"
exit 1
fi
### Vérification de la présence du paquet genisoimage
dpkg -s genisoimage|grep installed > /dev/null 2>&1
pkg_geniso=$?
if [ -n "${pkg_geniso}" ]; then
echo "genisoimage est installé" > /dev/null 2>&1
else
echo "/!\\ Le paquet genisoimage n'est pas installé /!\\"
echo "Appuyer sur une touche pour l'installer avec aptitude ou CTRL+C pour quitter le script et l'installer vous même."
read -p "" touche
aptitude install genisoimage
fi
# Changement des variables:
#set_var $MYHOSTNAME MYHOSTNAME "Quel est le nom de la future machine?"
#set_var $MYDOMAINNAME MYDOMAINNAME "Quel le domaine de la future machine?"
while [ -z "${MYHOSTNAME}" ] # Tant que la variable est vide
do
echo -n "Quel le nom de la future machine [${MYHOSTNAME}]?: "
read MYHOSTNAME
done
while [ -z "${MYDOMAINNAME}" ] # Tant que la variable est vide
do
echo -n "Quel le nom du futur domaine [${MYDOMAINNAME}]?: "
read MYDOMAINNAME
done
while [ -z "${MYUSER}" ] # Tant que la variable est vide
do
echo -n "Quel le nom de l'utilisateur principal [${MYUSER}]?: "
read MYUSER
done
# Récupérer le contenu de l'image ISO:
mkdir -p ${MNTDIR}
mount -o loop ${DEBIANISO} ${MNTDIR} > /dev/null 2>&1
# Suppression d'un éventuel répertoire temporaire
rm -rf ${NEWISODIR}
mkdir -p ${NEWISODIR}
# Synchronisation du contenu de l'iso
rsync -a -H --exclude=TRANS.TBL ${MNTDIR}/ ${NEWISODIR}
# On démonte l'image iso et on supprime le répertoire
umount ${MNTDIR}
rmdir ${MNTDIR}
# Copie du fichier preseed.cfg
cat ${PRESEEDFILE} | sed -e "s/@@HOSTNAME@@/${MYHOSTNAME}/g" | sed -e "s/@@DOMAINNAME@@/${MYDOMAINNAME}/g" | sed -e "s/@@MYUSER@@/${MYUSER}/g" > ${NEWISODIR}/preseed.cfg
#cat ${PRESEEDFILE}|sed -e "s/@@HOSTNAME@@/${MYHOSTNAME}/g" | sed -e "s/@@DOMAINNAME@@/${MYDOMAINNAME}/g" | sed -e "s/@@MYUSER@@/${MYUSER}/g" > ${NEWISODIR}/preseed.cfg
# Copie du fichier isolinux.cfg
cp ${ISOLINUX_CFG_FILE} ${NEWISODIR}/isolinux
# Régénération du fichier md5sum.txt
cd ${NEWISODIR}
md5sum `find -type f` > md5sum.txt
# Génération de l'image iso
cd ${NEWISODIR}
genisoimage -o ${NEWDEBIANISO} \
-r -J -no-emul-boot -boot-load-size 4 \
-boot-info-table -b isolinux/isolinux.bin \
-c isolinux/boot.cat \
${NEWISODIR}
cd -
# Un peu de ménage
rm -rf ${NEWISODIR}
exit 0
# Fin de la boucle principale
# -----------------------------------------------------------
# **********************************************************************************************

10
old_files/isolinux.cfg Executable file
View File

@ -0,0 +1,10 @@
default vesamenu.c32
#prompt 1
timeout 2
default install
label install
menu label ^Install
menu default
kernel /install.386/vmlinuz
append preseed/file=/cdrom/preseed.cfg lang=fr locale=fr_FR console-keymaps-at/keymap=fr-latin9 vga=normal initrd=/install.386/initrd.gz -- quiet

188
old_files/preseed.cfg Executable file
View File

@ -0,0 +1,188 @@
##### Langues #####
# Préconfigurer la locale seule définit la langue, le pays et la locale.
d-i debian-installer/locale select fr_FR.UTF-8
# Choix du clavier :
d-i console-keymaps-at/keymap select fr-latin9
#d-i keyboard-configuration/xkb-keymap select fr(latin9)
# Choix d'une architecture différente :
#d-i console-keymaps-usb/keymap select mac-usb-us
##### Réseau #####
# Interdire toute configuration réseau. C'est utile pour des installations
# à  partir de cédérom sur des machines sans réseau. Les questions et les avertissements
# à  propos du réseau ainsi que les temps d'attente sont fastidieux.
#d-i netcfg/enable boolean false
# Netcfg choisira une interface connectée si possible. Cela empêchera d'afficher
# une liste s'il y a plusieurs interfaces.
#d-i netcfg/choose_interface select auto
# Pour utiliser une interface particulière :
d-i netcfg/choose_interface select eth0
# Quand le serveur dhcp est lent et que l'installateur s'arrête pour l'attendre,
# ceci peut être utile :
#d-i netcfg/dhcp_timeout string 60
# Si vous préférez configurer vous-même le réseau, décommentez cette ligne et
# les lignes suivantes sur la configuration du réseau.
#d-i netcfg/disable_dhcp boolean true
# Si vous voulez que le fichier de préconfiguration fonctionne aussi bien
# avec que sans serveur dhcp, décommentez ces lignes et les lignes sur la
# configuration du réseau.
#d-i netcfg/dhcp_failed note
#d-i netcfg/dhcp_options select Configure network manually
# Configuration du réseau.
#d-i netcfg/get_nameservers string 192.168.1.1
#d-i netcfg/get_ipaddress string 192.168.1.42
#d-i netcfg/get_netmask string 255.255.255.0
#d-i netcfg/get_gateway string 192.168.1.1
#d-i netcfg/confirm_static boolean true
# Remarquez que les valeurs données par DHCP, nom de domaine ou nom de
# machine, prennent le pas sur les valeurs déclarées ici. Cependant,
# cette déclaration empêche que les questions ne soient posées même si les
# valeurs viennent de dhcp.
d-i netcfg/get_hostname string @@HOSTNAME@@
d-i netcfg/get_domain string @@DOMAINNAME@@
# Supprimer le dialogue irritant sur la clé WEP.
#d-i netcfg/wireless_wep string
# Et l'étonnant nom de machine DHCP que certains FAI utilisent comme mot de
# passe.
#d-i netcfg/dhcp_hostname string radish
# Si pour le réseau ou pour un autre matériel vous avez besoin d'un microprogramme
# (« firmware ») non libre, vous pouvez forcer l'installateur à  le télécharger,
# en évitant la demande de confirmation.
# Vous pouvez aussi désactiver la question en mettant ce paramètre « false ».
#d-i hw-detect/load_firmware boolean true
##### Comptes #####
# Autoriser les connexions du superutilisateur
d-i passwd/root-login boolean true
# On peut aussi ne pas créer de compte d'utilisateur.
d-i passwd/make-user boolean true
#Le mot de passe de root en clair...
#d-i passwd/root-password password r00tme
#d-i passwd/root-password-again password r00tme
# ... ou chiffré avec un hachage MD5
#d-i passwd/root-password-crypted password $1$098f6bcd4621d373cade4e832627b4f6
# Vous pouvez aussi présélectionner le nom de l'utilisateur et son identifiant
# de connexion
d-i passwd/user-fullname string
d-i passwd/username string @@MYUSER@@
# Mot de passe de l'utilisateur en clair...
#d-i passwd/user-password password insecure
#d-i passwd/user-password-again password insecure
# ... ou chiffré avec un hachage MD5
d-i passwd/user-password-crypted password $1$098f6bcd4621d373cade4e832627b4f6
# Préciser l'UID du premier utilisateur.
#d-i passwd/user-uid string 1010
##### Miroirs #####
# Si vous utilisez ftp, il n'est pas nécessaire d'indiquer la chaîne mirror/country.
#d-i mirror/protocol string ftp
d-i mirror/country string FR
d-i mirror/http/hostname string ftp.fr.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
d-i mirror/http/mirror string ftp.fr.debian.org
# Distribution à  installer.
#d-i mirror/suite string testing
d-i mirror/suite string unstable
# Distribution à  utiliser pour charger les composants de l'installateur (facultatif).
#d-i mirror/udeb/suite string unstable
## Pour pouvoir utiliser ces paramètres de debian-installer, il faut utiliser l'image iso "businesscard" qui est la seule image à  proposer le choix de la version de Debian à  installer (Stable, Testing ou Unstable).
##Ça ne fonctionnera donc pas avec l'image netinst
##### Fuseau horaire #####
# Cette commande permet de régler l'horloge matérielle sur UTC :
d-i clock-setup/utc boolean true
# Vous pouvez mettre toute valeur acceptée pour $TZ.
# Voyez ce que contient /usr/share/zoneinfo/ pour les valeurs possibles.
d-i time/zone string Europe/Paris
# La ligne suivante autorise l'utilisation de NTP pour régler l'horloge pendant l'installation :
d-i clock-setup/ntp boolean true
# Le serveur NTP à  utiliser. Le serveur par défaut est presque toujours correct.
#d-i clock-setup/ntp-server string 0.debian.pool.ntp.org
# Merci à SYRTE (http://http://www.syrte.obspm.fr/) pour leur serveur ntp.
d-i clock-setup/ntp-server string ntp-p1.obspm.fr
##### Installation système de base #####
# Configurer APT pour empêcher l'installation des paquets recommandés.
# Cette option qui peut conduire à  un sytème incomplet est réservée   des
# utilisateurs expérimentés.
#d-i base-installer/install-recommends boolean false
# Choix du générateur initramfs pour créer l'initrd des noyaux 2.6.
#d-i base-installer/kernel/linux/initramfs-generators string initramfs-tools
# Version du noyau à  installer (nom du paquet). Utilisez none si vous ne voulez pas
# installer de noyau.
d-i base-installer/kernel/image string linux-image-3.2.0-1-686-pae
#d-i base-installer/kernel/image string @@KERNEL@@
##### Configuration APT #####
# Vous pouvez installer des logiciels des distributions non-free et contrib.
d-i apt-setup/non-free boolean true
d-i apt-setup/contrib boolean true
# Décommentez cette ligne si vous n'utilisez pas de miroir sur le réseau.
#d-i apt-setup/use_mirror boolean false
# Choisissez les services de mise à  jour et les miroirs à  utiliser.
# Les valeurs ci-après sont les valeurs par défaut :
#d-i apt-setup/services-select multiselect security, volatile
#d-i apt-setup/security_host string security.debian.org
#d-i apt-setup/volatile_host string volatile.debian.org
##### Choix des paquets #####
tasksel tasksel/first multiselect standard
# Si vous sélectionnez la tache desktop, vous pouvez installer les environnements kde ou xfce
# au lieu de l'environnement gnome.
#tasksel tasksel/desktop multiselect kde, xfce
# Paquets supplémentaires
#d-i pkgsel/include string openssh-server build-essential
# Mise à  jour des paquets après debootstrap.
# Valeurs autorisées : none, safe-upgrade, full-upgrade
#d-i pkgsel/upgrade select none
# Certaines versions de l'installateur peuvent signaler les logiciels que vous avez installés
# et ceux que vous utilisez. Par défaut, rien n'est signalé. Mais l'envoi de rapport
# d'installation aide le projet à connaître les logiciels populaires.
popularity-contest popularity-contest/participate boolean true
##### Installation programme d'amorçage #####
# Le paramètre suivant est sans danger : il installe grub sur le
# secteur d'amorçage principal s'il n'existe aucun autre système d'exploitation
# sur la machine.
d-i grub-installer/only_debian boolean true
# Si il y a d'autres os sur la machine, remplacer la ligne précédente par la suivante:
#d-i grub-installer/with_other_os boolean true
##### Terminer l'installation #####
# Pour éviter le dernier message disant que l'installation est terminée :
d-i finish-install/reboot_in_progress note
# Pour empécher l'éjection du cédérom au moment du redémarrage,
# c'est utile parfois :
d-i cdrom-detect/eject boolean false
## Test de late_command
#Le futur système ne se trouve pas à la racine, mais dans le répertoire /target/
#Pour exécuter une commande au sein du système installé, il faut faire précéder la commande de "in-target".
#d-i preseed/late_command string in-target wget -q -O /tmp/mon_beau_paquet.deb http://lien/mon/beau/paquet.deb; in-target dpkg -i /tmp/mon_beau_paquet.deb
#in-target dpkg -i /target/root/teamviewer.deb
#d-i preseed/late_command string in-target apt-get install htop
#d-i preseed/late_command string apt-install htop
#apt-install remplace "in-target apt-get install"