Hello
J’essaye de faire un script pour faire un live-cd custom. notamment pour les gens qui on une machine qui n’est pas reconnue par un (devrai-je plutôt dire tous) live-cd, qui rend cette étape obligatoire. seulement la je stagne.
Voici ce que j’ai déjà fait a l’aide du tutoriel :
lri.fr/~barbet/liveCD.html
#!/bin/bash
# 0.-Les point important
# 1.- Si les répertoires n'existe pas il seront crée
# 2.- copier une dutribution téléchargée avec debootstrap
# 3.- Ce script utilise ldd veulliez consulter le man pour les bug
# 4.- ldd aprécie pas les script a la place des binaire,
# 5.- Une foit les librairie copier celle ci seron les meme pour
# 5.- tout les binaires.
# 6.- Pandant que vous liser le script vou pouver vous compiler un noyaux
# 6.- avec make xconfig && make
# 6.- ensuite recupérer le noyaux dans:arch/i386/boot/bzImage
# 6.- C'est ce bzImage que l'on copie dans répertoire qui sera crée par le script
# 6.- dans /iso/ de la racine du cd
# 7.- Répertoire par défaut des shell. Ceux-ci seront chrootés
# répertoire ou le cd sera construit celui ou deboostrap a télécharger
# BUG :e celui ci fera confli avec les librairies c'est ce point qui me pose problème et ensuite j'ai un problème avec chroot
# BUG: sa chroot pas dans la racine du cd j'ai velontairement mi un # devant!
REP=/home/tnt/Desktop/cd/isolinux
#Répertoire du bzimage obtenu grace a la compilation (make uniquement)
REPBZ=/home/kernelnext/lenny_cd/linux-source-2.6.21/arch/i386/boot/bzImage
#le sources list a utiliser:
FILEAPT=/etc/apt/sources.list
#====================== les tableaux ne peuve être vide=============================
#On cherche les Utilitaires présents dans
BINREP="/bin/"
UBINT="/usr/bin/"
USBINT="/usr/sbin/"
# Il nous faut aussi placer dans le live cd les lib
LIBT="/lib/"
#On prend les outils qui nous faut, verifier que ce ne sont pas des scripts !
OUTILB="bash cat chmod chown cp chroot grep gzip ls mkdir more mv rm tar dd kill nano ln mount ps umount wget"
#======================= Répertoire temporaire Et fichier temporaire=================
TMP="/tmp/isotmp.txt"
TMP1="/tmp/isotmp1.txt"
#===================== Outil spécial a obtenire et a configurer=====================
# Installer l'utilitaire isolinux http://www.kernel.org/pub/linux/utils/boot/syslinux/
# Virifier que le fichier ne soie pas séja présent dans le dossier de destination:La cible de cp
# Et qu'il existe bien dans le chemin source de la commande cp ! (man cp)
if [ -a "/usr/lib/syslinux/isolinux.bin" ] ;then
if [ ! -e $REP"/iso/" ] ;then mkdir -p $REP"/iso/" ;fi
cp "/usr/lib/syslinux/isolinux.bin" $REP"/iso/isolinux.bin"
#configuration par defaut
cd $REP"/iso" && echo -e label linux'\n'kernel bzImage'\n'append root=/dev/hda > isolinux.cfg
fi
#======================= Cree les répertoire de base ===============================
# 1.- on teste les valeur. 2.- on virifie si les répertoires existes
#BUG ne fait pas la differences entre un répertoires et un fichier!
if [ -n $REP ] ;then
if [ ! -e $REP ] ;then mkdir $REP ;fi
else
echo "Erreur paramettre vide!"
exit 0
fi
if [ -n REP$BINREP ] ;then
if [ ! -e $REP$BINREP ] ;then mkdir $REP$BINREP ;fi
fi
if [ -n $LIBT ] ;then
if [ ! -e $REP$LIBT ] ;then mkdir $REP$LIBT ;fi
else
echo "Erreur paramettre vide!"
exit 0
fi
if [ -n $UBINT ] ;then
if [ ! -e $REP$UBINT ] ;then mkdir -p $REP$UBINT >> /dev/null ;fi
else
echo "Erreur paramettre vide!"
exit 0
fi
if [ -n $USBINT ] ;then
if [ ! -e $REP$USBINT ] ;then mkdir -p $REP$USBINT >> /dev/null ;fi
else
echo "Erreur paramettre vide!"
exit 0
fi
T1="TRUE"
if [ -a $TMP1 ] ;then
rm $TMP1
fi
if [ -a $TMP ] ;then
rm $TMP
fi
#======================= Copie des programmes et de leurs librairies ================
echo "recherche des librairie des programes"
for I in $OUTILB;
do
if [ -a $BINREP$I ] ;then
cp $BINREP$I $REP$BINREP
ldd $BINREP$I | awk '{ print $1 }' > $TMP
while read line ;do
if [ -a $TMP1 ] ;then
Found=`grep $line $TMP1`
fi
if [ ! -n "$Found" ] || [ $T1 = "TRUE" ] ;then
if [ $line != "/lib/ld-linux.so.2" ] && [ -a $LIBT$line ] ;then
echo "lib $REP$LIBT$line"
cp $LIBT$line $REP$LIBT$line
echo $line >> $TMP1
T1="FALSE"
else
LEX="/lib/ld-linux.so.2"
if [ $line = $LEX ] && [ -a $LEX ] ;then
echo "lib $REP$line"
cp $LEX $REP$LEX
echo $line >> $TMP1
T1="FALSE"
fi
fi
fi
done < $TMP
elif [ -a $UBINT$I ] ;then
cp $UBINT$I $REP$UBINT
ldd $UBINT$I | awk '{ print $1 }' > $TMP
while read line ;do
if [ -a $TMP1 ] ;then
Found=`grep $line $TMP1`
fi
if [ ! -n "$Found" ] || [ $T1 = "TRUE" ] ;then
if [ $line != "/lib/ld-linux.so.2" ] && [ -a $LIBT$line ] ;then
echo "lib $REP$LIBT$line"
cp $LIBT$line $REP$LIBT$line
echo $line >> $TMP1
T1="FALSE"
else
LEX="/lib/ld-linux.so.2"
if [ $line = $LEX ] && [ -a $LEX ] ;then
echo "lib $REP$line"
cp $LEX $REP$LEX
echo $line >> $TMP1
T1="FALSE"
fi
fi
fi
done < $TMP
elif [ -a $USBINT$I ] ;then
cp $USBINT$I $REP$USBINT
ldd $USBINT$I | awk '{ print $1 }' > $TMP
while read line ;do
if [ -a $TMP1 ] ;then
Found=`grep $line $TMP1`
fi
if [ ! -n "$Found" ] || [ $T1 = "TRUE" ] ;then
if [ $line != "/lib/ld-linux.so.2" ] && [ -a $LIBT$line ] ;then
echo "lib $REP$LIBT$line"
cp $LIBT$line $REP$LIBT$line
echo $line >> $TMP1
T1="FALSE"
else
LEX="/lib/ld-linux.so.2"
if [ $line = $LEX ] && [ -a $LEX ] ;then
echo "lib $REP$line"
cp $LEX $REP$LEX
echo $line >> $TMP1
T1="FALSE"
fi
fi
fi
done < $TMP
else
echo "Erreur fichier binaire introuvable: $I dans $BINREP ou dans $UBINT ou dans $USBINT"
fi
done
#=============================== Effacement des fichier temporaires =============================
echo "Effacement des fichier temporaires"
if [ -a $TMP1 ] ;then
rm $TMP1
fi
if [ -a $TMP ] ;then
rm $TMP
fi
#=================================== On copie le bzimage=========================================
echo "Copie du bzimage"
if [ -a $REPBZ ] ;then
if [ ! -e $REP/isolinux/ ] ;then
mkdir $REP/isolinux/
cp $REPBZ $REP/isolinux/bzImage
fi
else
echo "Pas de fichier bzimage arret!"
exit 0
fi
if [ ! -e $REP/isolinux/bzImage ] ;then
echo "Erreur le fichier $REP/isolinux/bzImage n'est pas present, erreur de copie (disk full ?)"
exit 0
fi
#=================================== Configuration de apt =======================================
echo "Configuration de apt"
if [ ! -e $REP/etc ] ;then
mkdir -p $REP/etc/apt
cp $FILEAPT $REP/etc/apt
if [ ! -e $REP/etc/apt ] ;then
echo "Erreur le fichier $REP/isolinux/bzImage n'est pas present, erreur de copie (disk full ?)"
exit 0
fi
fi
#=================================== Configuration de fstab ======================================
echo "Configuration de fstab"
cd $REP/etc/ && echo -e proc /proc proc defaults 0 0 '\n'tmpfs /var tmpfs defaults 0 0 > fstab
#=================================== Configuration des répertoires temporaires===================
echo "Configuration des répertoires temporaires"
if [ ! -e $REP/var/log ] ;then
mkdir -p $REP/var/log
fi
if [ ! -e $REP/var/lock ] ;then
mkdir -p $REP/var/lock
fi
if [ ! -e $REP/var/run ] ;then
mkdir -p $REP/var/run
fi
if [ ! -e $REP/var/etc ] ;then
mkdir -p $REP/var/etc
fi
if [ ! -e $REP/proc ] ;then
mkdir -p $REP/proc
fi
#=================================== On configure le reseaux ====================================
#touch /var/etc/ifstate # penser à faire ln -s /var/etc/ifstate /etc/network/ifstate
#=================================== On mount et chroot =========================================
echo "mount sa BUG"
#mount -t proc proc $REP/proc
echo "Sa bug chroot"
#chroot $REP
#=================================== lien symbolique ============================================
echo "lien symbolique et c'est la qui faut faire attention avant d'utiliser RM"
#ln -s /var /tmp
#================================================================================================
Merci d’avance pour ceux qui on le courage de ce lancer dans l’avanture.