diff --git a/old_files/gen_iso.sh b/old_files/gen_iso.sh new file mode 100755 index 0000000..26b7b01 --- /dev/null +++ b/old_files/gen_iso.sh @@ -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 +# ----------------------------------------------------------- +# ********************************************************************************************** + + diff --git a/old_files/isolinux.cfg b/old_files/isolinux.cfg new file mode 100755 index 0000000..adb6b45 --- /dev/null +++ b/old_files/isolinux.cfg @@ -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 diff --git a/old_files/preseed.cfg b/old_files/preseed.cfg new file mode 100755 index 0000000..5cb607a --- /dev/null +++ b/old_files/preseed.cfg @@ -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"