slitaz-tools annotate installer/slitaz-installer @ rev 75

Corrected typo in slitaz-installer
author Julien Rabier <julien.rabier@gmail.com>
date Wed Feb 27 01:24:04 2008 +0100 (2008-02-27)
parents 8d24e280df36
children d3bda4c7b851
rev   line source
pankso@70 1 #!/bin/sh
pankso@70 2 # slitaz-installer - SliTaz GNU/Linux installer.
pankso@70 3 #
pankso@70 4 # So this is SliTaz installer using dialog boxes. All the comments are in
pankso@70 5 # English but displayed messages are in French. The scrip starts with a
pankso@70 6 # few main variables, then all the functions and then a sequece of functions.
pankso@70 7 #
pankso@70 8 # (C) 2007-2008 SliTaz - GNU General Public License v3.
pankso@70 9 #
pankso@70 10 # Author : Christophe Lincoln <pankso@slitaz.org>
pankso@70 11 #
pankso@70 12 VERSION=1.0
pankso@70 13 : ${DIALOG=dialog}
pankso@70 14
pankso@70 15 # Installer actions can be specified on cmdline (install or upgrade).
pankso@70 16 if [ -n "$1" ]; then
pankso@70 17 ACTION=$1
pankso@70 18 else
pankso@70 19 ACTION=install
pankso@70 20 fi
pankso@70 21
pankso@70 22 # We need to know cdrom device and kernel version string to copy files.
pankso@70 23 DRIVE_NAME=`cat /proc/sys/dev/cdrom/info | grep "drive name" | cut -f 3`
pankso@70 24 CDROM=/dev/$DRIVE_NAME
pankso@70 25 KERNEL=vmlinuz-`uname -r`
pankso@70 26 TARGET_ROOT=/mnt/target
pankso@70 27 LOG=/var/log/slitaz-installer.log
pankso@70 28 BACKLIST="SliTaz GNU/Linux installer"
pankso@70 29
pankso@70 30 # start_install messages (to translate)
pankso@70 31 START_INSTALL_MSG="\n
pankso@70 32 Bienvenue dans l'installateur de SliTaz GNU/Linux. Vous pouvez utiliser \
pankso@70 33 les flèches du clavier et la touche ENTER ou la souris pour valider. Il vous \
julien@75 34 suffira de répondre à quelques questions lors des différentes étapes \
pankso@70 35 d'installation. L'installateur va commencer par monter le cdrom, vous \
julien@75 36 demander la partition à utiliser comme racine du système et vous proposer \
pankso@70 37 de la formater. Ensuite il va copier les fichiers depuis le cdrom, les \
pankso@70 38 décompresser, les installer et va préconfigurer le système. Pour finir,
pankso@70 39 vous aurez aussi la possibilité d'installer le gestionnaire de démarrage
pankso@70 40 GRUB, si besoin est.\n\n
pankso@70 41 \Z2Commencer l'installation ?\Zn"
pankso@70 42
pankso@70 43 #######################
pankso@70 44 # Installer functions #
pankso@70 45 #######################
pankso@70 46
pankso@70 47 # Display error message.
pankso@70 48 error_message()
pankso@70 49 {
pankso@70 50 $DIALOG --title " Erreur " \
pankso@70 51 --colors --backtitle "$BACKLIST" \
pankso@70 52 --clear --msgbox "\n$ERROR_MSG" 18 70
pankso@70 53 }
pankso@70 54
pankso@70 55 # Exit install if user is not root.
pankso@70 56 check_root()
pankso@70 57 {
pankso@70 58 if test $(id -u) != 0 ; then
pankso@70 59 ERROR_MSG="\
pankso@70 60 [\Z6fr\Zn] Vous devez être root pour installer SLiTaz GNU/Linux. Vous pouvez \
pankso@70 61 utiliser 'su' suivi du mot de passe administrateur pour devenir root \
pankso@70 62 et relancer l'installation.\n\n
pankso@70 63 [\Z6en\Zn] You must be root administrator to start SliTaz installer, please \
pankso@70 64 use 'su' to get a root SHell and restart installation."
pankso@70 65 error_message
pankso@70 66 exit 0
pankso@70 67 fi
pankso@70 68 }
pankso@70 69
pankso@70 70 # This function is used after each screen to contine or abort install.
pankso@70 71 check_retval()
pankso@70 72 {
pankso@70 73 case $retval in
pankso@70 74 0)
pankso@70 75 continue ;;
pankso@70 76 1)
pankso@70 77 echo -e "\nArrêt volontaire.\n" && exit 0 ;;
pankso@70 78 3)
pankso@70 79 continue ;;
pankso@70 80 255)
pankso@70 81 echo -e "ESC pressed.\n" && exit 0 ;;
pankso@70 82 esac
pankso@70 83 }
pankso@70 84
pankso@70 85 # Start install with basic informations.
pankso@70 86 start_install()
pankso@70 87 {
pankso@70 88 $DIALOG --title " Débuter l'installation " \
pankso@70 89 --backtitle "$BACKLIST" \
pankso@70 90 --clear --colors --yesno "$START_INSTALL_MSG" 18 70
pankso@70 91 retval=$?
pankso@70 92 check_retval
pankso@70 93 echo "start_infos: `date`" > $LOG
pankso@70 94 }
pankso@70 95
pankso@70 96 # Mount cdrom and verify if it's realy SliTaz CD.
pankso@70 97 mount_cdrom()
pankso@70 98 {
pankso@70 99 ERROR_MSG=""
pankso@70 100 umount /media/cdrom 2>/dev/null
pankso@70 101 (
pankso@70 102 echo "XXX" && echo 30
pankso@70 103 echo -e "\nCréation du point de montage (/media/cdrom)..."
pankso@70 104 echo "XXX"
pankso@70 105 mkdir -p /media/cdrom
pankso@70 106 sleep 1
pankso@70 107 echo "XXX" && echo 60
pankso@70 108 echo -e "\nMontage du cdrom ($CDROM)..."
pankso@70 109 echo "XXX"
pankso@70 110 mount -t iso9660 $CDROM /media/cdrom 2>>$LOG
pankso@70 111 echo "XXX" && echo 90
pankso@70 112 echo -e "\nVérification du media d'installation..."
pankso@70 113 echo "XXX"
pankso@70 114 sleep 2
pankso@70 115 ) |
pankso@70 116 $DIALOG --title " Montage du cdrom " \
pankso@70 117 --backtitle "$BACKLIST" \
pankso@70 118 --gauge "Préparation du media d'installation..." 18 70 0
pankso@70 119 # Exit with error msg if no rootfs.gz found
pankso@70 120 if [ ! -f /media/cdrom/boot/rootfs.gz ]; then
pankso@70 121 ERROR_MSG="\
pankso@70 122 Impossible de trouver : rootfs.gz\n\n
pankso@70 123 L'archive du système de fichiers racine n'est pas présente sur le cdrom. \
pankso@70 124 Il se peut que cette erreur soit due au fait que le LiveCD de SliTaz ne soit \
pankso@70 125 pas inséré dans le premier lecteur CD/DVD et que le media n'as pas pu être \
pankso@70 126 correctement monté. Arrêt."
pankso@70 127 error_message
pankso@70 128 echo "missing: /media/cdrom/boot/rootfs.gz" >>$LOG
pankso@70 129 exit 1
pankso@70 130 fi
pankso@70 131 }
pankso@70 132
pankso@70 133 # Display a list of available partition.
pankso@70 134 fdisk_list()
pankso@70 135 {
pankso@70 136 LIST_PARTITIONS=`fdisk -l | grep ^/dev | sed s/'e Win95'/'e'/g`
pankso@70 137 $DIALOG --title " Partitions tables " \
pankso@70 138 --backtitle "$BACKLIST" \
pankso@70 139 --clear --msgbox "\n
pankso@70 140 Liste des partitions disponibles :\n\n
pankso@70 141 $LIST_PARTITIONS" 18 70
pankso@70 142 }
pankso@70 143
pankso@70 144 # We need a partition to install (inputbox).
pankso@70 145 ask_for_target_dev()
pankso@70 146 {
pankso@70 147 exec 3>&1
pankso@70 148 TARGET_DEV=`$DIALOG --title " Partition racine " \
pankso@70 149 --backtitle "$BACKLIST" --clear \
pankso@70 150 --extra-label "List" --extra-button \
pankso@70 151 --colors --inputbox "\n
julien@75 152 Veuillez indiquer la partition à utiliser pour installer SliTaz GNU/Linux, \
pankso@70 153 exemple: '/dev/hda1'. Vous pouvez utiliser le bouton 'List' pour afficher \
pankso@70 154 une liste des partitions disponibles sur le ou les disques durs et revenir \
pankso@70 155 ensuite à cet écran. A noter qu'il faut au minimum 100 Mb pour le coeur du \
pankso@70 156 système et que si vous prévoyez d'installer de nouveaux paquets, vous serez \
pankso@70 157 plus à l'aise avec environ 400 Mb.\n\n
pankso@70 158 \Z2Partition à utiliser:\Zn" 18 70 2>&1 1>&3`
pankso@70 159 retval=$?
pankso@70 160 exec 3>&-
pankso@70 161 check_retval
pankso@70 162 # Display list and comme back.
pankso@70 163 if [ "$retval" = "3" ]; then
pankso@70 164 fdisk_list
pankso@70 165 ask_for_target_dev
pankso@70 166 fi
pankso@70 167 # Empty value.
pankso@70 168 if [ -z $TARGET_DEV ]; then
pankso@70 169 ask_for_target_dev
pankso@70 170 fi
pankso@70 171 # Check if specified device exist in /proc/partitions.
pankso@70 172 DEV_NAME=${TARGET_DEV#/dev/}
pankso@70 173 if cat /proc/partitions | grep -q $DEV_NAME; then
pankso@70 174 echo "ask_for_target_dev: $TARGET_DEV" >>$LOG
pankso@70 175 else
pankso@70 176 ERROR_MSG="La partition \Z2$TARGET_DEV\Zn ne semble pas exister."
pankso@70 177 error_message
pankso@70 178 ask_for_target_dev
pankso@70 179 fi
pankso@70 180 }
pankso@70 181
pankso@70 182 # Mkfs if needed/wanted.
pankso@70 183 ask_for_mkfs_target_dev()
pankso@70 184 {
pankso@70 185 $DIALOG --title " Formater " \
pankso@70 186 --backtitle "$BACKLIST" \
pankso@70 187 --clear --colors --yesno "\n
pankso@70 188 SliTaz va être installé sur la partition : $TARGET_DEV\n\n
pankso@70 189 Vous avez la possibilité de formater la partition en ext3 ou d'utiliser \
pankso@70 190 le système de fichiers déjà présent sur la partition. Le format ext3 est \
julien@75 191 un système de fichiers propre à Linux, robuste, stable et jounalisé, c'est \
pankso@70 192 le format conseillé. Faites attention, si vous formatez toutes les données \
julien@75 193 de cette partition seront définitivement détruites. Si vous conservez le \
julien@75 194 système de fichiers actuel, la partition sera nettoyée et les données
pankso@70 195 utilisateurs conservées (/home).\n\n
pankso@70 196 \Z2Faut t'il formater la partition en ext3 ?\Zn" 18 70
pankso@70 197 retval=$?
pankso@70 198 case $retval in
pankso@70 199 0)
pankso@70 200 MKFS_TARGET_DEV="ext3"
pankso@70 201 echo "mkfs_target_dev: ext3" >>$LOG ;;
pankso@70 202 1)
pankso@70 203 CLEAN="clean"
pankso@70 204 echo "mkfs_target_dev: clean" >>$LOG ;;
pankso@70 205 255)
pankso@70 206 echo -e "ESC pressed.\n" && exit 0 ;;
pankso@70 207 esac
pankso@70 208
pankso@70 209 }
pankso@70 210
pankso@70 211 # Mount and mkfs with progress.
pankso@70 212 prepare_target_dev()
pankso@70 213 {
pankso@70 214 (
pankso@70 215 echo "XXX" && echo 30
pankso@70 216 echo -e "\nPréparation de la partition cible..."
pankso@70 217 echo "XXX"
pankso@70 218 # Mount point can be already used.
pankso@70 219 if mount | grep -q $TARGET_ROOT; then
pankso@70 220 umount $TARGET_ROOT 2>$LOG
pankso@70 221 fi
pankso@70 222 sleep 2
pankso@70 223
pankso@70 224 if [ "$MKFS_TARGET_DEV" == "ext3" ]; then
pankso@70 225 echo "XXX" && echo 60
pankso@70 226 echo -e "\nExécution de mkfs.ext3 sur $TARGET_DEV"
pankso@70 227 echo "XXX"
pankso@70 228 mkfs.ext3 $TARGET_DEV >>$LOG 2>>$LOG
pankso@70 229 else
pankso@70 230 echo "XXX" && echo 60
pankso@70 231 echo -e "\nLa partition ($TARGET_DEV) sera nettoyée..."
pankso@70 232 echo "XXX"
pankso@70 233 sleep 2
pankso@70 234 fi
pankso@70 235
pankso@70 236 echo "XXX" && echo 90
pankso@70 237 echo -e "\nCréation du point de montage: $TARGET_ROOT"
pankso@70 238 echo "XXX"
pankso@70 239 mkdir -p $TARGET_ROOT
pankso@70 240 sleep 2
pankso@70 241
pankso@70 242 ) |
pankso@70 243 $DIALOG --title " Préparation de la cible " \
pankso@70 244 --backtitle "$BACKLIST" \
pankso@70 245 --gauge "Target in preparation..." 18 70 0
pankso@70 246 # Mount target
pankso@70 247 mount $TARGET_DEV $TARGET_ROOT >>$LOG 2>>$LOG
pankso@70 248 }
pankso@70 249
pankso@70 250 # Ask for hostanme before installing files.
pankso@70 251 ask_for_hostname()
pankso@70 252 {
pankso@70 253 exec 3>&1
pankso@70 254 HOSTNAME=`$DIALOG --title " Hostname " \
pankso@70 255 --backtitle "$BACKLIST" --clear \
pankso@70 256 --colors --inputbox "\n
julien@75 257 Veuillez indiquer le nom de machine à utiliser pour votre système SliTaz.\
pankso@70 258 Le nom de machine ou 'hostname' est utilisé pour identifier votre machine sur
julien@75 259 le réseau et en local par le système (defaut: slitaz). A noter que cette\
pankso@70 260 valeur peut aussi être modifiée une fois le système installé en utilisant
julien@75 261 'netbox' graphiquement ou en ligne de commande.\n\n
pankso@70 262 \Z2Nom de machine:\Zn" 18 70 2>&1 1>&3`
pankso@70 263 retval=$?
pankso@70 264 exec 3>&-
pankso@70 265 check_retval
pankso@70 266 # Empty value.
pankso@70 267 if [ -z $HOSTNAME ]; then
pankso@70 268 HOSTNAME="slitaz"
pankso@70 269 fi
pankso@70 270 }
pankso@70 271
pankso@70 272 # Get a clean target device (15%).
pankso@70 273 clean_target()
pankso@70 274 {
pankso@70 275 if [ "$CLEAN" == "clean" ]; then
pankso@70 276 echo "XXX" && echo 15
pankso@70 277 echo -e "\nNettoyage de la partition racine ($TARGET_DEV)..."
pankso@70 278 echo "XXX"
pankso@70 279 cd $TARGET_ROOT
pankso@70 280 # Keep /home in case of reinstall.
pankso@70 281 for dir in *
pankso@70 282 do
pankso@70 283 case "$dir" in
pankso@70 284 home)
pankso@70 285 mv home home.bak
pankso@70 286 echo "keeping /home found on: $TARGET_DEV" >>$LOG ;;
pankso@70 287 lost+found)
pankso@70 288 break ;;
pankso@70 289 *)
pankso@70 290 rm -rf $dir 2>$LOG ;;
pankso@70 291 esac
pankso@70 292 done
pankso@70 293 if [ -d $TARGET_ROOT/mklost+found ]; then
pankso@70 294 mklost+found 2>>$LOG
pankso@70 295 fi
pankso@70 296 fi
pankso@70 297 sleep 2
pankso@70 298 }
pankso@70 299
pankso@70 300 # Kernel is rename to standard vmlinuz-$VERSION.
pankso@70 301 install_kernel()
pankso@70 302 {
pankso@70 303 mkdir -p $TARGET_ROOT/boot
pankso@70 304 cp /media/cdrom/boot/bzImage $TARGET_ROOT/boot/$KERNEL
pankso@70 305 echo "install_kernel: $KERNEL" >>$LOG
pankso@70 306 sleep 2
pankso@70 307 }
pankso@70 308
pankso@70 309 # Copy isolinux r/w files (not syslinux, some files are read only).
pankso@70 310 copy_bootloaders()
pankso@70 311 {
pankso@70 312 if [ -d "/media/cdrom/boot/isolinux" ]; then
pankso@70 313 mkdir -p $TARGET_ROOT/boot/isolinux
pankso@70 314 cp -a /media/cdrom/boot/isolinux/*.cfg $TARGET_ROOT/boot/isolinux
pankso@70 315 cp -a /media/cdrom/boot/isolinux/*.kbd $TARGET_ROOT/boot/isolinux
pankso@70 316 cp -a /media/cdrom/boot/isolinux/*.txt $TARGET_ROOT/boot/isolinux
pankso@70 317 cp -a /media/cdrom/boot/isolinux/*.bin $TARGET_ROOT/boot/isolinux
pankso@70 318 cp -a /media/cdrom/boot/isolinux/*.msg $TARGET_ROOT/boot/isolinux
pankso@70 319 cp -a /media/cdrom/boot/isolinux/*.lss $TARGET_ROOT/boot/isolinux
pankso@70 320 cp -a /media/cdrom/boot/isolinux/*.c32 $TARGET_ROOT/boot/isolinux
pankso@70 321 fi
pankso@70 322 }
pankso@70 323
pankso@70 324 # Extract lzma'ed or gziped rootfs.
pankso@70 325 extract_rootfs()
pankso@70 326 {
pankso@70 327 cd $TARGET_ROOT
pascal@71 328 (zcat rootfs.gz 2>/dev/null || lzma d rootfs.gz -so 2>/dev/null || \
pascal@71 329 cat rootfs.gz) 2>>$LOG | cpio -id 2>>$LOG
pascal@71 330 rm -f rootfs.gz
pascal@71 331 # remove link to cdrom
pascal@71 332 [ -d cdrom ] && rmdir cdrom
pascal@71 333 if [ -L usr ]; then
pascal@71 334 rm usr
pascal@71 335 cp -a /media/cdrom/usr .
pascal@71 336 fi
pascal@71 337 # unpack /usr
pascal@71 338 sqfs="/media/cdrom/usr.sqfs"
pascal@71 339 [ -f $sqfs ] || sqfs=".usr.sqfs"
pascal@71 340 if [ -f $sqfs ]; then
pascal@71 341 rmdir usr
pascal@71 342 sbin/unsquashfs -d usr $sqfs
pascal@71 343 [ "$sqfs" = ".usr.sqfs" ] && rm -f $sqfs
pascal@71 344 fi
pascal@71 345 if [ -d usr/.moved ]; then
pascal@71 346 ( cd usr/.moved ; find * -print ) | \
pascal@71 347 while read file; do
pascal@71 348 [ -L "$file" ] || continue
pascal@71 349 rm -f "$file"
pascal@71 350 mv "usr/.moved/$file" "$file"
pascal@71 351 done
pascal@71 352 rm -rf usr/.moved
pascal@71 353 fi
pankso@70 354 }
pankso@70 355
pankso@70 356 # /etc/skel (60%)
pankso@70 357 gen_etc_skel()
pankso@70 358 {
pankso@70 359 #Maybe we don't have /home/hacker directory
pankso@70 360 if [ -d $TARGET_ROOT/home/hacker ]; then
pankso@70 361 echo "XXX" && echo 60
pankso@70 362 echo -e "\nCopie des fichiers utilisateurs par défaut (/etc/skel)..."
pankso@70 363 echo "XXX"
pankso@70 364 cp -a $TARGET_ROOT/home/hacker $TARGET_ROOT/etc/skel
pankso@70 365 else
pankso@70 366 echo "XXX" && echo 60
pankso@70 367 echo -e "\nCréation du répertoire (/etc/skel)..."
pankso@70 368 echo "XXX"
pankso@70 369 mkdir -p $TARGET_ROOT/etc/skel \
pankso@70 370 $TARGET_ROOT/etc/Documents \
pankso@70 371 $TARGET_ROOT/etc/skel/Images \
pankso@70 372 $TARGET_ROOT/etc/skel/.local/bin \
pankso@70 373 $TARGET_ROOT/etc/skel/.local/share
pankso@70 374 fi
pankso@70 375 sleep 2
pankso@70 376 }
pankso@70 377
pankso@70 378 # Pre configure freshly installed system (70 - 90%).
pankso@70 379 pre_config_system()
pankso@70 380 {
pankso@70 381 cd $TARGET_ROOT
pankso@70 382 # Restore backup of existing /home if exist.
pankso@70 383 # (created by prepare_target_dev)
pankso@70 384 if [ -d home.bak ]; then
pankso@70 385 echo "XXX" && echo 75
julien@75 386 echo -e "\nRestauration du répertoire /home..."
pankso@70 387 echo "XXX"
pankso@70 388 rm -rf home
pankso@70 389 mv home.bak home
pankso@70 390 sleep 2
pankso@70 391 fi
pankso@70 392 # Add root device to CHECK_FS in rcS.conf to check filesystem
pankso@70 393 # on each boot.
pankso@70 394 echo "XXX" && echo 80
pankso@70 395 echo -e "\nAjout de $TARGET_DEV à CHECK_FS du fichier /etc/rcS.conf..."
pankso@70 396 echo "XXX"
pankso@70 397 sed -i s#'CHECK_FS=\"\"'#"CHECK_FS=\"$TARGET_DEV\""# etc/rcS.conf
pankso@70 398 sleep 2
pankso@70 399 # Set hostname.
pankso@70 400 echo "XXX" && echo 85
pankso@70 401 echo -e "\nConfiguration du nom de machine: $HOSTNAME"
pankso@70 402 echo "XXX"
pankso@70 403 echo $HOSTNAME > etc/hostname
pankso@70 404 sleep 2
pankso@70 405 }
pankso@70 406
pankso@70 407 # Determin GRUB partition number and GRUB disk number.
pankso@70 408 grub_config()
pankso@70 409 {
pankso@70 410 DISK_LETTER=${TARGET_DEV#/dev/[h-s]d}
pankso@70 411 DISK_LETTER=${DISK_LETTER%[0-9]}
pankso@70 412 GRUB_PARTITION=$((${TARGET_DEV#/dev/[h-s]d[a-z]}-1))
pankso@70 413 for disk in a b c d e f g h
pankso@70 414 do
pankso@70 415 nb=$(($nb+1))
pankso@70 416 if [ "$disk" = "$DISK_LETTER" ]; then
pankso@70 417 GRUB_DISK=$(($nb-1))
pankso@70 418 break
pankso@70 419 fi
pankso@70 420 done
pankso@70 421 GRUB_ROOT="(hd${GRUB_DISK},${GRUB_PARTITION})"
pankso@70 422 # Creat the target GRUB configuration.
pankso@70 423 mkdir -p $TARGET_ROOT/boot/grub
pankso@70 424 cat > $TARGET_ROOT/boot/grub/menu.lst << _EOF_
pankso@70 425 # /boot/grub/menu.lst: GRUB boot loader configuration.
pankso@70 426 #
pankso@70 427
pankso@70 428 # By default, boot the first entry.
pankso@70 429 default 0
pankso@70 430
pankso@70 431 # Boot automatically after 8 secs.
pankso@70 432 timeout 8
pankso@70 433
pankso@70 434 # Change the colors.
pankso@70 435 color yellow/brown light-green/black
pankso@70 436
pankso@70 437 # For booting SliTaz from : $TARGET_DEV
pankso@70 438 #
pankso@70 439 title SliTaz GNU/Linux (cooking) (Kernel $KERNEL)
pankso@70 440 root $GRUB_ROOT
pankso@70 441 kernel /boot/$KERNEL root=$TARGET_DEV
pankso@70 442
pankso@70 443 _EOF_
pankso@70 444 # log
pankso@70 445 echo "grub_config: $TARGET_ROOT/boot/grub/menu.lst" >>$LOG
pankso@70 446 sleep 2
pankso@70 447 }
pankso@70 448
pankso@70 449 # Files install with gauge, calling for functions or with cmds.
pankso@70 450 install_files()
pankso@70 451 {
pankso@70 452 (
pankso@70 453
pankso@70 454 echo "XXX" && echo 10
pankso@70 455 echo -e "\nNettoyage de la partition racine si nécessaire..."
pankso@70 456 echo "XXX"
pankso@70 457 clean_target
pankso@70 458
pankso@70 459 echo "XXX" && echo 20
julien@75 460 echo -e "\nInstallation du noyau ($KERNEL)..."
pankso@70 461 echo "XXX"
pankso@70 462 install_kernel
pankso@70 463
pankso@70 464 echo "XXX" && echo 30
pankso@70 465 echo -e "\nCopie des bootloaders syslinux/isolinux..."
pankso@70 466 echo "XXX"
pankso@70 467 copy_bootloaders
pankso@70 468
pankso@70 469 echo "XXX" && echo 40
pankso@70 470 echo -e "\nCopie du système compressé (rootfs.gz)..."
pankso@70 471 echo "XXX"
pankso@70 472 cp /media/cdrom/boot/rootfs.gz $TARGET_ROOT
pankso@70 473 sleep 2
pankso@70 474
pankso@70 475 echo "XXX" && echo 50
pankso@70 476 echo -e "\nExtraction du système racine..."
pankso@70 477 echo "XXX"
pankso@70 478 extract_rootfs
pankso@70 479
pankso@70 480 echo "XXX" && echo 60
pankso@70 481 echo -e "\nCopie des fichiers utilisateurs par défaut (/etc/skel)..."
pankso@70 482 echo "XXX"
pankso@70 483 gen_etc_skel
pankso@70 484 sleep 2
pankso@70 485
pankso@70 486 echo "XXX" && echo 70
pankso@70 487 echo -e "\nPreconfiguration du système..."
pankso@70 488 echo "XXX"
pankso@70 489 pre_config_system
pankso@70 490
pankso@70 491 echo "XXX" && echo 90
pankso@70 492 echo -e "\nCréation du fichier de configuration de GRUB (menu.lst)..."
pankso@70 493 echo "XXX"
pankso@70 494 grub_config
pankso@70 495
pankso@70 496 echo "XXX" && echo 100
pankso@70 497 echo -e "\nFin de l'installation des fichiers..."
pankso@70 498 echo "XXX"
pankso@70 499 echo "install_files: OK" >>$LOG
pankso@70 500 sleep 4
pankso@70 501
pankso@70 502 ) |
pankso@70 503 $DIALOG --title " Installation des fichiers " \
pankso@70 504 --backtitle "$BACKLIST" \
pankso@70 505 --gauge "Starting to install files..." 18 70 0
pankso@70 506 }
pankso@70 507
pankso@70 508 # GRUB info with disk name used for grub-install
pankso@70 509 grub_install()
pankso@70 510 {
pankso@70 511 TARGET_DISK=`echo $TARGET_DEV | sed s/"[0-9]"/''/`
pankso@70 512 $DIALOG --title " GRUB install " \
pankso@70 513 --backtitle "$BACKLIST" \
pankso@70 514 --clear --colors --yesno "\n
pankso@70 515 Avant de redémarrer sur votre nouveau système SliTaz GNU/Linux, veuillez \
pankso@70 516 vous assurer qu'un gestionnaire de démarrage est bien installé. Si ce n'est \
pankso@70 517 pas le cas vous pouvez répondre oui et installer GRUB. Si vous n'installez \
julien@75 518 pas GRUB, un fichier de configuration (menu.lst) a été généré pendant \
pankso@70 519 l'installation, il contient les lignes qui permettent de démarrer SliTaz.\n\n
pankso@70 520 Une fois installé, GRUB peut facilement être reconfiguré et propose un SHell \
pankso@70 521 interactif au boot.\n\n
pankso@70 522 \Z2Faut t'il installer GRUB sur: $TARGET_DISK ?\Zn" 18 70
pankso@70 523 retval=$?
pankso@70 524 case $retval in
pankso@70 525 0)
pankso@70 526 (
pankso@70 527 echo "XXX" && echo 50
pankso@70 528 echo -e "\nExécution de grub-install sur : $TARGET_DISK..."
pankso@70 529 echo "XXX"
pankso@70 530 grub-install --no-floppy \
pankso@70 531 --root-directory=$TARGET_ROOT $TARGET_DISK 2>>$LOG
pankso@70 532 echo "XXX" && echo 100
pankso@70 533 echo -e "\nFin de l'installation..."
pankso@70 534 echo "XXX"
pankso@70 535 sleep 2
pankso@70 536 ) |
pankso@70 537 $DIALOG --title " GRUB install " \
pankso@70 538 --backtitle "$BACKLIST" \
pankso@70 539 --gauge "Installation de GRUB..." 18 70 0 ;;
pankso@70 540 1)
pankso@70 541 echo "grub_install: NO" >>$LOG ;;
pankso@70 542 255)
pankso@70 543 echo -e "ESC pressed.\n" && exit 0 ;;
pankso@70 544 esac
pankso@70 545 }
pankso@70 546
pankso@70 547 # Copy log file, umount target and eject cdrom
pankso@70 548 umount_devices()
pankso@70 549 {
pankso@70 550 (
pankso@70 551 echo "XXX" && echo 25
pankso@70 552 echo -e "\nCopie du fichier de log ($LOG)..."
pankso@70 553 echo "XXX"
pankso@70 554 cp -a $LOG $TARGET_ROOT/var/log
pankso@70 555 sleep 2
pankso@70 556 echo "XXX" && echo 50
pankso@70 557 echo -e "\nDémontage de la cible ($TARGET_DEV)..."
pankso@70 558 echo "XXX"
pankso@70 559 if mount | grep -q $TARGET_ROOT; then
pankso@70 560 umount $TARGET_ROOT 2>/dev/null
pankso@70 561 fi
pankso@70 562 echo "XXX" && echo 75
pankso@70 563 echo -e "\nDémontage et éjection du cdrom..."
pankso@70 564 echo "XXX"
pankso@70 565 if mount | grep -q /media/cdrom; then
pankso@70 566 umount /media/cdrom
pankso@70 567 eject
pankso@70 568 fi
pankso@70 569 sleep 2
pankso@70 570 echo "XXX" && echo 100
pankso@70 571 echo -e "\n$TITLE..."
pankso@70 572 echo "XXX"
pankso@70 573 sleep 2
pankso@70 574 ) |
pankso@70 575 $DIALOG --title " $TITLE " \
pankso@70 576 --backtitle "$BACKLIST" \
pankso@70 577 --gauge "$TITLE starting..." 18 70 0
pankso@70 578 }
pankso@70 579
pankso@70 580 # End of installation
pankso@70 581 end_of_install()
pankso@70 582 {
pankso@70 583 echo "end_of_install: `date`" >>$LOG
pankso@70 584 $DIALOG --title " Installation terminée " \
pankso@70 585 --backtitle "$BACKLIST" \
pankso@70 586 --yes-label "Exit" \
pankso@70 587 --no-label "Reboot" \
pankso@70 588 --clear --colors --yesno "\n
pankso@70 589 L'installation est terminée. Vous pouvez dès maintenant redémarrer (reboot) \
pankso@70 590 sur votre nouveau système SliTaz GNU/Linux et commencer à finement le \
pankso@70 591 configurer en fonction de vos besoins et préférences. Vous trouverez de l'aide \
pankso@70 592 ou un support technique gratuit via la liste de discussion et/ou le forum \
pankso@70 593 officiel du projet. Pour bien commencer à utiliser le système, vous pouvez \
pankso@70 594 vous référer aux documents du Handbook de SliTaz et utiliser le gestionnaire \
pankso@70 595 de paquets Tazpkg pour installer de nouveaux logiciels prêts à savourer." 18 70
pankso@70 596 retval=$?
pankso@70 597 case $retval in
pankso@70 598 0)
pankso@70 599 TITLE="Exiting"
pankso@70 600 umount_devices ;;
pankso@70 601 1)
pankso@70 602 TITLE="Rebooting"
pankso@70 603 umount_devices
pankso@70 604 reboot || reboot -f ;;
pankso@70 605 255)
pankso@70 606 echo -e "ESC pressed.\n" && exit 0 ;;
pankso@70 607 esac
pankso@70 608 }
pankso@70 609
pankso@70 610 #####################
pankso@70 611 # Upgrade functions #
pankso@70 612 #####################
pankso@70 613
pankso@70 614 # Start upgrade with basic informations (TODO).
pankso@70 615 start_upgrade()
pankso@70 616 {
pankso@70 617 $DIALOG --title " Mise à jour du système " \
pankso@70 618 --backtitle "$BACKLIST" \
pankso@70 619 --clear --colors --yesno "\n
pankso@70 620 La fonction de mise à jour complète du système n'est pas encore implémentée.
pankso@70 621 \n\n
pankso@70 622 * Montage de la partition.\n
pankso@70 623 * Sauvegarde des fichiers de configuration.\n
pankso@70 624 * Créer un diff entre les paquets du cdrom et ceux installés.\n
pankso@70 625 * Nettoyer la partition.\n
pankso@70 626 * Installer la version du cdrom.\n
pankso@70 627 * Restauration des fichiers de config.\n
pankso@70 628 * Réinstaller les paquets manquants depuis le miroir." 18 70
pankso@70 629 retval=$?
pankso@70 630 #check_retval
pankso@70 631 #echo "start_upgarde: `date`" > $LOG
pankso@70 632 exit 0
pankso@70 633 }
pankso@70 634
pankso@70 635 ######################
pankso@70 636 # Installer sequence #
pankso@70 637 ######################
pankso@70 638
pankso@70 639 case $ACTION in
pankso@70 640 upgrade)
pankso@70 641 check_root
pankso@70 642 start_upgrade
pankso@70 643 #mount_cdrom
pankso@70 644 ;;
pankso@70 645 install|*)
pankso@70 646 check_root
pankso@70 647 start_install
pankso@70 648 mount_cdrom
pankso@70 649 ask_for_target_dev
pankso@70 650 ask_for_mkfs_target_dev
pankso@70 651 prepare_target_dev
pankso@70 652 ask_for_hostname
pankso@70 653 install_files
pankso@70 654 grub_install
pankso@70 655 end_of_install
pankso@70 656 ;;
pankso@70 657 esac
pankso@70 658
pankso@70 659 exit 0