Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[howto] création LiveCD
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
bouleetbil
Guru
Guru


Joined: 06 Jul 2004
Posts: 456
Location: Montpellier

PostPosted: Fri Dec 30, 2005 6:28 pm    Post subject: [howto] création LiveCD Reply with quote

Bonjour,

Suite à quelques demandes de howto pour la création d'un LiveCD.
j'ai décidé d'écrire ce mini Howto (qui pourra être plus détaillé si besoin) afin d'aider dans la création d'un LiveCD.


1. Prérequis
.Une gentoo de base celle que vous utilisez au quotidien.
.Une gentoo qui représente la gentoo que fera office de LiveCD. Attention cette Gentoo doit être installée sur une et une seule partition !
J'appelerais GENTOO1 la gentoo que vous utilisez normalement et GENTOOLIVE la gentoo qui fera office de LiveCD
.Grub emergé GENTOO1. Vous pouvez configurer GRUB pour booter sur GENTOOLIVE. C'est plus simple que de modifier GENTOOLIVE par un chroot.
.Les outils squashfs installés sur la GENTOO1.
.Genkernel sur la GENTOOLIVE


2. Préparation de GENTOOLIVE
.Compiler le noyau avec Genkernel. Le linuxrc intégré dans l'initrd permet de gérer un livecd avec squashfs.
# genkernel --menuconfig --install all
(Ne pas oublier d'intégrer squahfs dans le noyau)
.Configurer votre GentooLive comme vous le souhaiter installer les logiciels, les fonds d'écran etc...
.Dans /boot/grub/ supprimer grub.conf et menu.lst. Les liens symboliques ne fonctionne pas avec grub en mode LiveCD.
.Créer dans /boot/grub un fichier menu.lst afin qu'il ressemble à cela :
versionNoyau représente le noyau créé avec genkernel.
Code:

default 0
timeout 10
splashimage=(cd)/boot/grub/splash.xpm.gz

title=Gentoo Linux Live
root (cd)
kernel (cd)/boot/kernel-genkernel-x86-versionNoyau  root=/dev/ram0 rw init=/linuxrc cdroot looptype=squashfs loop=/livecd.squashfs splash=verbose,fadein,theme:Metal-Tosh quiet CONSOLE=/dev/tty1
initrd (cd)/boot/initramfs-genkernel-x86-versionNoyau


.Créer un fichier /etc/fstablive avec ceci :
Code:

# /etc/fstab: static file system information.
# $Header: /home/cvsroot/gentoo-src/rc-scripts/etc/fstab,v 1.14 2003/10/13 20:03:38 azarah Exp $
#
# noatime turns off atimes for increased performance (atimes normally aren't
# needed; notail increases performance of ReiserFS (at the expense of storage
# efficiency).  It's safe to drop the noatime options if you want and to
# switch between notail and tail freely.

# <fs>             <mountpoint>    <type>     <opts>            <dump/pass>

# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.
#/dev/BOOT      /boot      ext2      noauto,noatime      1 1
#/dev/ROOT      /      xfs      noatime         0 0
#/dev/SWAP      none      swap      sw         0 0
#/dev/cdroms/cdrom0   /mnt/cdrom   iso9660      noauto,ro      0 0
/dev/fd0      /mnt/floppy   auto      noauto         0 0

# NOTE: The next line is critical for boot!
none         /proc      proc      defaults      0 0

## glibc 2.2 and above expects tmpfs to be mounted at /dev/shm for
# POSIX shared memory (shm_open, shm_unlink).
# (tmpfs is a dynamically expandable/shrinkable ramdisk, and will
#  use almost no memory if not populated with files)
# Adding the following line to /etc/fstab should take care of this:

#none         /dev/shm      tmpfs         defaults   0 0

/dev/loop0              /               squashfs        ro,defaults             0 0

tmpfs   /var/lib/init.d            tmpfs         defaults   0 0

C'est ce fichier qui sera utilisé comme fstab dans le mode LIVECD.
Si vous voulez ajouter la gestion de de détection de matérielle, installer les paquets kudzu-knoppix et autres utilitaires. Une petite recherche dans portage et sur le wiki vous permettra de trouver les logiciels disponibles.

Attention tous ce qui se trouce dans /etc /root /tmp /mnt est chargé en mémoire quand on boot sur le LiveCD. Donc il ne faut pas trop surcharger ces répertoires

3. Création du LiveCD :
.Booter sur la GENTOO1 et lancer ce script :
Code:

#GNU General Public License Version 
#This program is free software; you can redistribute it and/or
#modify it under the terms of the GNU General Public License
#version 2 as published by the Free Software Foundation.
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.
#!/bin/sh


#fichiers temporaires
livecd_target="/root/target"
#point de montage de votre gentoo LiveCD
livecd_source="/mnt/gentooLive"

#ou creer le .iso
livecd_output="/root/live/livecd.iso"

mkdir /root/target
mkdir /root/live


#deplacement de portage pour installer grub sans internet avec le script d'installation
rm -rf "$livecd_source"/usr/portage/distfiles
mirrorselect  -s3 -b10 -o  | grep 'GENTOO_MIRRORS=' >> "$livecd_source"/etc/make.conf
#chroot "$livecd_source" ebuild /usr/local/portage/sys-boot/grub/grub-0.96-r100.ebuild digest
mv "$livecd_source"/usr/portage "$livecd_source"/usr/portage2
mkdir "$livecd_source"/usr/portage
mkdir "$livecd_source"/usr/portage/sys-boot
mkdir "$livecd_source"/usr/portage/distfiles
cp -aRv "$livecd_source"/usr/portage2/eclass "$livecd_source"/usr/portage/eclass
cp -aRv "$livecd_source"/usr/portage2/profiles "$livecd_source"/usr/portage/profiles
cp -aRv "$livecd_source"/usr/portage2/header.txt "$livecd_source"/usr/portage/header.txt
cp -aRv "$livecd_source"/usr/portage2/skel.ChangeLog "$livecd_source"/usr/portage/skel.ChangeLog
cp -aRv "$livecd_source"/usr/portage2/skel.ebuild "$livecd_source"/usr/portage/skel.ebuild
cp -aRv "$livecd_source"/usr/portage2/skel.metadata.xml "$livecd_source"/usr/portage/skel.metadata.xml
cp -aRv "$livecd_source"/usr/portage2/sys-boot/grub "$livecd_source"/usr/portage/sys-boot
chroot "$livecd_source" emerge grub #va telecharger les fichiers necessaires
# Liste des dossiers à exlcure:
exclude_dir="/usr/portage2 /usr/src /proc /dev /usr/share/doc /usr/doc/usr/share/man /usr/man /tmp /var/tmp /var/log /var/cache /var/db "
#Vous pouvez en ajouter


# efface ancien iso
rm  -f "$livecd_output"

# efface ancien fichiers temporaires
rm -rf "$livecd_target"
mkdir  "$livecd_target"


#mise en place du fstabLive
mv "$livecd_source"/etc/fstab "$livecd_source"/etc/fstabdd
mv "$livecd_source"/etc/fstablive "$livecd_source"/etc/fstab
cp -a  "$livecd_source"/boot "$livecd_target"
rm -f  "$livecd_source"/etc/mtab
touch  "$livecd_source"/etc/mtab

echo -e "\nCreation squashfs...\n"
for i in $exclude_dir; do
       exclude_sqfs="$exclude_sqfs $livecd_source$i"
done
#création du fichier squashfs
mksquashfs "$livecd_source" "$livecd_target"/livecd.squashfs -e $exclude_sqfs
echo -e "\nCreation image ISO dans /root/live ...\n"
cd /
mkisofs -J -R -l -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4-boot-info-table -z -iso-level 4  -c livecd -o $livecd_output $livecd_target/ > /dev/null 2>&1
#remet le bon fstab
mv "$livecd_source"/etc/fstab "$livecd_source"/etc/fstablive
mv "$livecd_source"/etc/fstabdd "$livecd_source"/etc/fstab

#remet portage en place
rm -rf "$livecd_source"/usr/portage
mv "$livecd_source"/usr/portage2 "$livecd_source"/usr/portage
#Suppression fichiers temporaires
rm -Rf /root/target
echo "Image iso créée dans /root/live"


4. Script d'installation :
.Vous pouvez créer un installeur pour ce LiveCD, il suffit d'intégrer ce script dans GENTOOLIVE :

Code:

#GNU General Public License Version 
#This program is free software; you can redistribute it and/or
#modify it under the terms of the GNU General Public License
#version 2 as published by the Free Software Foundation.
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.
#!/bin/sh


#Les variables
BACK_TITLE="OS Installeur"
TEMP_FILE=/var/log/temp
LOG_FILE=/var/log/log.txt
CDROM_MOUNT_POINT=/mnt/cdrom
RepInstall=/mnt/gentoo
FileSquash=/mnt/cdrom/livecd.squashfs
FileTar=/mnt/cdrom/files
sourceSquash=/mnt/squash
SysFichier="ext3"
userInput=""
PartDDChoix=""
LiveCD=0

#Les fonctions
##############################################################################
#L'installation
##############################################################################
function installOS()
{
let boxHeight=7
if [ $LiveCD == 1 ]; then
   echo "Installation de Gentoo" > $LOG_FILE
   RepInstall="/mnt/gentoo"
   dialog --backtitle "$BACK_TITLE" \
   --title "Installation" \
   --yesno "Cela va installer Gentoo sur votre ordinateur.\
      Désirez-vous continuer ? \n \
      Pensez à créer les partitions si besoin dans le menu configuration."\
      16 70
   if [ $? -eq 1 ]; then
      #On quitte
      exitInstaller
   fi
   
   # choix de la la partition
   PartDD=""
   umount $RepInstall
   title="Choix de la partition Root"
   message="Sélectionner la partition Root."
   SelChoixPartition
   PartDD=$PartDDChoix
   if [ $PartDD =="" ]; then
      #On retourne au debut!
      title="Erreur"
      message="Il faut une partition."
      echo "Aucune partition choisie" >> $LOG_FILE
      showMessageBox
      installOS
   fi
   showSysFile
   TypePartition=$SysFichier
   echo "Systeme de fichier : $TypePartition " >> $LOG_FILE
   title="Choix de la partition Swap"
   message="Sélectionner la partition Swap."
   SelChoixPartition
   SwapMont=$PartDDChoix
   echo "Partion swap : $SwapMont " >> $LOG_FILE
   # Formater la partition oui/non
   dialog --backtitle "$BACK_TITLE" \
   --title "Installation LiveCd" \
   --yesno "\n Désirez-vous formater $PartDD ?" \
   16 70
   if [ $? -eq 1 ]; then
      echo "Pas de formatage "
   else
      mkfs.$TypePartition $PartDD
      echo "Formatage de $PartDD " >> $LOG_FILE
   fi
   mount -t $TypePartition $PartDD $RepInstall
   LigneMtab=""
   #traitement de LigneMtab
   LigneMtab=$(grep $RepInstall /etc/mtab)
   if [$LigneMtab == ""]; then
      #il y a probleme
      title="Erreur"
      message="Aucune partition root trouvée pour $PartDD ."
      echo "Pas de partition Root " >> $LOG_FILE
      showMessageBox
      installOS
   fi
       
   executeOK="f"
   if [ $SwapMont != '' ] ; then
      # Formater la partition  swap oui/non
      dialog --backtitle "$BACK_TITLE" \
      --title "Installation LiveCd" \
      --yesno "\n Désirez-vous formater et activer votre partition swap ?" \
      16 70
      if [ $? -eq 1 ]; then
      echo "Pas de formatage "
      else
         mkswap $SwapMont 
         swapon $SwapMont
         echo "Activation et formatage de la partition swap " >> $LOG_FILE         
         sleep 2
      fi
   fi
   

   if [ -d $RepInstall ]; then
          #creation du point de montage pour le fichier squash
          mkdir $sourceSquash >> $LOG_FILE
          mount $FileSquash $sourceSquash -t squashfs -o loop 2>> $LOG_FILE
          dialog --backtitle "$BACK_TITLE" \
      --title "Installation LiveCd" \
      --yesno "\n Gentoo va être installé sur $RepInstall " \
      16 70

      if [ $? -eq 1 ]; then
          exit  2>> $LOG_FILE #/dev/null
      fi
   title="Installation"
   message="Copie des fichiers en cours..."
      showInfoBox
   echo "Début de la copie des fichiers " >> $LOG_FILE
        cp -Rva $sourceSquash/* $RepInstall  && executeOK="t"
        cp -vp /etc/resolv.conf $RepInstall/etc/resolv.conf
        cp -Ra /dev $RepInstall
   echo "Copie des fichiers terminées " >> $LOG_FILE
   fi

    if [ $executeOK = "t" ]; then
         
          cd $RepInstall
        #chroot environnement
          mkdir $RepInstall/proc
          #mkdir $RepInstall/usr/local/portage
          mount -t proc none $RepInstall/proc
     
     disk=${LigneMtab:0:9}
     #Installation de grub oui/non
          rm -R $RepInstall/boot/grub
           dialog --backtitle "$BACK_TITLE" \
           --title "GRUB" \
           --yesno "\n Désirez vous installer grub ? " \
           16 70

         if [ $? -eq 1 ]; then
           #Mise a jour du menu.lst si grub
           #demander ou se trouve menu.lst afin de le mettre à jour
           echo "Pas encore implémenté"
         else
          echo "Installation de grub " >> $LOG_FILE
            chroot $RepInstall emerge grub
       cp -vpf /boot/grub/menu.lst $RepInstall/boot/grub/grub.conf
       chroot $RepInstall ln -s /boot/grub/grub.conf  /boot/grub/menu.lst
            diskGrub=""   
       OptionGrub=""
            case $disk in
                   "/dev/hda1" ) diskGrub='(hd0,0)'
                    ;;
                   "/dev/hda2" ) diskGrub='(hd0,1)'
                    ;;
                   "/dev/hda3" ) diskGrub='(hd0,2)'
                    ;;
                   "/dev/hda4" ) diskGrub='(hd0,3)'
                    ;;
                   "/dev/hda5" ) diskGrub='(hd0,4)'
                    ;;
                   "/dev/hda6" ) diskGrub='(hd0,5)'
                    ;;
                   "/dev/hda7" ) diskGrub='(hd0,6)'
                    ;;
                   "/dev/hda8" ) diskGrub='(hd0,7)'
                    ;;
                   "/dev/hdb1" ) diskGrub='(hd1,0)'
                   ;;
                   "/dev/hdb2" ) diskGrub='(hd1,1)'
                    ;;
                   "/dev/hdb3" ) diskGrub='(hd1,2)'
                    ;;
                   "/dev/hdb4" ) diskGrub='(hd1,3)'
                   ;;
                   "/dev/hdb5" ) diskGrub='(hd1,4)'
                    ;;
                   "/dev/hdb6" ) diskGrub='(hd1,5)'
                   ;;
                   "/dev/hdb7" ) diskGrub='(hd1,6)'
                    ;;
                   "/dev/hdb8" ) diskGrub='(hd1,7)'
                    ;;
                   "/dev/hdc1" ) diskGrub='(hd2,0)'
                    ;;
                   "/dev/hdc2" ) diskGrub='(hd2,1)'
                    ;;
                   "/dev/hdc3" ) diskGrub='(hd2,2)'
                    ;;
                   "/dev/hdc4" ) diskGrub='(hd2,3)'
                    ;;
                   "/dev/hdc5" ) diskGrub='(hd2,4)'
                    ;;
                   "/dev/hdc6" ) diskGrub='(hd2,5)'
                    ;;                           
                   "/dev/hdc7" ) diskGrub='(hd2,6)'
                    ;;
                   "/dev/hdc8" ) diskGrub='(hd2,7)'
                    ;;
                   "/dev/hdd1" ) diskGrub='(hd3,0)'
                    ;;
                   "/dev/hdd2" ) diskGrub='(hd3,1)'
                    ;;
                   "/dev/hdd3" ) diskGrub='(hd3,2)'
                    ;;
                   "/dev/hdd4" ) diskGrub='(hd3,3)'
                    ;;
                   "/dev/hdd5" ) diskGrub='(hd3,4)'
                    ;;
                   "/dev/hdd6" ) diskGrub='(hd3,5)'
                    ;;
                   "/dev/hdd7" ) diskGrub='(hd3,6)'
                    ;;
                   "/dev/hdd8" ) diskGrub='(hd3,7)'
                    ;;
         "/dev/sda1" ) diskGrub='(hd0,0)'
                    OptionGrub="doscsi"
                    ;;
                    * )
                    title="Erreur"
                    message="La partition racine n'a pas étée trouvée\n\n\
                    Vous devez éditer menu.lst manuellement"
                    let boxHeight=7
                    showMessageBox
                    diskGrub="erreur"

              esac
            if [ $diskGrub == "erreur" ]; then
                nano $RepInstall/boot/grub/grub.conf
      echo "Pas trouvé de partition racine pour Grub " >> $LOG_FILE
            else
      #modification menu.lst   
              sed -i 's:(cd):'$diskGrub':' $RepInstall/boot/grub/grub.conf
      sed -i 's:cdroot:'real_root=$disk':' $RepInstall/boot/grub/grub.conf
      sed -i 's:looptype=squashfs:'':' $RepInstall/boot/grub/grub.conf
      sed -i "s:loop=/livecd.squashfs:resume2=$SwapMont $OptionGrub:" $RepInstall/boot/grub/grub.conf
      #resume2=$SwapMont dans le cas ou le noyau prendrait en charge suspend2
      echo "menu.lst mis a jour " >> $LOG_FILE
                #fin modification menu.lst   
            fi
      
      #MAj de /etc/mtab sinon l'installation de grub ne fonctionne pas
      mbrDD=${LigneMtab:0:9}
      echo "$mbrDD / $TypePartition  rw,noatime 0 0" > $RepInstall/etc/mtab
      
      #Suppression du fichier contenant les derniers devices de grub
      rm $RepInstall/boot/grub/device.map
      chroot $RepInstall grub-install --no-floppy  ${LigneMtab:0:8}
      echo "Installation de Grub sur le mbr " >> $LOG_FILE

         fi


         #Mettre a  jour fstab
    echo "Mise à  jour de /etc/fstab " >> $LOG_FILE
         mv $RepInstall/etc/fstab $RepInstall/etc/fstablive
         #ce fichier pourra servir pour recréer un livecd


   echo "# This file is edited by fstab-sync - see 'man fstab-sync' for details       ">  $RepInstall/fstab
   echo "# /etc/fstab: static file system information.                                  " >> $RepInstall/etc/fstab
   echo "# $Header: /home/cvsroot/gentoo-src/rc-scripts/etc/fstab,v 1.14 2003/10/1320 :03:38 azarah Exp $  ">> $RepInstall/etc/fstab
   echo "#                                    " >> $RepInstall/etc/fstab
   echo "# noatime turns off atimes for increased performance (atimes normally aren't   " >> $RepInstall/etc/fstab
   echo "# needed; notail increases performance of ReiserFS (at the expense ofs torage  " >> $RepInstall/etc/fstab
   echo "# efficiency).  It's safe to drop the noatime options if you want and to       " >> $RepInstall/etc/fstab
   echo "# switch between notail and tail freely.                                       " >> $RepInstall/etc/fstab
   echo "                                                                               " >> $RepInstall/etc/fstab
   echo "# <fs>             <mountpoint>    <type>     <opts> <dump/pass>               " >> $RepInstall/etc/fstab
   echo "                                                                               " >> $RepInstall/etc/fstab
   echo "# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.     " >> $RepInstall/etc/fstab
   echo "#/dev/BOOT      /boot      ext2      noauto,noatime      1 1                   " >> $RepInstall/etc/fstab
   echo "                                                                               " >> $RepInstall/etc/fstab
   echo "#/dev/cdroms/cdrom0   /mnt/cdrom   iso9660      noauto,ro      0 0             " >> $RepInstall/etc/fstab
   echo "/dev/fd0      /mnt/floppy   auto      noauto         0 0                       " >> $RepInstall/etc/fstab
   echo "                                                                               " >> $RepInstall/etc/fstab
   echo "                                                                               " >> $RepInstall/etc/fstab
   echo "                                                                               " >> $RepInstall/etc/fstab
   echo "# NOTE: The next line is critical for boot!                                    " >> $RepInstall/etc/fstab
   echo "none         /proc      proc      defaults      0 0                            " >> $RepInstall/etc/fstab
   echo "                                                                               " >> $RepInstall/etc/fstab
   echo "# glibc 2.2 and above expects tmpfs to be mounted at /dev/shm for              " >> $RepInstall/etc/fstab
   echo "# POSIX shared memory (shm_open, shm_unlink).                                  " >> $RepInstall/etc/fstab
   echo "# (tmpfs is a dynamically expandable/shrinkable ramdisk, and will              " >> $RepInstall/etc/fstab
   echo "#  use almost no memory if not populated with files)                           " >> $RepInstall/etc/fstab
   echo "# Adding the following line to /etc/fstab should take care of this:            " >> $RepInstall/etc/fstab
   echo "                                                                               " >> $RepInstall/etc/fstab
   echo "none         /dev/shm   tmpfs      defaults      0 0                           " >> $RepInstall/etc/fstab

   #Mise a jour partition Root
   echo "$disk               /                $TypePartition     defaults        1 1    " >> $RepInstall/etc/fstab
   if [ $SwapMont != '' ] ; then
           echo "$SwapMont            none                    swap    sw           0 0    ">> $RepInstall/etc/fstab
        fi
   

       #Quitter l'installeur
       message="Gentoo a été copié sur votre Disque dur \n\n\
       L'historique de l'installation est disponible dans $LOG_FILE\n\n\
       N'oubliez pas de synchroniser votre arbre de portage : \n\n\
       # emerge sync"
       echo "Installation terminee " >> $LOG_FILE
       showMessageBox
       exitInstaller
       
  else
          message="Un problème est survenu durant la copie des fichiers,consulter $LOG_FILE "
     echo "Problème de copie :-(" >> $LOG_FILE
          showMessageBox
  fi
else
   title="Warning"
   let boxHeight=7
   message="Le LiveCd n'a pas été trouvé"
   showMessageBox
fi
return
}

##############################################################################
# Information
##############################################################################
function showMessageBox()
{
getBoxWidth
dialog --backtitle "$BACK_TITLE" \
--title "$title" \
--msgbox "\n$message" \
$boxHeight $boxWidth
return
}

##############################################################################
# Apparition d'une boite d'information
##############################################################################
function showInfoBox ()
{
getBoxWidth
dialog --backtitle "$BACK_TITLE" \
--sleep 3 \
--title "$title" \
--infobox "\n$message" \
5 $boxWidth
return
}

##############################################################################
#Choix systeme de fichier
##############################################################################
function showSysFile()
{

dialog --backtitle "$BACK_TITLE" \
--title "Systeme de fichier disponible" \
--menu "Selection :" \
18 60 6 \
"reiserfs" "Reiser fs" \
"ext3" "ext3" \
"ext2" "ext2" \
"xfs" "xfs" \
"jfs"  "jfs"  2> $TEMP_FILE

if [ $? -eq 0 ]; then
 installMethod=$(cat $TEMP_FILE)
 rm -f $TEMP_FILE
 SysFichier=$installMethod

elif [ $? -eq 1 ]; then
 SysFichier="ext3"
 #Il faut un systeme de fichiers. Par défaut ext3   
fi

}

##############################################################################
#Recherche des partitions connues
##############################################################################
function SelChoixPartition()
{
rm -f $TEMP_FILE
find /dev/hd??  >> $TEMP_FILE
find /dev/sd??  >> $TEMP_FILE

rm $TEMP_FILE.2nd 2> /dev/null
echo "Debut analyse partition"
tmp=""
cat $TEMP_FILE |
while read line
do
   tmp=$(grep ${line:5:9} /proc/partitions)
   if [ ${tmp:1:1} !="" ] ; then
      #Trouver dans /proc/partitions
      grep ${line:5:9} /proc/partitions |awk '{print "/dev/"$4 "     /dev/"$4":Taille:" int($3/1000000)"GB  \n"}' >> $TEMP_FILE.2nd
   fi

done
#toutes les partitions possible
local radioList=$(cat $TEMP_FILE.2nd)
rm $TEMP_FILE.2nd


let boxHeight=12
dialog --backtitle "$BACK_TITLE" \
--title "$title" \
--menu "$message" \
18 60 6  \
$radioList 2> $TEMP_FILE

if [ $? -eq 0 ]; then
userInput=$(cat $TEMP_FILE)
rm -f $TEMP_FILE
fi
PartDDChoix=$userInput
return

}

##############################################################################
# Apparition d'une boite d'information
##############################################################################
function showInfoBox ()
{
getBoxWidth
dialog --backtitle "$BACK_TITLE" \
--sleep 3 \
--title "$title" \
--infobox "\n$message" \
5 $boxWidth
return
}

##############################################################################
# quitter installeur
##############################################################################
function exitInstaller()
{
title="Quitter"
message="A bientôt"
let boxHeight=7
showMessageBox
exit 0
}


#Lancement du script :
if [ -s $FileSquash ]; then
 echo "LiveCD detecte"
 LiveCD=1
 installos
else
 echo "LiveCD non trouvé"
 exitInstaller
fi






Astuces : La gentoo1 peux trés bien être une autre distribtution comme ubuntu. Il faut juste que cette distribution intégre les outils squashfs et grub.
Pour alléger votre LiveCD ajouter à USE -debug => diminue la taille des éxecutables, -man -exemple -exemples -doc => pour ne pas installer les fichiers d'aides.
Le script de création pourrait servir à d'autre distribution, il faut juste intégrer le fichier linuxrc dans l'initrd et que le noyau supporte squashfs.

Pour le moment je n'ai pas le temps de détailler plus donc si vous rencontrez un problème, postez un message :wink:
_________________
L'homme n'est pas fait pour travailler ça le fatigue.
LiveCD Gentoo : http://www.frogdev.info
Gentoo/Freebsd : http://www.frogdev.info/gentoo_freebsd.php
Back to top
View user's profile Send private message
geekounet
Bodhisattva
Bodhisattva


Joined: 11 Oct 2004
Posts: 3757
Location: Lyon, France

PostPosted: Fri Dec 30, 2005 10:47 pm    Post subject: Reply with quote

Ha merci pour le howto !! :)
J'ai pas encore pris le temps de tout lire, mais j'avais envie de me faire mon livecd perso depuis qq temps.
_________________
Google+ | Twitter
Back to top
View user's profile Send private message
Antares
Apprentice
Apprentice


Joined: 04 Apr 2005
Posts: 184
Location: France

PostPosted: Tue Jan 03, 2006 12:06 am    Post subject: Reply with quote

Merci pour le partage de tes scripts, cela va m'etre tres utile !! :)
Back to top
View user's profile Send private message
SoukoussMan
n00b
n00b


Joined: 15 Aug 2006
Posts: 32
Location: Montrouge (92)

PostPosted: Fri Oct 27, 2006 6:28 am    Post subject: Reply with quote

Génial..Je vais essayer des que possible..

Quelqu'un a déjà tester a partir de cette explication et de ces scripts ?
_________________
-----
Gentoo 4 Ever
-----
Back to top
View user's profile Send private message
bouleetbil
Guru
Guru


Joined: 06 Jul 2004
Posts: 456
Location: Montpellier

PostPosted: Tue Nov 07, 2006 1:22 pm    Post subject: Reply with quote

bonjour,
Oui moi :lol: pour mes livecd. Par contre maintenant, j'utilise syslinux au lieu de grub pour le gestionnaire de boot.
_________________
L'homme n'est pas fait pour travailler ça le fatigue.
LiveCD Gentoo : http://www.frogdev.info
Gentoo/Freebsd : http://www.frogdev.info/gentoo_freebsd.php
Back to top
View user's profile Send private message
ganymede
n00b
n00b


Joined: 06 Nov 2006
Posts: 21

PostPosted: Thu Nov 23, 2006 2:24 pm    Post subject: Reply with quote

Salut bouleetbill, et merci pour ton howto.
J'aurais deux questions avant de m'y mettre :
  • Sur syslinux : quels avantages y a-t-il à l'utiliser et est-ce que cela change beaucoup la façon de procéder ?
  • La doc. gentoo mentionne un autre outil qui peut (entre autres) générer des live-cd : catalyst. Est-ce que tu l'as essayé, et si oui, qu'en penses-tu ?
Back to top
View user's profile Send private message
bouleetbil
Guru
Guru


Joined: 06 Jul 2004
Posts: 456
Location: Montpellier

PostPosted: Thu Nov 23, 2006 8:44 pm    Post subject: Reply with quote

Salut,
Pour syslinux cela change pas grand chose. Par contre, je n'utilise pas la version de portage mais une version ubuntu afin de mettre un splash. C'était pour régler un problème de boot sur une machine. Je n'ai pas essayé avec les dernières versions de grub. Donc, il est même possible que le problème soit réglé maintenant. :?:
J'ai essayé catalyst j'ai jamais réussi à aller jusqu'au bout. De plus, je trouve qu'au niveau personnalisation c'est assez limité.
_________________
L'homme n'est pas fait pour travailler ça le fatigue.
LiveCD Gentoo : http://www.frogdev.info
Gentoo/Freebsd : http://www.frogdev.info/gentoo_freebsd.php
Back to top
View user's profile Send private message
coachllb
n00b
n00b


Joined: 19 Aug 2006
Posts: 66

PostPosted: Wed Dec 13, 2006 9:16 pm    Post subject: Reply with quote

suite à un message posté dans le forum, on m'a renvoyé verrs ce tuto qui est clair et simple.
j'ai donc crée une gentoo dans une partition montée dans /mnt/gentoo. C'est ma gentoolive. J'ai testé un boot dessus, elle fonctionne.
j'ai ensuite exécuté le script en modifiant /mnt/gentoolive par /mnt/gentoo
le script se termine en me disant que l'iso est créee. Or je n'ai aucun fichier iso dans /root/live.

cependant il y a eu une erreur lors de l'émerge de grub. Mais le script a continué donc je devrais avoir un iso.
Je vais essayer de trouver l'erreur pour grub
vvoici l'erreur :
Code:

touch: setting times of `/var/tmp/portage/grub-0.97-r2/.unpacked': Function not implemented

!!! ERROR: sys-boot/grub-0.97-r2 failed.
Call stack:
  ebuild.sh, line 1539:   Called dyn_unpack
  ebuild.sh, line 712:   Called die

!!! IO Failure -- Failed 'touch .unpacked' in /var/tmp/portage/grub-0.97-r2
!!! If you need support, post the topmost build error, and the call stack if relevant.
Back to top
View user's profile Send private message
guitoo
Tux's lil' helper
Tux's lil' helper


Joined: 04 Jun 2004
Posts: 132

PostPosted: Thu Dec 14, 2006 6:59 am    Post subject: Reply with quote

Tiens ça me donne une idée de cadeau pour noel. Je vais faire ma tournée de livecd/clé usb

Si on veut intégrer les drivers nvidia et ati, comment on peut faire pour détecter la carte graphique et générer un Xorg.conf pour la carte?

Comment on peut faire pour monter automatiquement une clé usb sur /home/<user>? Avec un reconnaissance de la clé et une lecture du login et mot de passe sur la clé.
Back to top
View user's profile Send private message
coachllb
n00b
n00b


Joined: 19 Aug 2006
Posts: 66

PostPosted: Thu Dec 14, 2006 8:42 am    Post subject: Reply with quote

je n'ai plus l'erreur pour grub c'est corrigé.
par contre lors de l"éxécution du script j'obtiens :
Code:
Cannot stat exclude dir/file /mnt/gentoo/usr/doc/usr/share/man, ignoring: No such file or directory
Cannot stat exclude dir/file /mnt/gentoo/usr/man, ignoring: No such file or directory
Creating little endian 3.0 filesystem on /root/target/livecd.squashfs, block size 65536.
Error in reading file, skipping...: Input/output error
Error in reading file, skipping...: Input/output error
Error in reading file, skipping...: Input/output error
......
Little endian filesystem, data block size 65536, compressed data, compressed metadata, compressed fragments
Filesystem size 412685.61 Kbytes (403.01 Mbytes)
        38.36% of uncompressed filesystem size (1075704.40 Kbytes)
Inode table size 572681 bytes (559.26 Kbytes)
        29.09% of uncompressed inode table size (1968703 bytes)
Directory table size 536921 bytes (524.34 Kbytes)
        46.50% of uncompressed directory table size (1154641 bytes)
Number of duplicate files found 3360
Number of inodes 59651
Number of files 50084
Number of fragments 4595
Number of symbolic links  5059
Number of device nodes 3
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 4505
Number of uids 3
        root (0)
        ldap (439)
        portage (250)
Number of gids 11
        lp (7)
        ldap (439)
        mail (12)
        tty (5)
        man (15)
        nogroup (65533)
        utmp (406)
        root (0)
        portage (250)
        uucp (14)
        lpadmin (106)

Creation image ISO dans /root/live ...

Image iso créée dans /root/live


Mais je n'ai toujours pas d'image dans le répertoire live.
Back to top
View user's profile Send private message
bouleetbil
Guru
Guru


Joined: 06 Jul 2004
Posts: 456
Location: Montpellier

PostPosted: Thu Dec 14, 2006 8:54 pm    Post subject: Reply with quote

@coachllb
Pour les erreurs :
Code:

Cannot stat exclude

Celle la c'est pas grave le répertoire n'existe pas.
Par contre celle-ci :
Code:
Error in reading file, skipping...: Input/output error
me semble plus grave
Pour commencer tu peux changer cette ligne :
Code:

mkisofs -J -R -l -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4-boot-info-table -z -iso-level 4  -c livecd -o $livecd_output $livecd_target/ > /dev/null 2>&1

par
Code:

mkisofs -J -R -l -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4-boot-info-table -z -iso-level 4  -c livecd -o $livecd_output $livecd_target/

Comme cela si une erreur est détectée elle sera visible
Puis ajouter ces deux lignes afin de vérifier les répertoires :
Code:

echo "Source : $livecd_target/ "
echo "ISO : $livecd_output "

Question bête /mnt/gentoo est monté ?

@guitoo
Quote:
Si on veut intégrer les drivers nvidia et ati, comment on peut faire pour détecter la carte graphique et générer un Xorg.conf pour la carte?

avec le paquet x11-misc/mkxf86config
Quote:
Comment on peut faire pour monter automatiquement une clé usb sur /home/<user>? Avec un reconnaissance de la clé et une lecture du login et mot de passe sur la clé.

Je comprend pas l'histoire du mot de passe sinon pour monter la clé sur un répertoire. une regle udev devrait fonctionner : http://www.minet.net/spip/spip.php?article147
_________________
L'homme n'est pas fait pour travailler ça le fatigue.
LiveCD Gentoo : http://www.frogdev.info
Gentoo/Freebsd : http://www.frogdev.info/gentoo_freebsd.php
Back to top
View user's profile Send private message
dmganges
n00b
n00b


Joined: 06 Jun 2007
Posts: 34
Location: Ganges(34)

PostPosted: Wed Jun 06, 2007 8:28 pm    Post subject: Reply with quote

Bonjour,
Je connais très peu Linux, mais j'ai administré Unix pendant une dizaine d'années.
A la retraite, je redécouvre un environnement que j'ai beaucoup apprécié...
Je suis revenu à Linux par la clé USB Mandriva, et de fil en aiguille je suis remonté à Gentoo par le LiveCD SystemRescueCD que j'ai légèrement modifié.
Autant dire que je mesure l'énorme travail que vous avez réalisé.

Je n'ai pas encore exploité les scripts que vous avez déposé ici, ni parcouru la totalité de votre site ! ...
mais je ne manquerai pas de le faire car je suis très intéressé par le format LiveCD.

2 mots : BRAVO et MERCI
@+
Back to top
View user's profile Send private message
bouleetbil
Guru
Guru


Joined: 06 Jul 2004
Posts: 456
Location: Montpellier

PostPosted: Thu Jun 07, 2007 8:35 pm    Post subject: Reply with quote

Bonjour,
Merci, c'est toujours sympa des compliments :lol:

@+
_________________
L'homme n'est pas fait pour travailler ça le fatigue.
LiveCD Gentoo : http://www.frogdev.info
Gentoo/Freebsd : http://www.frogdev.info/gentoo_freebsd.php
Back to top
View user's profile Send private message
doulinux
n00b
n00b


Joined: 27 Sep 2008
Posts: 39
Location: 34190

PostPosted: Tue Oct 21, 2008 12:09 pm    Post subject: Reply with quote

Bjr booleetbil,

çà y est, j'ai fait mes toutes premières armes en gentoo, autant dire que je ne suis pas encore au point...

Comme coachllb, je n'ai pas d'image iso.
J'ai supprimé > /dev/null 2>&1

Il semble qu'il y a un pb de taille :
NB: arrêt à 93%

Creation squashfs...

Cannot stat exclude dir/file /home1/root/proc2/gentoolive/usr/doc/usr/share/man, ignoring: No such file or directory
Cannot stat exclude dir/file /home1/root/proc2/gentoolive/usr/man, ignoring: No such file or directory
Parallel mksquashfs: Using 2 processors
Creating little endian 3.1 filesystem on /home1/root/proc2/target/livecd.squashfs, block size 131072.
[======================================================== ] 58548/62508 93%
Exportable Little endian filesystem, data block size 131072, compressed data, compressed metadata, compressed fragments, duplicates are removed
Filesystem size 555362.13 Kbytes (542.35 Mbytes)
48.32% of uncompressed filesystem size (1149238.15 Kbytes)
Inode table size 603757 bytes (589.61 Kbytes)
29.99% of uncompressed inode table size (2013175 bytes)
Directory table size 590922 bytes (577.07 Kbytes)
47.35% of uncompressed directory table size (1247937 bytes)
Number of duplicate files found 4347
Number of inodes 61521
Number of files 53067
Number of fragments 3256
Number of symbolic links 3960
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 4494
Number of uids 3
root (0)
portage (250)
haldaemon (102)
Number of gids 11
lp (7)
mail (12)
man (15)
locate (245)
tty (5)
nogroup (65533)
utmp (406)
portage (250)
uucp (14)
lpadmin (106)
ssmtp (408)

Creation image ISO dans /home1/root/proc2/target

genisoimage: Boot image load size invalid.
Image iso créée dans /home1/root/proc2/livecd.iso

/home1/root/proc2
# ll target
total 372568
drwxr-xr-x 3 root root 4096 Oct 21 13:25 .
drwx------ 7 root root 4096 Oct 21 13:25 ..
drwxr-xr-x 3 root root 4096 Oct 19 17:38 boot
-rwx------ 1 root root 381116433 Oct 21 13:27 livecd.squashfs

/home1/root/proc2
# df .
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb6 10325748 6101448 3699780 63% /home1

/home1/root/proc2
# e2fsck -c /dev/sdb3
e2fsck 1.40.9 (27-Apr-2008)
Checking for bad blocks (read-only test): done
/dev/sdb3: Updating bad block inode.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 3A: Optimizing directories
Pass 4: Checking reference counts
Pass 5: Checking group summary information

/dev/sdb3: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sdb3: 274534/1311552 files (2.4% non-contiguous), 735672/2622611 blocks

3,6 Go libres pour 381 Mo, çà devrait passer... Non ?
Ou bien la limite est ailleurs ?

Ma gentooLive est une gentoo de nOOb : kernel-genkernel-x86-2.6.25-gentoo-r8, xorg, ati-drivers, kde-base, firefox + qq petits outils de vieux vim, slocate...

Quand vous aurez le temps, si vous avez une idée, je suis preneur.
MERCI !

PS: Je suis en fait dmganges, j'ai abandonné cet identifiant qui correspondait aussi à une @Mail saturée de spams
Back to top
View user's profile Send private message
doulinux
n00b
n00b


Joined: 27 Sep 2008
Posts: 39
Location: 34190

PostPosted: Wed Oct 22, 2008 6:00 am    Post subject: Reply with quote

Bjr,

Il y a une petite coquille au niveau du mkisofs, il manque un espace entre '4' et '-boot-info-table'

Il faut lire :

mkisofs -J -R -l -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -z -iso-level 4 -c livecd -o $livecd_output $livecd_target/

D'où le
Quote:
genisoimage: Boot image load size invalid.


Donc le .iso est généré.
J'ai emergé grub dans gentoolive et mis en commentaire :
Quote:
#chroot "$livecd_source" emerge grub #va telecharger les fichiers necessaires

Non seulement gain de temps, mais l'emerge recréait le lien grub.conf et menu.lst --> blocage au boot sur prompt GRUB>

Donc boot correct, copie un peu longue dans tmpfs, mais OK !!!

Bien sûr je ne peux pas démarrer startx, création de fichiers temporaires impossible sur le CD, quel âne je fais !

Je vais intégrer unionfs dans gentoolive ou faire un fs en mémoire...

Ben, MERCI booleetbil, ce tuto est SUPER :!:
Sauf que c'est pas juste, moi qui croyais avoir trouvé un job pour mes soirées d'hivers... c'est largement compromis !

Bon j'ai quand même encore de quoi gratter pour ""tout"" comprendre :D
Back to top
View user's profile Send private message
bouleetbil
Guru
Guru


Joined: 06 Jul 2004
Posts: 456
Location: Montpellier

PostPosted: Wed Oct 22, 2008 6:06 pm    Post subject: Reply with quote

Salut,
cool si sa marche encore et bravo :lol:
_________________
L'homme n'est pas fait pour travailler ça le fatigue.
LiveCD Gentoo : http://www.frogdev.info
Gentoo/Freebsd : http://www.frogdev.info/gentoo_freebsd.php
Back to top
View user's profile Send private message
tux_i
n00b
n00b


Joined: 11 Jul 2010
Posts: 23

PostPosted: Thu Feb 24, 2011 3:13 pm    Post subject: Reply with quote

bonjour,

Est-ce que cette méthode fonctionne toujours ?

il y a une étape que je ne comprend pas

j'ai actuellement ma distrib gentoo sur mon disque dur. Pour la passer en Live il faut que je la recopie dans /mnt/gentoolive ?

merci
_________________
my music project http://linon-project.bandcamp.com/
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum