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

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