tazlito rev 11

pave the road to flavors. Misc fixes: lzma, typos
author Pascal Bellard <pascal.bellard@slitaz.org>
date Tue Dec 11 19:14:12 2007 +0100 (2007-12-11)
parents f3fd2701605e
children 15a98c96f18f
files doc/tazlito.html tazlito
line diff
     1.1 --- a/doc/tazlito.html	Tue Dec 04 12:36:02 2007 +0100
     1.2 +++ b/doc/tazlito.html	Tue Dec 11 19:14:12 2007 +0100
     1.3 @@ -51,14 +51,14 @@
     1.4  automatiquement par Tazlito, il spécifie le nom de l'image ISO, le nom du
     1.5  volume, le préparateur, le chemin vers le repositoire des paquets et celui
     1.6  vers la distribution. Tazlito permet aussi de configurer un répertoire
     1.7 -contenant des fichiers additionnels, qui seront copier dans le LiveCD lors
     1.8 +contenant des fichiers additionnels, qui seront copiés dans le LiveCD lors
     1.9  de la génération de la distribution.
    1.10  </p>
    1.11  <p>
    1.12  Tazlito fait partie des outils SliTaz (slitaz-tools), distribué sous licence
    1.13 -libre GNU gpl v3, installé par défaut sur SliTaz et installé/testé avec succès
    1.14 +libre GNU gpl v3, installé par défaut sur SliTaz et installé/testé avec succés
    1.15  sur Debian GNU/Linux. Vous trouverez aussi un complément d'informations au
    1.16 -sujet de création de sa propre version du LiveCD, via le livre de cuisine
    1.17 +sujet de la création de votre propre version du LiveCD, via le livre de cuisine
    1.18  (Cookbook) de SliTaz (http://www.slitaz.org/doc/cookbook/).
    1.19  </p>
    1.20  
    1.21 @@ -73,7 +73,7 @@
    1.22  </pre>
    1.23  <h3><font color="#6c0023">stats</font></h3>
    1.24  <p>
    1.25 -Stats affiche les variables de configurations, le chemim vers les différents
    1.26 +Stats affiche les variables de configuration, le chemin vers les différents
    1.27  fichiers et répertoires et les informations sur l'image ISO :
    1.28  </p>
    1.29  <pre>
    1.30 @@ -82,8 +82,8 @@
    1.31  <h3><font color="#6c0023">gen-config</font></h3>
    1.32  <p>
    1.33  La commande 'gen-config' vous permet de générer une fichier de configuration
    1.34 -prête à être édité. Par défaut le fichier est créé dans le répertoire courant
    1.35 -et peut aussi être dans un autre répertoire si spécifié :
    1.36 +prêt à être édité. Par défaut le fichier est créé dans le répertoire courant
    1.37 +et peut aussi l'être dans un autre répertoire si spécifié :
    1.38  </p>
    1.39  <pre>
    1.40   # tazlito gen-config
    1.41 @@ -100,7 +100,7 @@
    1.42  <h3><font color="#6c0023">gen-iso</font></h3>
    1.43  <p>
    1.44  La commande 'gen-iso' pour <em>Generate ISO</em> permet de générer une nouvelle
    1.45 -image ISO du LiveCD suite à des modifications et ajouter dans le sysstème
    1.46 +image ISO du LiveCD suite à des modifications et ajouter dans le système
    1.47  racine du cdrom. Pour fonctionner cette commande a besoin d'un répertoire
    1.48  contenant la structure du système Live, cette structure peur facilement être
    1.49  construite avec la commande 'extract-distro', modifiée et reconstruite via :
    1.50 @@ -110,7 +110,7 @@
    1.51  </pre>
    1.52  <h3><font color="#6c0023">gen-initiso</font></h3>
    1.53  <p>
    1.54 -La commande 'gen-initiso' va faire le même travil que 'gen-iso' mais en
    1.55 +La commande 'gen-initiso' va faire le même travail que 'gen-iso' mais en
    1.56  reconstruisant préalablement l'initramfs compressé du système. L'initramfs
    1.57  contient tous le système racine de la distribution et doit être reconstruite
    1.58  en cas de modifications sur les fichiers.
    1.59 @@ -132,10 +132,10 @@
    1.60  <h3><font color="#6c0023">gen-distro</font></h3>
    1.61  <p>
    1.62  La commande <em>Generate Distribution</em> permet de générer la structure du
    1.63 -système Live et une image ISO via une liste paquets. Pour fonctionner, cette
    1.64 +système Live et une image ISO via une liste de paquets. Pour fonctionner, cette
    1.65  commande a besoin d'une liste de paquets, d'un répertoire contenant tous les
    1.66  paquets (.tazpkg) de la liste et d'un répertoire pour générer la distribution.
    1.67 -Le chemin vers les différents répertoires sont a configurer dans le fichier de
    1.68 +Le chemin vers les différents répertoires sont à configurer dans le fichier de
    1.69  configuration utilisé et les paquets peuvent être téléchargés depuis les
    1.70  miroirs de SliTaz ou générés par Tazwok. Pour générer une distro :
    1.71  </p>
    1.72 @@ -144,7 +144,7 @@
    1.73  </pre>
    1.74  <h3><font color="#6c0023">clean-distro</font></h3>
    1.75  <p>
    1.76 -Supprime tous les fichiers généré ou extrait de la structure du LiveCD :
    1.77 +Supprime tous les fichiers générés ou extraits de la structure du LiveCD :
    1.78  </p>
    1.79  <pre>
    1.80   # tazlito clean-distro
     2.1 --- a/tazlito	Tue Dec 04 12:36:02 2007 +0100
     2.2 +++ b/tazlito	Tue Dec 11 19:14:12 2007 +0100
     2.3 @@ -20,6 +20,8 @@
     2.4  TOP_DIR=`pwd`
     2.5  INITRAMFS=rootfs.gz
     2.6  LZMA_INITRAMFS=rootfs.lz
     2.7 +LOCALSTATE=/var/lib/tazpkg
     2.8 +INSTALLED=$LOCALSTATE/installed
     2.9  
    2.10  # Try to include config file, continue if command is gen-config or exit.
    2.11  # The main config used by default is in /etc/tazlito.
    2.12 @@ -98,6 +100,15 @@
    2.13  	fi
    2.14  }
    2.15  
    2.16 +# Check for the rootfs tree.
    2.17 +check_rootfs()
    2.18 +{
    2.19 +	if [ ! -d "$ROOTFS" ] ; then
    2.20 +		echo -e "\nUnable to find a distro rootfs to check.\n"
    2.21 +		exit 0
    2.22 +	fi
    2.23 +}
    2.24 +
    2.25  # Check for the boot dir into the root CD tree.
    2.26  verify_rootcd()
    2.27  {
    2.28 @@ -133,11 +144,9 @@
    2.29  	# Use lzma if installed
    2.30  	if [ -x /usr/bin/lzma ]; then
    2.31  		echo -n "Generating cpio archive... "
    2.32 -		find . -print | cpio -o -H newc > ../rootfs.cpio
    2.33 +		find . -print | cpio -o -H newc | lzma e -si -so > $DISTRO/$LZMA_INITRAMFS
    2.34  		cd $DISTRO
    2.35 -		lzma e $ROOTFS.cpio $LZMA_INITRAMFS
    2.36 -		rm rootfs.cpio
    2.37 -		cp $LZMA_INITRAMFS $ROOTCD/boot
    2.38 +		mv $LZMA_INITRAMFS $ROOTCD/boot
    2.39  		# Remove eventual gziped initramfs and sed isolinux.cfg for the path
    2.40  		# to lzma rootfs ($LZMA_INITRAMFS)
    2.41  		rm -f $ROOTCD/boot/$INITRAMFS
    2.42 @@ -146,7 +155,7 @@
    2.43  		echo -n "Generating gziped initramfs... "
    2.44  		find . -print | cpio -o -H newc | gzip -9 > $DISTRO/$INITRAMFS
    2.45  		cd $DISTRO
    2.46 -		cp $INITRAMFS $ROOTCD/boot
    2.47 +		mv $INITRAMFS $ROOTCD/boot
    2.48  	fi
    2.49  }
    2.50  
    2.51 @@ -160,9 +169,9 @@
    2.52  	echo "Packages        : `ls -1 $ROOTFS/var/lib/tazpkg/installed | wc -l`"
    2.53  	echo "Rootfs size     : `du -sh $ROOTFS`"
    2.54  	if [ -f $LZMA_INITRAMFS ]; then
    2.55 -		echo "Initramfs size  : `du -sh $LZMA_INITRAMFS`"
    2.56 +		echo "Initramfs size  : `du -sh $ROOTCD/boot/$LZMA_INITRAMFS`"
    2.57  	else
    2.58 -		echo "Initramfs size  : `du -sh $INITRAMFS`"
    2.59 +		echo "Initramfs size  : `du -sh $ROOTCD/boot/$INITRAMFS`"
    2.60  	fi
    2.61  	echo "ISO image size  : `du -sh $ISO_NAME.iso`"
    2.62  	echo "================================================================================"
    2.63 @@ -244,7 +253,6 @@
    2.64  		# a empty config file and sed it.
    2.65  		#
    2.66  		if [ -f "tazlito.conf" ] ; then
    2.67 -			continue
    2.68  			rm tazlito.conf
    2.69  		else
    2.70  			if test $(id -u) = 0 ; then
    2.71 @@ -260,17 +268,17 @@
    2.72  		echo -e "\033[1mConfiguring :\033[0m `pwd`/tazlito.conf"
    2.73  		echo "================================================================================"
    2.74  		# ISO name.
    2.75 -		echo -n "ISO name            : " ; read anser
    2.76 -		sed -i s#'ISO_NAME=\"\"'#"ISO_NAME=\"$anser\""# tazlito.conf
    2.77 +		echo -n "ISO name            : " ; read answer
    2.78 +		sed -i s#'ISO_NAME=\"\"'#"ISO_NAME=\"$answer\""# tazlito.conf
    2.79  		# Volum name.
    2.80 -		echo -n "Volum name          : " ; read anser
    2.81 -		sed -i s/'VOLUM_NAME=\"SliTaz\"'/"VOLUM_NAME=\"$anser\""/ tazlito.conf
    2.82 +		echo -n "Volum name          : " ; read answer
    2.83 +		sed -i s/'VOLUM_NAME=\"SliTaz\"'/"VOLUM_NAME=\"$answer\""/ tazlito.conf
    2.84  		# Packages repository.
    2.85 -		echo -n "Packages repository : " ; read anser
    2.86 -		sed -i s#'PACKAGES_REPOSITORY=\"\"'#"PACKAGES_REPOSITORY=\"$anser\""# tazlito.conf
    2.87 +		echo -n "Packages repository : " ; read answer
    2.88 +		sed -i s#'PACKAGES_REPOSITORY=\"\"'#"PACKAGES_REPOSITORY=\"$answer\""# tazlito.conf
    2.89  		# Distro path.
    2.90 -		echo -n "Distro path         : " ; read anser
    2.91 -		sed -i s#'DISTRO=\"\"'#"DISTRO=\"$anser\""# tazlito.conf
    2.92 +		echo -n "Distro path         : " ; read answer
    2.93 +		sed -i s#'DISTRO=\"\"'#"DISTRO=\"$answer\""# tazlito.conf
    2.94  		echo "================================================================================"
    2.95  		echo "Config file is ready to use."
    2.96  		echo "You can now extract an ISO or generate a distro."
    2.97 @@ -336,14 +344,13 @@
    2.98  		cp -a $TMP_DIR/boot/isolinux $TARGET/rootcd/boot
    2.99  		status
   2.100  		echo -n "Copying the rootfs..."
   2.101 -		cp $TMP_DIR/boot/rootfs.gz $TARGET/rootcd/boot
   2.102 -		cp $TMP_DIR/boot/rootfs.gz $TARGET/rootfs
   2.103 +		cp $TMP_DIR/boot/rootfs.?z $TARGET/rootcd/boot
   2.104  		status
   2.105  		# Exract initramfs.
   2.106  		cd $TARGET/rootfs
   2.107  		echo -n "Extracting the rootfs... "
   2.108 -		gzip -d rootfs.gz && cpio -id < rootfs
   2.109 -		rm rootfs
   2.110 +		( zcat ../rootcd/boot/rootfs.gz 2>/dev/null || \
   2.111 +		  lzma d ../rootcd/boot/rootfs.lz -so ) | cpio -id
   2.112  		# Umount and remove temp directory and cd to $TARGET to get stats.
   2.113  		umount $TMP_DIR && rm -rf $TMP_DIR
   2.114  		cd ..
   2.115 @@ -410,6 +417,7 @@
   2.116  		sleep 2
   2.117  		for pkg in $LIST
   2.118  		do
   2.119 +			local here=`pwd`
   2.120  			# First copy and extract the package in tmp dir.
   2.121  			pkg=${pkg%.tazpkg}
   2.122  			mkdir -p $TMP_DIR
   2.123 @@ -417,21 +425,21 @@
   2.124  			echo ""
   2.125  			echo -n "Installing $PACKAGE... "
   2.126  			cpio -id < $pkg.tazpkg && rm -f $pkg.tazpkg
   2.127 -			gzip -d fs.cpio.gz
   2.128  			echo -n "Extracting the file system... "
   2.129 -			cpio -id < fs.cpio && rm fs.cpio
   2.130 +			zcat fs.cpio.gz | cpio -id && rm fs.cpio.gz
   2.131  			# Copy all packages fs and receipt to the rootfs.
   2.132  			echo -n "Copying files to the rootfs..."
   2.133  			cp -a fs/* $ROOTFS
   2.134  			. $PWD/receipt
   2.135 -			mkdir -p $ROOTFS/var/lib/tazpkg/installed/$PACKAGE
   2.136 +			mkdir -p $ROOTFS$INSTALLED/$PACKAGE
   2.137  			# Copy the receipt, list of files and description if exist.
   2.138 -			cp receipt $ROOTFS/var/lib/tazpkg/installed/$PACKAGE
   2.139 -			cp files.list $ROOTFS/var/lib/tazpkg/installed/$PACKAGE
   2.140 +			cp receipt $ROOTFS$INSTALLED/$PACKAGE
   2.141 +			cp files.list $ROOTFS$INSTALLED/$PACKAGE
   2.142  			if [ -f "description.txt" ] ; then
   2.143 -				cp description.txt $ROOTFS/var/lib/tazpkg/installed/$PACKAGE
   2.144 +				cp description.txt $ROOTFS$INSTALLED/$PACKAGE
   2.145  			fi
   2.146  			status
   2.147 +			cd $here
   2.148  			# Remove tmp dir to get a empty one for the next package.
   2.149  			rm -rf $TMP_DIR
   2.150  		done
   2.151 @@ -440,7 +448,8 @@
   2.152  		# Copy all files from $ADDFILES/rootfs to the rootfs.
   2.153  		if [ -d "$ADDFILES/rootfs" ] ; then
   2.154  			echo -n "Copying addfiles content to the rootfs... "
   2.155 -			cp -a $ADDFILES/rootfs/* $ROOTFS && status
   2.156 +			cp -a $ADDFILES/rootfs/* $ROOTFS
   2.157 +			status
   2.158  		fi
   2.159  		echo "Root file system is generated..."
   2.160  		# Root CD part.
   2.161 @@ -453,14 +462,15 @@
   2.162  			echo -n "Moving the boot directory..."
   2.163  			mv $ROOTFS/boot $ROOTCD
   2.164  			cd $ROOTCD/boot
   2.165 -			mv vmlinuz-* bzImage
   2.166 +			ln vmlinuz-* bzImage
   2.167  			status
   2.168  		fi
   2.169  		cd $DISTRO
   2.170  		# Copy all files from $ADDFILES/rootcd to the rootcd.
   2.171  		if [ -d "$ADDFILES/rootcd" ] ; then
   2.172  			echo -n "Copying addfiles content to the rootcd... "
   2.173 -			cp -a $ADDFILES/rootcd/* $ROOTCD && status
   2.174 +			cp -a $ADDFILES/rootcd/* $ROOTCD
   2.175 +			status
   2.176  		fi
   2.177  		# Initramfs and ISO image stuff.
   2.178  		gen_initramfs
   2.179 @@ -479,14 +489,17 @@
   2.180  				echo -n "Removing the rootfs..."
   2.181  				rm -f $DISTRO/$INITRAMFS
   2.182  				rm -f $DISTRO/$LZMA_INITRAMFS
   2.183 -				rm -rf $ROOTFS && status
   2.184 +				rm -rf $ROOTFS
   2.185 +				status
   2.186  			fi
   2.187  			if [ -d "$ROOTCD" ] ; then
   2.188  				echo -n "Removing the rootcd..."
   2.189 -				rm -rf $ROOTCD && status
   2.190 +				rm -rf $ROOTCD
   2.191 +				status
   2.192  			fi
   2.193  			echo -n "Removing eventual ISO image..."
   2.194 -			rm -f $DISTRO/$ISO_NAME.iso && status
   2.195 +			rm -f $DISTRO/$ISO_NAME.iso
   2.196 +			status
   2.197  		fi
   2.198  		echo "================================================================================"
   2.199  		echo ""
   2.200 @@ -541,16 +554,13 @@
   2.201  	check-distro)
   2.202  		# Check for a few LiveCD needed files not installed by packages.
   2.203  		#
   2.204 -		if [ ! -d "$ROOTFS" ] ; then
   2.205 -			echo -e "\nUnable to find a distro rootfs to check.\n"
   2.206 -			exit 0
   2.207 -		fi
   2.208 +		check_rootfs
   2.209  		echo ""
   2.210  		echo -e "\033[1mChecking distro :\033[0m $ROOTFS"
   2.211  		echo "================================================================================"
   2.212  		# SliTaz release info.
   2.213  		if [ ! -f "$ROOTFS/etc/slitaz-release" ]; then
   2.214 -			echo "Missing release info : /var/lib/tazpkg/mirror"
   2.215 +			echo "Missing release info : /etc/slitaz-release"
   2.216  		else
   2.217  			release=`cat $ROOTFS/etc/slitaz-release`
   2.218  			echo -n "Release      : $release"
   2.219 @@ -599,8 +609,8 @@
   2.220  		echo "ISO image     : $iso"
   2.221  		echo "================================================================================"
   2.222  		echo ""
   2.223 -		echo -n "Burn ISO image (y/N) ? "; read anser
   2.224 -		if [ "$anser" == "y" ]; then
   2.225 +		echo -n "Burn ISO image (y/N) ? "; read answer
   2.226 +		if [ "$answer" == "y" ]; then
   2.227  			echo ""
   2.228  			echo "Starting Wodim to burn the iso..." && sleep 2
   2.229  			echo "================================================================================"