slitaz-tools view installer/slitaz-installer @ rev 252

Fix spelling, typos, wording, etc.
author Mike D. Smith <MikeDSmith25@gmail.com>
date Sat Jul 19 06:35:45 2008 +0000 (2008-07-19)
parents f46de7c34838
children c417a449e34c
line source
1 #!/bin/sh
2 # slitaz-installer - SliTaz GNU/Linux installer.
3 #
4 # So this is SliTaz installer using dialog boxes. All the comments are in
5 # English but displayed messages are in French. The script starts with a
6 # few main variables, then all the functions and then a sequence of functions.
7 #
8 # (C) 2007-2008 SliTaz - GNU General Public License v3.
9 #
10 # Author : Christophe Lincoln <pankso@slitaz.org>
11 #
12 VERSION=1.0
14 if [ "$1" = "gui" ]; then
15 : ${DIALOG=tazdialog}
16 else
17 : ${DIALOG=dialog}
18 fi
20 # Installer actions can be specified on cmdline (install or upgrade).
21 if [ "$1" = "upgrade" ]; then
22 ACTION=$1
23 else
24 ACTION=install
25 fi
27 # We need to know cdrom device and kernel version string to copy files.
28 DRIVE_NAME=`cat /proc/sys/dev/cdrom/info | grep "drive name" | cut -f 3`
29 CDROM=/dev/$DRIVE_NAME
30 KERNEL=vmlinuz-`uname -r`
31 TARGET_ROOT=/mnt/target
32 LOG=/var/log/slitaz-installer.log
33 BACKLIST="SliTaz GNU/Linux installer"
35 #######################
36 # Installer functions #
37 #######################
39 # Messages language setting
40 set_messages()
41 {
42 if echo $LANG | grep fr; then
43 . /usr/share/slitaz-tools/installer/fr.msg
44 else
45 . /usr/share/slitaz-tools/installer/en.msg
46 fi
47 }
49 # Display error message.
50 error_message()
51 {
52 $DIALOG --title " Error " \
53 --colors --backtitle "$BACKLIST" \
54 --clear --msgbox "\n$ERROR_MSG" 18 70
55 }
57 # Exit install if user is not root.
58 check_root()
59 {
60 if test $(id -u) != 0 ; then
61 ERROR_MSG="\
62 [\Z6en\Zn] You must be root administrator to start SliTaz installer, please \
63 use 'su' to get a root SHell and restart installation.\n\n
64 [\Z6fr\Zn] Vous devez être root pour installer SLiTaz GNU/Linux. Vous pouvez \
65 utiliser 'su' suivi du mot de passe administrateur pour devenir root \
66 et relancer l'installation."
67 error_message
68 exit 0
69 fi
70 }
72 # This function is used after each screen to contine or abort install.
73 check_retval()
74 {
75 case $retval in
76 0)
77 continue ;;
78 1)
79 echo -e "\nVoluntary exit.\n" && exit 0 ;;
80 3)
81 continue ;;
82 255)
83 echo -e "ESC pressed.\n" && exit 0 ;;
84 esac
85 }
87 # Start install with basic information.
88 start_installer()
89 {
90 $DIALOG --title " Install or Upgrade " \
91 --backtitle "$BACKLIST" \
92 --extra-button --extra-label "Upgrade" \
93 --yes-label "Install" \
94 --no-label "Quit" \
95 --clear --colors --yesno "$START_INSTALL_MSG" 18 70
96 retval=$?
97 case $retval in
98 0)
99 ACTION=install ;;
100 1)
101 echo -e "\nVoluntary exit.\n" && exit 0 ;;
102 3)
103 ACTION=upgrade ;;
104 255)
105 echo -e "ESC pressed.\n" && exit 0 ;;
106 esac
107 echo "start_installer: `date`" > $LOG
108 }
110 # Mount cdrom and verify if it's realy SliTaz CD.
111 mount_cdrom()
112 {
113 ERROR_MSG=""
114 (
115 echo "XXX" && echo 30
116 echo -e "\nCreating mount point (/media/cdrom)..."
117 echo "XXX"
118 mkdir -p /media/cdrom
119 sleep 1
120 echo "XXX" && echo 60
121 echo -e "\nMounting cdrom ($CDROM)..."
122 echo "XXX"
123 mount -t iso9660 $CDROM /media/cdrom 2>>$LOG
124 echo "XXX" && echo 90
125 echo -e "\nChecking installation media..."
126 echo "XXX"
127 sleep 2
128 ) |
129 $DIALOG --title " Mounting cdrom " \
130 --backtitle "$BACKLIST" \
131 --gauge "Preparing the installation media..." 18 70 0
132 # Exit with error msg if no rootfs.gz found
133 if [ ! -f /media/cdrom/boot/rootfs.gz ]; then
134 ERROR_MSG="$MOUNT_CDROM_ERROR_MSG"
135 error_message
136 echo "missing: /media/cdrom/boot/rootfs.gz" >>$LOG
137 exit 1
138 fi
139 }
141 # Display a list of available partitions.
142 fdisk_list()
143 {
144 LIST_PARTITIONS=`fdisk -l | grep ^/dev | sed s/'e Win95'/'e'/g`
145 $DIALOG --title " Partition tables " \
146 --backtitle "$BACKLIST" \
147 --clear --msgbox "\n
148 Available partitions :\n\n
149 $LIST_PARTITIONS" 18 70
150 }
152 # We need a partition to install to (inputbox).
153 ask_for_target_dev()
154 {
155 exec 3>&1
156 TARGET_DEV=`$DIALOG --title " Partition racine " \
157 --backtitle "$BACKLIST" --clear \
158 --extra-label "List" --extra-button \
159 --colors --inputbox "$ASK_FOR_TARGET_DEV_MSG" 18 70 2>&1 1>&3`
160 retval=$?
161 exec 3>&-
162 check_retval
163 # Display list and come back.
164 if [ "$retval" = "3" ]; then
165 fdisk_list
166 ask_for_target_dev
167 fi
168 # Empty value.
169 if [ -z $TARGET_DEV ]; then
170 ask_for_target_dev
171 fi
172 set_messages
173 # Check if specified device exists in /proc/partitions.
174 DEV_NAME=${TARGET_DEV#/dev/}
175 if cat /proc/partitions | grep -q $DEV_NAME; then
176 echo "ask_for_target_dev: $TARGET_DEV" >>$LOG
177 else
178 ERROR_MSG="Partition \Z2$TARGET_DEV\Zn doesn't exist."
179 error_message
180 ask_for_target_dev
181 fi
182 }
184 # Mkfs if needed/wanted.
185 ask_for_mkfs_target_dev()
186 {
187 $DIALOG --title " Format " \
188 --backtitle "$BACKLIST" \
189 --clear --colors --yesno "$ASK_FOR_MKFS_TARGET_DEV_MSG" 18 70
190 retval=$?
191 case $retval in
192 0)
193 MKFS_TARGET_DEV="ext3"
194 echo "mkfs_target_dev: ext3" >>$LOG ;;
195 1)
196 CLEAN="clean"
197 echo "mkfs_target_dev: clean" >>$LOG ;;
198 255)
199 echo -e "ESC pressed.\n" && exit 0 ;;
200 esac
202 }
204 # Mount and mkfs with progress.
205 prepare_target_dev()
206 {
207 (
208 echo "XXX" && echo 30
209 echo -e "\nPreparing target partition..."
210 echo "XXX"
211 # Mount point can be already used.
212 if mount | grep -q $TARGET_ROOT; then
213 umount $TARGET_ROOT 2>$LOG
214 fi
215 sleep 2
217 if [ "$MKFS_TARGET_DEV" == "ext3" ]; then
218 echo "XXX" && echo 60
219 echo -e "\nExecuting mkfs.ext3 on $TARGET_DEV"
220 echo "XXX"
221 mkfs.ext3 $TARGET_DEV >>$LOG 2>>$LOG
222 else
223 echo "XXX" && echo 60
224 echo -e "\nThe partition ($TARGET_DEV) will be cleaned..."
225 echo "XXX"
226 sleep 2
227 fi
229 echo "XXX" && echo 90
230 echo -e "\nCreating mount point: $TARGET_ROOT"
231 echo "XXX"
232 mkdir -p $TARGET_ROOT
233 sleep 2
235 ) |
236 $DIALOG --title " Préparation de la cible " \
237 --backtitle "$BACKLIST" \
238 --gauge "Target in preparation..." 18 70 0
239 # Mount target
240 mount $TARGET_DEV $TARGET_ROOT >>$LOG 2>>$LOG
241 }
243 # Ask for hostname before installing files.
244 ask_for_hostname()
245 {
246 exec 3>&1
247 HOSTNAME=`$DIALOG --title " Hostname " \
248 --backtitle "$BACKLIST" --clear \
249 --colors --inputbox "$ASK_FOR_HOSTNAME_MSG" 18 70 "slitaz" 2>&1 1>&3`
250 retval=$?
251 exec 3>&-
252 check_retval
253 # Empty value.
254 if [ -z $HOSTNAME ]; then
255 HOSTNAME="slitaz"
256 fi
257 }
259 # Get a clean target device (15%).
260 clean_target()
261 {
262 if [ "$CLEAN" == "clean" ]; then
263 echo "XXX" && echo 15
264 echo -e "\nNettoyage de la partition racine ($TARGET_DEV)..."
265 echo "XXX"
266 # Keep /home in case of reinstall.
267 cd $TARGET_ROOT
268 for dir in *
269 do
270 case "$dir" in
271 home)
272 mv $TARGET_ROOT/home $TARGET_ROOT/home.bak
273 echo "keeping /home found on: $TARGET_DEV" >>$LOG ;;
274 lost+found)
275 continue ;;
276 *)
277 echo "removing target: $dir" >>$LOG
278 rm -rf $dir 2>>$LOG ;;
279 esac
280 done
281 if [ -d $TARGET_ROOT/mklost+found ]; then
282 mklost+found 2>>$LOG
283 fi
284 fi
285 sleep 2
286 }
288 # Kernel is renamed to standard vmlinuz-$VERSION.
289 install_kernel()
290 {
291 mkdir -p $TARGET_ROOT/boot
292 cp /media/cdrom/boot/bzImage $TARGET_ROOT/boot/$KERNEL
293 echo "install_kernel: $KERNEL" >> $LOG
294 sleep 2
295 }
297 # Copy isolinux r/w files (not syslinux, some files are read only).
298 copy_bootloaders()
299 {
300 if [ -d "/media/cdrom/boot/isolinux" ]; then
301 mkdir -p $TARGET_ROOT/boot/isolinux
302 cp -a /media/cdrom/boot/isolinux/*.cfg $TARGET_ROOT/boot/isolinux
303 cp -a /media/cdrom/boot/isolinux/*.kbd $TARGET_ROOT/boot/isolinux
304 cp -a /media/cdrom/boot/isolinux/*.txt $TARGET_ROOT/boot/isolinux
305 cp -a /media/cdrom/boot/isolinux/*.bin $TARGET_ROOT/boot/isolinux
306 cp -a /media/cdrom/boot/isolinux/*.msg $TARGET_ROOT/boot/isolinux
307 cp -a /media/cdrom/boot/isolinux/*.lss $TARGET_ROOT/boot/isolinux
308 cp -a /media/cdrom/boot/isolinux/*.c32 $TARGET_ROOT/boot/isolinux
309 fi
310 }
312 # Extract lzma'ed or gziped rootfs.
313 extract_rootfs()
314 {
315 cd $TARGET_ROOT
316 (zcat rootfs.gz 2>/dev/null || lzma d rootfs.gz -so || \
317 cat rootfs.gz) 2>>$LOG | cpio -id 2>>$LOG > /dev/null
318 rm -f rootfs.gz
319 # unpack /usr (double check...)
320 if ls etc/tazlito | grep -q ".extract"; then
321 for i in etc/tazlito/*.extract; do
322 [ -f "$i" ] && . $i /media/cdrom
323 done
324 fi
325 }
327 # /etc/skel (60%)
328 gen_etc_skel()
329 {
330 # Maybe we don't have /home/hacker directory
331 if [ -d $TARGET_ROOT/home/hacker ]; then
332 echo "XXX" && echo 60
333 echo -e "\nCopie des fichiers utilisateurs par défaut (/etc/skel)..."
334 echo "XXX"
335 cp -a $TARGET_ROOT/home/hacker $TARGET_ROOT/etc/skel
336 else
337 echo "XXX" && echo 60
338 echo -e "\nCréation du répertoire (/etc/skel)..."
339 echo "XXX"
340 mkdir -p $TARGET_ROOT/etc/skel \
341 $TARGET_ROOT/etc/Documents \
342 $TARGET_ROOT/etc/skel/Images \
343 $TARGET_ROOT/etc/skel/.local/bin \
344 $TARGET_ROOT/etc/skel/.local/share
345 fi
346 sleep 2
347 }
349 # Pre configure freshly installed system (70 - 90%).
350 pre_config_system()
351 {
352 cd $TARGET_ROOT
353 # Restore backup of existing /home if exists.
354 # (created by prepare_target_dev)
355 if [ -d home.bak ]; then
356 echo "XXX" && echo 75
357 echo -e "\nRestauration du répertoire /home..."
358 echo "XXX"
359 rm -rf home
360 mv home.bak home
361 sleep 2
362 fi
363 # Add root device to CHECK_FS in rcS.conf to check filesystem
364 # on each boot.
365 echo "XXX" && echo 80
366 echo -e "\nAjout de $TARGET_DEV à CHECK_FS du fichier /etc/rcS.conf..."
367 echo "XXX"
368 sed -i s#'CHECK_FS=\"\"'#"CHECK_FS=\"$TARGET_DEV\""# etc/rcS.conf
369 sleep 2
370 # Set hostname.
371 echo "XXX" && echo 85
372 echo -e "\nConfiguration du nom de machine: $HOSTNAME"
373 echo "XXX"
374 echo $HOSTNAME > etc/hostname
375 sleep 2
376 }
378 # Determine GRUB partition number and GRUB disk number.
379 grub_config()
380 {
381 DISK_LETTER=${TARGET_DEV#/dev/[h-s]d}
382 DISK_LETTER=${DISK_LETTER%[0-9]}
383 GRUB_PARTITION=$((${TARGET_DEV#/dev/[h-s]d[a-z]}-1))
384 for disk in a b c d e f g h
385 do
386 nb=$(($nb+1))
387 if [ "$disk" = "$DISK_LETTER" ]; then
388 GRUB_DISK=$(($nb-1))
389 break
390 fi
391 done
392 GRUB_ROOT="(hd${GRUB_DISK},${GRUB_PARTITION})"
393 # Create the target GRUB configuration.
394 mkdir -p $TARGET_ROOT/boot/grub
395 cat > $TARGET_ROOT/boot/grub/menu.lst << _EOF_
396 # /boot/grub/menu.lst: GRUB boot loader configuration.
397 #
399 # By default, boot the first entry.
400 default 0
402 # Boot automatically after 8 secs.
403 timeout 8
405 # Change the colors.
406 color yellow/brown light-green/black
408 # For booting SliTaz from : $TARGET_DEV
409 #
410 title SliTaz GNU/Linux (cooking) (Kernel $KERNEL)
411 root $GRUB_ROOT
412 kernel /boot/$KERNEL root=$TARGET_DEV
414 _EOF_
415 # log
416 echo "grub_config: $TARGET_ROOT/boot/grub/menu.lst" >>$LOG
417 sleep 2
418 }
420 # Files install with gauge, calling for functions or with cmds.
421 install_files()
422 {
423 (
425 echo "XXX" && echo 10
426 echo -e "\nNettoyage de la partition racine si nécessaire..."
427 echo "XXX"
428 clean_target
430 echo "XXX" && echo 20
431 echo -e "\nInstallation du noyau ($KERNEL)..."
432 echo "XXX"
433 install_kernel
435 echo "XXX" && echo 30
436 echo -e "\nCopie des bootloaders syslinux/isolinux..."
437 echo "XXX"
438 copy_bootloaders
440 echo "XXX" && echo 40
441 echo -e "\nCopie du système compressé (rootfs.gz)..."
442 echo "XXX"
443 cp /media/cdrom/boot/rootfs.gz $TARGET_ROOT
444 sleep 2
446 echo "XXX" && echo 50
447 echo -e "\nExtraction du système racine..."
448 echo "XXX"
449 extract_rootfs
451 echo "XXX" && echo 60
452 echo -e "\nCopie des fichiers utilisateurs par défaut (/etc/skel)..."
453 echo "XXX"
454 gen_etc_skel
455 sleep 2
457 echo "XXX" && echo 70
458 echo -e "\nPreconfiguration du système..."
459 echo "XXX"
460 pre_config_system
462 echo "XXX" && echo 90
463 echo -e "\nCréation du fichier de configuration de GRUB (menu.lst)..."
464 echo "XXX"
465 grub_config
467 echo "XXX" && echo 100
468 echo -e "\nFin de l'installation des fichiers..."
469 echo "XXX"
470 echo "install_files: OK" >>$LOG
471 sleep 4
473 ) |
474 $DIALOG --title " Installation des fichiers " \
475 --backtitle "$BACKLIST" \
476 --gauge "Starting to install files..." 18 70 0
477 }
479 # GRUB info with disk name used for grub-install
480 grub_install()
481 {
482 TARGET_DISK=`echo $TARGET_DEV | sed s/"[0-9]"/''/`
483 set_messages
484 $DIALOG --title " GRUB install " \
485 --backtitle "$BACKLIST" \
486 --clear --colors --yesno "$GRUB_INSTALL_MSG" 18 70
487 retval=$?
488 case $retval in
489 0)
490 (
491 echo "XXX" && echo 50
492 echo -e "\nExécution de grub-install sur : $TARGET_DISK..."
493 echo "XXX"
494 grub-install --no-floppy \
495 --root-directory=$TARGET_ROOT $TARGET_DISK 2>>$LOG
496 echo "XXX" && echo 100
497 echo -e "\nFin de l'installation..."
498 echo "XXX"
499 sleep 2
500 ) |
501 $DIALOG --title " GRUB install " \
502 --backtitle "$BACKLIST" \
503 --gauge "Installation de GRUB..." 18 70 0 ;;
504 1)
505 echo "grub_install: NO" >>$LOG ;;
506 255)
507 echo -e "ESC pressed.\n" && exit 0 ;;
508 esac
509 }
511 # Copy log file, umount target and eject cdrom
512 umount_devices()
513 {
514 (
515 echo "XXX" && echo 25
516 echo -e "\nCopie du fichier de log ($LOG)..."
517 echo "XXX"
518 cp -a $LOG $TARGET_ROOT/var/log
519 sleep 2
520 echo "XXX" && echo 50
521 echo -e "\nDémontage de la cible ($TARGET_DEV)..."
522 echo "XXX"
523 if mount | grep -q $TARGET_ROOT; then
524 umount $TARGET_ROOT 2>/dev/null
525 fi
526 echo "XXX" && echo 75
527 echo -e "\nDémontage et éjection du cdrom..."
528 echo "XXX"
529 if mount | grep -q /media/cdrom; then
530 umount /media/cdrom
531 grep -q slitaz-loram-cdrom /etc/init.d/rcS || eject
532 fi
533 sleep 2
534 echo "XXX" && echo 100
535 echo -e "\n$TITLE..."
536 echo "XXX"
537 sleep 2
538 ) |
539 $DIALOG --title " $TITLE " \
540 --backtitle "$BACKLIST" \
541 --gauge "$TITLE starting..." 18 70 0
542 }
544 # End of installation
545 end_of_install()
546 {
547 echo "end_of_install: `date`" >>$LOG
548 $DIALOG --title " Installation terminée " \
549 --backtitle "$BACKLIST" \
550 --yes-label "Exit" \
551 --no-label "Reboot" \
552 --clear --colors --yesno "$END_OF_INSTALL_MSG" 18 70
553 retval=$?
554 case $retval in
555 0)
556 TITLE="Exiting"
557 umount_devices ;;
558 1)
559 TITLE="Rebooting"
560 umount_devices
561 reboot || reboot -f ;;
562 255)
563 echo -e "ESC pressed.\n" && exit 0 ;;
564 esac
565 }
567 #####################
568 # Upgrade functions #
569 #####################
571 # We need a partition to upgrade SliTaz.
572 ask_for_upgrade_dev()
573 {
574 exec 3>&1
575 UPGRADE_DEV=`$DIALOG --title " Cible à mettre jour " \
576 --backtitle "$BACKLIST" --clear \
577 --extra-label "List" --extra-button \
578 --colors --inputbox "\n
579 L'installateur va mettre à jour le système cible en commançant par sauver tous \
580 les fichiers de configuration et la liste des paquets installés. Ensuite, il va \
581 nettoyer la partition et installer la version de SliTaz contenue sur le cdrom, \
582 restaurer les fichiers de configuration et réinstaller l'ensemble des paquets \
583 qui ne sont pas présents sur le LiveCD. Il vous font donc une connection internet \
584 active avant de mettre à jour.\n\n
585 \Z2Partition contenant le système à mettre à jour:\Zn" 18 70 2>&1 1>&3`
586 retval=$?
587 exec 3>&-
588 check_retval
589 # Display list and come back.
590 if [ "$retval" = "3" ]; then
591 fdisk_list
592 ask_for_upgrade_dev
593 fi
594 # Empty value.
595 if [ -z $UPGRADE_DEV ]; then
596 ask_for_upgrade_dev
597 fi
598 # Check if specified device exists in /proc/partitions.
599 DEV_NAME=${UPGRADE_DEV#/dev/}
600 if cat /proc/partitions | grep -q $DEV_NAME; then
601 echo "ask_for_target_dev: $TARGET_DEV" >>$LOG
602 else
603 ERROR_MSG="La partition \Z2$UPGRADE_DEV\Zn ne semble pas exister."
604 error_message
605 ask_for_upgrade_dev
606 fi
607 echo "partition to upgrade: $UPGRADE_DEV" >>$LOG
608 }
610 # Prepare the part to upgrade, backup, install, restore configs
611 # and reinstall pkgs.
612 upgrade_process()
613 {
614 (
615 echo "XXX" && echo 5
616 echo -e "\nPréparation de la partition cible..."
617 echo "XXX"
618 # Mount point can be already used.
619 if mount | grep -q $TARGET_ROOT; then
620 umount $TARGET_ROOT 2>$LOG
621 fi
622 mkdir -p $TARGET_ROOT && sleep 2
623 # Mount target
624 mount $UPGRADE_DEV $TARGET_ROOT >>$LOG 2>>$LOG
625 cd $TARGET_ROOT
626 TARGET_DEV=$UPGRADE_DEV
627 set_messages
629 echo "XXX" && echo 10
630 echo -e "\nRecherch de /etc/slitaz-release"
631 echo "XXX"
632 if [ -f etc/slitaz-release ]; then
633 release=`cat etc/slitaz-release`
634 echo "XXX" && echo 15
635 echo -e "\nSliTaz release: $release"
636 echo "XXX"
637 else
638 ERROR_MSG="La partition \Z2$UPGRADE_DEV\Zn ne semble pas contenir de \
639 système SliTaz, le fichier: /etc/slitaz-release n'existe pas."
640 error_message
641 exit 0
642 fi && sleep 2
644 echo "XXX" && echo 20
645 echo -e "\nSauvegarde de /etc, /home et de la liste des paquets..."
646 echo "XXX"
647 # Backup target packages list
648 ls -1 var/lib/tazpkg/installed > home/packages-selection.list
649 for dir in *
650 do
651 case "$dir" in
652 boot)
653 # Upgrade doesn't prompt for grub install, so backup and
654 # create a new grub menu.lst.
655 rm -rf $TARGET_ROOT/boot/vmlinuz-*
656 mv $TARGET_ROOT/boot/grub/menu.lst \
657 $TARGET_ROOT/boot/grub/menu.lst.bak 2>/dev/null
658 grub_config ;;
659 home)
660 mv $TARGET_ROOT/home $TARGET_ROOT/home.bak
661 echo "keeping /home found on: $UPGRADE_DEV" >>$LOG ;;
662 etc)
663 tar czf $TARGET_ROOT/etc.tar.gz etc
664 mv $TARGET_ROOT/etc $TARGET_ROOT/etc.bak
665 echo "keeping /etc found on: $UPGRADE_DEV" >>$LOG ;;
666 var)
667 if [ -d $TARGET_ROOT/var/www ]; then
668 mv $TARGET_ROOT/var/www $TARGET_ROOT/www.bak
669 fi
670 rm -rf $TARGET_ROOT/var ;;
671 lost+found)
672 continue ;;
673 *)
674 echo "removing target: $dir" >>$LOG
675 rm -rf $TARGET_ROOT/$dir 2>>$LOG ;;
676 esac
677 done
678 if [ -d $TARGET_ROOT/mklost+found ]; then
679 mklost+found 2>>$LOG
680 fi
681 sleep 2
683 echo "XXX" && echo 25
684 echo -e "\nInstallation du noyau ($KERNEL)..."
685 echo "XXX"
686 install_kernel
688 echo "XXX" && echo 30
689 echo -e "\nCopie des bootloaders syslinux/isolinux..."
690 echo "XXX"
691 copy_bootloaders
693 echo "XXX" && echo 35
694 echo -e "\nCopie du système compressé (rootfs.gz)..."
695 echo "XXX"
696 cp /media/cdrom/boot/rootfs.gz $TARGET_ROOT
697 sleep 2
699 echo "XXX" && echo 40
700 echo -e "\nExtraction du système racine..."
701 echo "XXX"
702 extract_rootfs
704 # Restore backups.
705 echo "XXX" && echo 42
706 echo -e "\nRestauration des fichiers de configuration..."
707 echo "XXX"
708 rm -rf $TARGET_ROOT/home
709 mv $TARGET_ROOT/home.bak $TARGET_ROOT/home
710 rm -rf $TARGET_ROOT/etc
711 mv $TARGET_ROOT/etc.bak $TARGET_ROOT/etc
712 if [ -d $TARGET_ROOT/www.bak ]; then
713 rm -rf $TARGET_ROOT/var/www
714 mv $TARGET_ROOT/www.bak $TARGET_ROOT/var/www
715 fi
716 echo "backups restored: `date`" >> $LOG
718 # /var/lib/slitaz-installer
719 mkdir $TARGET_ROOT/var/lib/slitaz-installer
720 mv $TARGET_ROOT/etc.tar.gz $TARGET_ROOT/var/lib/slitaz-installer
721 mv $TARGET_ROOT/home/packages-selection.list $TARGET_ROOT/var/lib/slitaz-installer
722 cd $TARGET_ROOT/var/lib/slitaz-installer
724 # LiveCD packages list.
725 echo "XXX" && echo 46
726 echo -e "\nCréation des listes de paquets..."
727 echo "XXX"
728 ls -1 $TARGET_ROOT/var/lib/tazpkg/installed > packages-cdrom.list || exit 1
729 echo "packages-cdrom.list: done" >> $LOG
730 # Diff
731 diff packages-cdrom.list packages-selection.list | \
732 grep ^+[a-z] | sed s/^+// > packages-selection.diff
733 echo "packages-selection.diff: done" >> $LOG
734 # Get mirror list.
735 tazpkg recharge >>$LOG 2>>$LOG
736 if [ ! -f /var/lib/tazpkg/packages.list ]; then
737 ERROR_MSG="La liste des paquets disponibles sur le miroir n'a pas pu \
738 être téléchargée. Aucun paquets manquants ne sera réintallés maintenant, mais
739 vous pourrez le faire plus tard en vous aidant de la liste: \n\n
741 /var/lib/slitaz-installer/packages-selection.diff"
742 error_message
743 fi
744 sleep 2
746 # Check if the pkg is on the mirror
747 echo "XXX" && echo 48
748 echo -e "\nVérification de la disponibilité des paquets..."
749 echo "XXX"
750 touch packages-to-install.list
751 packages=0
752 diff=`cat packages-selection.diff | sort`
753 for pkg in $diff
754 do
755 if grep -q ^$pkg-[0-9] /var/lib/tazpkg/packages.list; then
756 packages=$(($packages+1))
757 echo "$pkg" >> packages-to-install.list
758 fi
759 done
761 # Calculate the percent for one package and install.
762 echo "XXX" && echo 50
763 echo -e "\nInstallation des éventuels paquets..."
764 echo "XXX"
765 sleep 2
766 if [ "$packages" == "0" ]; then
767 echo "packages to install: 0" >> $LOG
768 else
769 onepkg=$((48/$packages))
770 pct=50
771 # Get-install all missing pkgs.
772 for pkg in `cat packages-to-install.list`
773 do
774 pct=$(($pct+$onepkg))
775 echo "XXX" && echo $pct
776 echo -e "\nInstallation de: $pkg..."
777 echo "XXX"
778 # Log please.
779 echo "get-install: $pkg" >>$LOG
780 # Get install package and answer yes in case of dependencies.
781 pkgname=`grep ^$pkg /var/lib/tazpkg/packages.list`
782 tazpkg get $pkg >/dev/null 2>/dev/null
783 yes "" | tazpkg install $pkgname.tazpkg --root=$TARGET_ROOT >/dev/null 2>/dev/null
784 rm -f $pkgname.tazpkg
785 done
786 fi
787 echo "XXX" && echo 100
788 echo -e "\nInstallation des paquets terminée..."
789 echo "XXX"
790 sleep 2
791 ) |
792 $DIALOG --title " Processus de mise à jour " \
793 --backtitle "$BACKLIST" \
794 --gauge "Target in preparation..." 18 70 0
795 }
797 # End of system upgrade
798 end_of_upgrade()
799 {
800 TARGET_DEV=$UPGRADE_DEV
801 set_messages
802 pkgscd=`cat $TARGET_ROOT/var/lib/slitaz-installer/packages-cdrom.list | wc -l`
803 pkginst=`cat $TARGET_ROOT/var/lib/slitaz-installer/packages-to-install.list | wc -l`
804 echo "end_of_upgrade: `date`" >>$LOG
805 $DIALOG --title " Mise à jour terminée " \
806 --backtitle "$BACKLIST" \
807 --yes-label "Exit" \
808 --no-label "Reboot" \
809 --clear --colors --yesno "\n
810 Mise à jour terminée. Vous pouvez dès maintenant redémarrer (reboot) \
811 sur votre système SliTaz GNU/Linux à jour.\n\n
812 Paquets présents sur le cdrom : $pkgscd\n
813 Paquets installés depuis le miroir : $pkginst\n" 18 70
814 retval=$?
815 case $retval in
816 0)
817 TITLE="Exiting"
818 umount_devices ;;
819 1)
820 TITLE="Rebooting"
821 umount_devices
822 reboot || reboot -f ;;
823 255)
824 echo -e "ESC pressed.\n" && exit 0 ;;
825 esac
826 }
828 ######################
829 # Installer sequence #
830 ######################
832 set_messages
833 check_root
834 start_installer
836 case $ACTION in
837 upgrade)
838 BACKLIST="$BACKLIST (Mise à jour)"
839 mount_cdrom
840 ask_for_upgrade_dev
841 upgrade_process
842 end_of_upgrade
843 ;;
844 install|*)
845 mount_cdrom
846 ask_for_target_dev
847 ask_for_mkfs_target_dev
848 prepare_target_dev
849 ask_for_hostname
850 install_files
851 grub_install
852 end_of_install
853 ;;
854 esac
856 exit 0