slitaz-tools annotate tinyutils/slitaz-installer.sh @ rev 47

Improved installer script (determin dev and inst GRUB if wanted
author Christophe Lincoln <pankso@slitaz.org>
date Tue Feb 05 22:26:41 2008 +0100 (2008-02-05)
parents ea7bf0fd9f96
children e55103647df6
rev   line source
pankso@8 1 #!/bin/sh
pankso@47 2 # slitaz-installer.sh - SliTaz GNU/Linux installer script.
pankso@8 3 #
pankso@47 4 # So this is SliTaz installer all in SHell script compatible Ash from Busybox.
pankso@47 5 # All the comments are in English but displayed messages are in French. The
pankso@47 6 # scrip starts with a few main variables, then all the functions and then
pankso@47 7 # a sequece of functions.
pankso@47 8 #
pankso@47 9 # (C) 2007-2008 SliTaz - GNU General Public License v3.
pankso@47 10 #
pankso@47 11 # Author : Christophe Lincoln <pankso@slitaz.org>
pankso@47 12 #
pankso@47 13 VERSION=0.1
pankso@8 14
pankso@47 15 # We need to know cdrom device and kernel version string
pankso@47 16 # to copy files.
pankso@8 17 DRIVE_NAME=`cat /proc/sys/dev/cdrom/info | grep "drive name" | cut -f 3`
pankso@8 18 CDROM=/dev/$DRIVE_NAME
pankso@47 19 TARGET_ROOT=/mnt/target
pankso@8 20 KERNEL=vmlinuz-`uname -r`
pankso@8 21
pankso@47 22 #######################
pankso@47 23 # Installer functions #
pankso@47 24 #######################
pankso@8 25
pankso@8 26 # Status function.
pankso@8 27 status()
pankso@8 28 {
pankso@8 29 local CHECK=$?
pankso@8 30 echo -en "\\033[70G[ "
pankso@8 31 if [ $CHECK = 0 ]; then
pankso@8 32 echo -en "\\033[1;33mOK"
pankso@8 33 else
pankso@8 34 echo -en "\\033[1;31mFailed"
pankso@8 35 fi
pankso@8 36 echo -e "\\033[0;39m ]"
pankso@8 37 }
pankso@8 38
pankso@47 39 # Start install with basic informations.
pankso@47 40 start_install()
pankso@47 41 {
pankso@47 42 echo ""
pankso@47 43 echo -e "\033[1mSliTaz GNU/Linux - Installateur mode texte\033[0m"
pankso@47 44 echo "================================================================================"
pankso@47 45 echo "
pankso@8 46 Bienvenue dans l'installateur en mode texte de SliTaz GNU/Linux. Il vous
pankso@8 47 suffirat de répondre à quelques questions lors des différentes étapes
pankso@8 48 d'installation. Avant de commencer, assurer vous de connaître le nom de la
pankso@8 49 partitions sur laquelle vous désirez installer SliTaz. L'installateur va
pankso@8 50 commencer par vous proposer de formater la partition cible et la monter.
pankso@8 51 Ensuite il va monter le cdrom, décompresser les fichiers et les installer
pankso@8 52 sur la cible. Pour finir, vous aurez aussi la possibilité d'installer le
pankso@8 53 gestionnaire de démarrage GRUB, si besoin est. A noter que pour continuer
pankso@8 54 cette installation, vous devez avoir les droits d'administrateur root, qui
pankso@8 55 peuvent s'obtenir via la commande 'su' et le mot de passe 'root'."
pankso@47 56 echo ""
pankso@47 57 echo "================================================================================"
pankso@47 58 echo ""
pankso@47 59 echo -n "Commencer l'installation (oui/Non) ? "; read anser
pankso@47 60 if [ ! "$anser" = "oui" ]; then
pankso@47 61 echo -e "\nArrêt volontaire.\n"
pankso@47 62 exit 0
pankso@47 63 fi
pankso@47 64 }
pankso@8 65
pankso@8 66 # Exit install if user is not root.
pankso@47 67 check_root()
pankso@47 68 {
pankso@47 69 if test $(id -u) != 0 ; then
pankso@47 70 echo -e "
pankso@47 71 Vous devez être root pour continuer l'installation du système. Arrêt.
pankso@47 72 Vous pouvez utiliser 'su' suivi du mot de passe root pour devenir
pankso@47 73 administarteur.\n"
pankso@47 74 exit 0
pankso@47 75 fi
pankso@47 76 }
pankso@8 77
pankso@47 78 # We need a partition to install.
pankso@47 79 ask_for_target_dev()
pankso@47 80 {
pankso@47 81 echo "
pankso@47 82 Veuilliez indiquer la partition à utiliser pour installer SliTaz,
pankso@47 83 exemple : /dev/hda1."
pankso@47 84 echo ""
pankso@47 85 echo -n "Partition à utiliser ? "; read anser
pankso@47 86 if [ "$anser" == "" ]; then
pankso@47 87 echo -e "\nPas de partition spécifiée. Arrêt.\n"
pankso@47 88 exit 0
pankso@47 89 else
pankso@47 90 TARGET_DEV=$anser
pankso@47 91 fi
pankso@47 92 }
pankso@8 93
pankso@8 94 # Mkfs if needed/wanted.
pankso@47 95 mkfs_target_dev()
pankso@47 96 {
pankso@47 97 echo "
pankso@47 98 SliTaz va être installé sur la partition : $TARGET_DEV"
pankso@47 99 echo ""
pankso@47 100 echo -n "Faut t'il formater la partition en ext3 (oui/Non) ? "; read anser
pankso@47 101 if [ "$anser" == "oui" ]; then
pankso@47 102 mkfs.ext3 $TARGET_DEV
pankso@47 103 else
pankso@47 104 echo "Le système de fichiers déjà présent sera utilisé..."
pankso@47 105 fi
pankso@47 106 }
pankso@8 107
pankso@47 108 # Mount target device and cdrom.
pankso@47 109 mount_devices()
pankso@47 110 {
pankso@47 111 mkdir -p $TARGET_ROOT /media/cdrom
pankso@47 112 echo "Montage de la partitions et du cdrom..."
pankso@47 113 mount $TARGET_DEV $TARGET_ROOT
pankso@47 114 mount -t iso9660 $CDROM /media/cdrom
pankso@47 115 }
pankso@8 116
pankso@47 117 # Copy and install Kernel.
pankso@47 118 install_kernel()
pankso@47 119 {
pankso@47 120 echo -n "Création du répertoire /boot..."
pankso@47 121 mkdir -p $TARGET_ROOT/boot
pankso@47 122 status
pankso@47 123 echo -n "Copie du noyau Linux..."
pankso@47 124 cp /media/cdrom/boot/bzImage $TARGET_ROOT/boot/$KERNEL
pankso@47 125 status
pankso@47 126 }
pankso@8 127
pankso@47 128 # Syslinux/isolinux.
pankso@47 129 copy_bootloaders()
pankso@47 130 {
pankso@47 131 echo -n "Copie des bootloaders syslinux/isolinux..."
pankso@47 132 if [ -d "/media/cdrom/boot/syslinux" ]; then
pankso@47 133 cp -a /media/cdrom/boot/syslinux $TARGET_ROOT/boot
pankso@47 134 fi
pankso@47 135 if [ -d "/media/cdrom/boot/isolinux" ]; then
pankso@47 136 cp -a /media/cdrom/boot/isolinux $TARGET_ROOT/boot
pankso@47 137 fi
pankso@47 138 status
pankso@47 139 }
pankso@14 140
pankso@47 141 # Copy and extract lzma'ed or gziped rootfs.
pankso@47 142 copy_extract_rootfs()
pankso@47 143 {
pankso@47 144 echo -n "Copie du système de fichier racine..."
pankso@47 145 cp /media/cdrom/boot/rootfs.gz $TARGET_ROOT
pankso@47 146 status
pankso@47 147 echo "Extraction du système de fichiers racine (rootfs.gz)..."
pankso@47 148 cd $TARGET_ROOT
pankso@47 149 (zcat rootfs.gz 2>/dev/null || lzma d rootfs.gz -so) | cpio -id
pankso@47 150 echo -n "Suppression des fichiers copiés..."
pankso@47 151 rm -f rootfs rootfs.cpio rootfs.gz init
pankso@47 152 status
pankso@47 153 }
pankso@27 154
pankso@47 155 # /etc/skel with hacker default personnal files.
pankso@47 156 creat_etc_skel()
pankso@47 157 {
pankso@47 158 echo -n "Copie des fichiers personnels de hacker dans : /etc/skel..."
pankso@47 159 cp -a $TARGET_ROOT/home/hacker $TARGET_ROOT/etc/skel
pankso@47 160 status
pankso@47 161 }
pankso@47 162
pankso@47 163 # Determin disk letter, GRUB partition number and GRUB disk number.
pankso@47 164 grub_install()
pankso@47 165 {
pankso@47 166 DISK_LETTER=${TARGET_DEV#/dev/[h-s]d}
pankso@47 167 DISK_LETTER=${DISK_LETTER%[0-9]}
pankso@47 168 GRUB_PARTITION=$((${TARGET_DEV#/dev/hd[a-z]}-1))
pankso@47 169 for disk in a b c d e f g h
pankso@47 170 do
pankso@47 171 nb=$(($nb+1))
pankso@47 172 if [ "$disk" = "$DISK_LETTER" ]; then
pankso@47 173 GRUB_DISK=$(($nb-1))
pankso@47 174 break
pankso@47 175 fi
pankso@47 176 done
pankso@47 177 GRUB_ROOT="(hd${GRUB_DISK},${GRUB_PARTITION})"
pankso@47 178
pankso@47 179 # Creat the target GRUB configuration.
pankso@47 180 echo -n "Création du fichier de configuration de GRUB (menu.lst)..."
pankso@47 181 mkdir -p $TARGET_ROOT/boot/grub
pankso@47 182 cat > $TARGET_ROOT/boot/grub/menu.lst << _EOF_
pankso@16 183 # /boot/grub/menu.lst: GRUB boot loader configuration.
pankso@16 184 #
pankso@16 185
pankso@16 186 # By default, boot the first entry.
pankso@16 187 default 0
pankso@16 188
pankso@16 189 # Boot automatically after 20 secs.
pankso@16 190 timeout 20
pankso@16 191
pankso@16 192 # Change the colors.
pankso@16 193 color yellow/brown light-green/black
pankso@16 194
pankso@16 195 # For booting SliTaz from : $TARGET_DEV
pankso@16 196 #
pankso@16 197 title SliTaz GNU/Linux (cooking) (Kernel $KERNEL)
pankso@47 198 root $GRUB_ROOT
pankso@16 199 kernel /boot/$KERNEL root=$TARGET_DEV
pankso@16 200
pankso@47 201 _EOF_
pankso@47 202 status
pankso@47 203 # GRUB info with disk name used for grub-install
pankso@47 204 TARGET_DISK=`echo $TARGET_DEV | sed s/"[0-9]"/''/`
pankso@47 205 echo ""
pankso@47 206 echo -e "\033[1mGRUB - Informations et installation\033[0m
pankso@8 207 ================================================================================
pankso@8 208
pankso@8 209 Avant de redémarrer sur votre nouveau système SliTaz GNU/Linux, veuillez vous
pankso@8 210 assurer qu'un gestionnaire de démarrage est bien installé. Si ce n'est pas le
pankso@47 211 cas vous pouvez répondre oui et installer GRUB ou lancer la commande :
pankso@8 212
pankso@47 213 # grub-install --no-floppy --root-directory=$TARGET_ROOT $TARGET_DISK
pankso@8 214
pankso@16 215 Les lignes suivantes on été ajoutées au fichier de configuration de GRUB
pankso@47 216 /boot/grub/menu.lst de la cible. Elles feront démarrer SliTaz en installant
pankso@47 217 GRUB. Si vous n'installez pas GRUB, vous pouvez utiliser ces même lignes dans
pankso@47 218 un autre fichier menu.lst, situé sur une autre partitions :
pankso@8 219
pankso@8 220 title SliTaz GNU/Linux (cooking) (Kernel $KERNEL)
pankso@47 221 root $GRUB_ROOT
pankso@8 222 kernel /boot/$KERNEL root=$TARGET_DEV
pankso@8 223
pankso@8 224 ================================================================================"
pankso@47 225 echo ""
pankso@47 226
pankso@47 227 # GRUB install
pankso@47 228 echo -n "Installer GRUB sur le disque : $TARGET_DISK (oui/Non) ? "; read anser
pankso@47 229 if [ "$anser" = "oui" ]; then
pankso@47 230 grub-install --no-floppy --root-directory=$TARGET_ROOT $TARGET_DISK
pankso@47 231 fi
pankso@47 232 }
pankso@47 233
pankso@47 234 # End of installation
pankso@47 235 end_of_install()
pankso@47 236 {
pankso@47 237 echo "
pankso@47 238 ================================================================================
pankso@47 239 Installation terminée. Vous pouvez dès maintenant redémarrer sur votre nouveau
pankso@47 240 système SliTaz GNU/Linux et commencer à finement le configurer en fonction de
pankso@47 241 vos besoins et préférences. Vous trouverez un support technique gratuit via
pankso@47 242 la liste de discussion et/ou le forum officiel."
pankso@47 243 echo ""
pankso@47 244 }
pankso@47 245
pankso@47 246 ######################
pankso@47 247 # Installer sequence #
pankso@47 248 ######################
pankso@47 249
pankso@47 250 start_install
pankso@47 251 check_root
pankso@47 252 ask_for_target_dev
pankso@47 253 mkfs_target_dev
pankso@47 254 mount_devices
pankso@47 255 install_kernel
pankso@47 256 copy_bootloaders
pankso@47 257 copy_extract_rootfs
pankso@47 258 creat_etc_skel
pankso@47 259 grub_install
pankso@47 260 end_of_install
pankso@47 261
pankso@47 262 exit 0