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

Config CHECK_FS with installer
author Christophe Lincoln <pankso@slitaz.org>
date Fri Feb 08 17:17:49 2008 +0100 (2008-02-08)
parents e55103647df6
children 73bec9331620
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@53 40 start_infos()
pankso@47 41 {
pankso@52 42 clear
pankso@47 43 echo ""
pankso@52 44 echo -e "\033[1mSliTaz GNU/Linux - Installateur mode texte\033[0m
pankso@52 45 ================================================================================
pankso@52 46
pankso@8 47 Bienvenue dans l'installateur en mode texte de SliTaz GNU/Linux. Il vous
pankso@8 48 suffirat de répondre à quelques questions lors des différentes étapes
pankso@8 49 d'installation. Avant de commencer, assurer vous de connaître le nom de la
pankso@8 50 partitions sur laquelle vous désirez installer SliTaz. L'installateur va
pankso@8 51 commencer par vous proposer de formater la partition cible et la monter.
pankso@8 52 Ensuite il va monter le cdrom, décompresser les fichiers et les installer
pankso@8 53 sur la cible. Pour finir, vous aurez aussi la possibilité d'installer le
pankso@8 54 gestionnaire de démarrage GRUB, si besoin est. A noter que pour continuer
pankso@8 55 cette installation, vous devez avoir les droits d'administrateur root, qui
pankso@52 56 peuvent s'obtenir via la commande 'su' et le mot de passe 'root'.
pankso@52 57
pankso@52 58 ================================================================================"
pankso@47 59 echo ""
pankso@47 60 echo -n "Commencer l'installation (oui/Non) ? "; read anser
pankso@47 61 if [ ! "$anser" = "oui" ]; then
pankso@47 62 echo -e "\nArrêt volontaire.\n"
pankso@47 63 exit 0
pankso@47 64 fi
pankso@47 65 }
pankso@8 66
pankso@8 67 # Exit install if user is not root.
pankso@47 68 check_root()
pankso@47 69 {
pankso@47 70 if test $(id -u) != 0 ; then
pankso@47 71 echo -e "
pankso@47 72 Vous devez être root pour continuer l'installation du système. Arrêt.
pankso@47 73 Vous pouvez utiliser 'su' suivi du mot de passe root pour devenir
pankso@47 74 administarteur.\n"
pankso@47 75 exit 0
pankso@47 76 fi
pankso@47 77 }
pankso@8 78
pankso@52 79 # Display a list of available partition.
pankso@52 80 fdisk_list()
pankso@52 81 {
pankso@52 82 echo ""
pankso@52 83 fdisk -l | grep ^/dev
pankso@52 84 echo ""
pankso@52 85 }
pankso@52 86
pankso@47 87 # We need a partition to install.
pankso@47 88 ask_for_target_dev()
pankso@47 89 {
pankso@47 90 echo ""
pankso@52 91 echo -e "\033[1mPartition racine\033[0m
pankso@52 92 ================================================================================
pankso@52 93
pankso@52 94 Veuilliez indiquer la partition à utiliser pour installer SliTaz GNU/Linux,
pankso@52 95 exemple : '/dev/hda1'. Vous pouvez tapez 'list' pour afficher une liste
pankso@52 96 des partitions disponibles sur le ou les disques durs."
pankso@52 97 echo ""
pankso@52 98 echo -n "Partition à utiliser : "; read anser
pankso@52 99 while [ "$anser" == "list" ]; do
pankso@52 100 fdisk_list
pankso@52 101 echo -n "Partition à utiliser : "; read anser
pankso@52 102 done
pankso@47 103 if [ "$anser" == "" ]; then
pankso@47 104 echo -e "\nPas de partition spécifiée. Arrêt.\n"
pankso@47 105 exit 0
pankso@47 106 else
pankso@47 107 TARGET_DEV=$anser
pankso@47 108 fi
pankso@47 109 }
pankso@8 110
pankso@8 111 # Mkfs if needed/wanted.
pankso@47 112 mkfs_target_dev()
pankso@47 113 {
pankso@52 114 echo ""
pankso@52 115 echo "* SliTaz va être installé sur la partition : $TARGET_DEV"
pankso@47 116 echo ""
pankso@47 117 echo -n "Faut t'il formater la partition en ext3 (oui/Non) ? "; read anser
pankso@47 118 if [ "$anser" == "oui" ]; then
pankso@47 119 mkfs.ext3 $TARGET_DEV
pankso@47 120 else
pankso@47 121 echo "Le système de fichiers déjà présent sera utilisé..."
pankso@47 122 fi
pankso@47 123 }
pankso@8 124
pankso@47 125 # Mount target device and cdrom.
pankso@47 126 mount_devices()
pankso@47 127 {
pankso@53 128 echo ""
pankso@47 129 mkdir -p $TARGET_ROOT /media/cdrom
pankso@47 130 echo "Montage de la partitions et du cdrom..."
pankso@53 131 # Mount points can be already used.
pankso@52 132 if mount | grep $TARGET_ROOT; then
pankso@52 133 umount $TARGET_ROOT
pankso@52 134 fi
pankso@53 135 if mount | grep /media/cdrom; then
pankso@53 136 umount /media/cdrom
pankso@53 137 fi
pankso@47 138 mount $TARGET_DEV $TARGET_ROOT
pankso@52 139 mount -t iso9660 $CDROM /media/cdrom || exit 1
pankso@47 140 }
pankso@8 141
pankso@47 142 # Copy and install Kernel.
pankso@47 143 install_kernel()
pankso@47 144 {
pankso@53 145 echo ""
pankso@47 146 echo -n "Création du répertoire /boot..."
pankso@47 147 mkdir -p $TARGET_ROOT/boot
pankso@47 148 status
pankso@47 149 echo -n "Copie du noyau Linux..."
pankso@47 150 cp /media/cdrom/boot/bzImage $TARGET_ROOT/boot/$KERNEL
pankso@47 151 status
pankso@47 152 }
pankso@8 153
pankso@47 154 # Syslinux/isolinux.
pankso@47 155 copy_bootloaders()
pankso@47 156 {
pankso@47 157 echo -n "Copie des bootloaders syslinux/isolinux..."
pankso@47 158 if [ -d "/media/cdrom/boot/syslinux" ]; then
pankso@47 159 cp -a /media/cdrom/boot/syslinux $TARGET_ROOT/boot
pankso@47 160 fi
pankso@47 161 if [ -d "/media/cdrom/boot/isolinux" ]; then
pankso@47 162 cp -a /media/cdrom/boot/isolinux $TARGET_ROOT/boot
pankso@47 163 fi
pankso@47 164 status
pankso@47 165 }
pankso@14 166
pankso@47 167 # Copy and extract lzma'ed or gziped rootfs.
pankso@47 168 copy_extract_rootfs()
pankso@47 169 {
pankso@47 170 echo -n "Copie du système de fichier racine..."
pankso@47 171 cp /media/cdrom/boot/rootfs.gz $TARGET_ROOT
pankso@47 172 status
pankso@47 173 echo "Extraction du système de fichiers racine (rootfs.gz)..."
pankso@47 174 cd $TARGET_ROOT
pankso@47 175 (zcat rootfs.gz 2>/dev/null || lzma d rootfs.gz -so) | cpio -id
pankso@53 176 echo ""
pankso@47 177 echo -n "Suppression des fichiers copiés..."
pankso@47 178 rm -f rootfs rootfs.cpio rootfs.gz init
pankso@47 179 status
pankso@47 180 }
pankso@27 181
pankso@53 182 # Pre configure freshly installed system.
pankso@53 183 pre_config_system()
pankso@47 184 {
pankso@53 185 # /etc/skel with hacker default personnal files.
pankso@47 186 echo -n "Copie des fichiers personnels de hacker dans : /etc/skel..."
pankso@47 187 cp -a $TARGET_ROOT/home/hacker $TARGET_ROOT/etc/skel
pankso@47 188 status
pankso@53 189 # Add root device to CHECK_FS in rcS.conf to check filesystem
pankso@53 190 # on each boot.
pankso@53 191 echo -n "Configuration de CHECK_FS dans /etc/rcS.conf..."
pankso@53 192 sed -i s#'CHECK_FS=\"\"'#"CHECK_FS=\"$TARGET_DEV\""# $TARGET_ROOT/etc/rcS.conf
pankso@53 193 status
pankso@53 194 sleep 2
pankso@47 195 }
pankso@47 196
pankso@47 197 # Determin disk letter, GRUB partition number and GRUB disk number.
pankso@47 198 grub_install()
pankso@47 199 {
pankso@47 200 DISK_LETTER=${TARGET_DEV#/dev/[h-s]d}
pankso@47 201 DISK_LETTER=${DISK_LETTER%[0-9]}
pankso@52 202 GRUB_PARTITION=$((${TARGET_DEV#/dev/[h-s]d[a-z]}-1))
pankso@47 203 for disk in a b c d e f g h
pankso@47 204 do
pankso@47 205 nb=$(($nb+1))
pankso@47 206 if [ "$disk" = "$DISK_LETTER" ]; then
pankso@47 207 GRUB_DISK=$(($nb-1))
pankso@47 208 break
pankso@47 209 fi
pankso@47 210 done
pankso@47 211 GRUB_ROOT="(hd${GRUB_DISK},${GRUB_PARTITION})"
pankso@47 212
pankso@47 213 # Creat the target GRUB configuration.
pankso@47 214 echo -n "Création du fichier de configuration de GRUB (menu.lst)..."
pankso@47 215 mkdir -p $TARGET_ROOT/boot/grub
pankso@47 216 cat > $TARGET_ROOT/boot/grub/menu.lst << _EOF_
pankso@16 217 # /boot/grub/menu.lst: GRUB boot loader configuration.
pankso@16 218 #
pankso@16 219
pankso@16 220 # By default, boot the first entry.
pankso@16 221 default 0
pankso@16 222
pankso@16 223 # Boot automatically after 20 secs.
pankso@16 224 timeout 20
pankso@16 225
pankso@16 226 # Change the colors.
pankso@16 227 color yellow/brown light-green/black
pankso@16 228
pankso@16 229 # For booting SliTaz from : $TARGET_DEV
pankso@16 230 #
pankso@16 231 title SliTaz GNU/Linux (cooking) (Kernel $KERNEL)
pankso@47 232 root $GRUB_ROOT
pankso@16 233 kernel /boot/$KERNEL root=$TARGET_DEV
pankso@16 234
pankso@47 235 _EOF_
pankso@47 236 status
pankso@47 237 # GRUB info with disk name used for grub-install
pankso@47 238 TARGET_DISK=`echo $TARGET_DEV | sed s/"[0-9]"/''/`
pankso@47 239 echo ""
pankso@47 240 echo -e "\033[1mGRUB - Informations et installation\033[0m
pankso@8 241 ================================================================================
pankso@8 242
pankso@8 243 Avant de redémarrer sur votre nouveau système SliTaz GNU/Linux, veuillez vous
pankso@8 244 assurer qu'un gestionnaire de démarrage est bien installé. Si ce n'est pas le
pankso@47 245 cas vous pouvez répondre oui et installer GRUB ou lancer la commande :
pankso@8 246
pankso@47 247 # grub-install --no-floppy --root-directory=$TARGET_ROOT $TARGET_DISK
pankso@8 248
pankso@16 249 Les lignes suivantes on été ajoutées au fichier de configuration de GRUB
pankso@47 250 /boot/grub/menu.lst de la cible. Elles feront démarrer SliTaz en installant
pankso@47 251 GRUB. Si vous n'installez pas GRUB, vous pouvez utiliser ces même lignes dans
pankso@47 252 un autre fichier menu.lst, situé sur une autre partitions :
pankso@8 253
pankso@8 254 title SliTaz GNU/Linux (cooking) (Kernel $KERNEL)
pankso@47 255 root $GRUB_ROOT
pankso@8 256 kernel /boot/$KERNEL root=$TARGET_DEV
pankso@8 257
pankso@8 258 ================================================================================"
pankso@47 259 echo ""
pankso@47 260
pankso@47 261 # GRUB install
pankso@47 262 echo -n "Installer GRUB sur le disque : $TARGET_DISK (oui/Non) ? "; read anser
pankso@47 263 if [ "$anser" = "oui" ]; then
pankso@47 264 grub-install --no-floppy --root-directory=$TARGET_ROOT $TARGET_DISK
pankso@53 265 else
pankso@53 266 echo "GRUB n'a pas été installé."
pankso@47 267 fi
pankso@47 268 }
pankso@47 269
pankso@47 270 # End of installation
pankso@47 271 end_of_install()
pankso@47 272 {
pankso@52 273 echo ""
pankso@52 274 echo -e "\033[1mFin de l'installation\033[0m
pankso@47 275 ================================================================================
pankso@52 276
pankso@47 277 Installation terminée. Vous pouvez dès maintenant redémarrer sur votre nouveau
pankso@47 278 système SliTaz GNU/Linux et commencer à finement le configurer en fonction de
pankso@47 279 vos besoins et préférences. Vous trouverez un support technique gratuit via
pankso@53 280 la liste de discussion et/ou le forum officiel du projet."
pankso@47 281 echo ""
pankso@47 282 }
pankso@47 283
pankso@47 284 ######################
pankso@47 285 # Installer sequence #
pankso@47 286 ######################
pankso@47 287
pankso@53 288 start_infos
pankso@47 289 check_root
pankso@47 290 ask_for_target_dev
pankso@47 291 mkfs_target_dev
pankso@47 292 mount_devices
pankso@47 293 install_kernel
pankso@47 294 copy_bootloaders
pankso@47 295 copy_extract_rootfs
pankso@53 296 pre_config_system
pankso@47 297 grub_install
pankso@47 298 end_of_install
pankso@47 299
pankso@47 300 exit 0