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

Slitaz-installer.sh: add slitaz-loram-cdrom support
author Pascal Bellard <pascal.bellard@slitaz.org>
date Fri Feb 22 14:36:42 2008 +0100 (2008-02-22)
parents 06813db5603b
children dc013a900d49
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@54 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
pascal@56 175 ( zcat rootfs.gz 2>/dev/null || lzma d rootfs.gz -so 2>/dev/null || \
pascal@56 176 cat rootfs.gz ) | cpio -id
pascal@62 177 # remove link to cdrom
pascal@62 178 [ -d cdrom ] && rmdir cdrom
pascal@62 179 if [ -L usr ]; then
pascal@62 180 rm usr
pascal@62 181 mv ../rootcd/usr .
pascal@62 182 fi
pascal@62 183 # unpack /usr
pascal@62 184 $sqfs="../rootcd/usr.sqfs"
pascal@62 185 [ -f $sqfs ] || sqfs=".usr.sqfs"
pascal@62 186 if [ -f $sqfs ]; then
pascal@56 187 echo -en "\nDécompression de /usr... "
pascal@62 188 rmdir usr
pascal@62 189 sbin/unsquashfs -d usr $sqfs
pascal@62 190 rm $sqfs
pascal@62 191 fi
pascal@62 192 if [ -d usr/.moved ]; then
pascal@62 193 echo -en "\nRestoration des fichiers déplacés dans /usr... "
pascal@62 194 ( cd usr/.moved ; find * -print ) | \
pascal@62 195 while read file; do
pascal@62 196 [ -L "$file" ] || continue
pascal@62 197 rm -f "$file"
pascal@62 198 mv "usr/.moved/$file" "$file"
pascal@62 199 done
pascal@62 200 rm -rf usr/.moved
pascal@56 201 fi
pankso@53 202 echo ""
pankso@47 203 echo -n "Suppression des fichiers copiés..."
pascal@56 204 rm -f rootfs.gz init
pankso@47 205 status
pankso@47 206 }
pankso@27 207
pankso@53 208 # Pre configure freshly installed system.
pankso@53 209 pre_config_system()
pankso@47 210 {
pankso@53 211 # /etc/skel with hacker default personnal files.
pankso@47 212 echo -n "Copie des fichiers personnels de hacker dans : /etc/skel..."
pankso@47 213 cp -a $TARGET_ROOT/home/hacker $TARGET_ROOT/etc/skel
pankso@47 214 status
pankso@53 215 # Add root device to CHECK_FS in rcS.conf to check filesystem
pankso@53 216 # on each boot.
pankso@53 217 echo -n "Configuration de CHECK_FS dans /etc/rcS.conf..."
pankso@53 218 sed -i s#'CHECK_FS=\"\"'#"CHECK_FS=\"$TARGET_DEV\""# $TARGET_ROOT/etc/rcS.conf
pankso@53 219 status
pankso@53 220 sleep 2
pankso@47 221 }
pankso@47 222
pankso@47 223 # Determin disk letter, GRUB partition number and GRUB disk number.
pankso@47 224 grub_install()
pankso@47 225 {
pankso@47 226 DISK_LETTER=${TARGET_DEV#/dev/[h-s]d}
pankso@47 227 DISK_LETTER=${DISK_LETTER%[0-9]}
pankso@52 228 GRUB_PARTITION=$((${TARGET_DEV#/dev/[h-s]d[a-z]}-1))
pankso@47 229 for disk in a b c d e f g h
pankso@47 230 do
pankso@47 231 nb=$(($nb+1))
pankso@47 232 if [ "$disk" = "$DISK_LETTER" ]; then
pankso@47 233 GRUB_DISK=$(($nb-1))
pankso@47 234 break
pankso@47 235 fi
pankso@47 236 done
pankso@47 237 GRUB_ROOT="(hd${GRUB_DISK},${GRUB_PARTITION})"
pankso@47 238
pankso@47 239 # Creat the target GRUB configuration.
pankso@47 240 echo -n "Création du fichier de configuration de GRUB (menu.lst)..."
pankso@47 241 mkdir -p $TARGET_ROOT/boot/grub
pankso@47 242 cat > $TARGET_ROOT/boot/grub/menu.lst << _EOF_
pankso@16 243 # /boot/grub/menu.lst: GRUB boot loader configuration.
pankso@16 244 #
pankso@16 245
pankso@16 246 # By default, boot the first entry.
pankso@16 247 default 0
pankso@16 248
pankso@54 249 # Boot automatically after 8 secs.
pankso@54 250 timeout 8
pankso@16 251
pankso@16 252 # Change the colors.
pankso@16 253 color yellow/brown light-green/black
pankso@16 254
pankso@16 255 # For booting SliTaz from : $TARGET_DEV
pankso@16 256 #
pankso@16 257 title SliTaz GNU/Linux (cooking) (Kernel $KERNEL)
pankso@47 258 root $GRUB_ROOT
pankso@16 259 kernel /boot/$KERNEL root=$TARGET_DEV
pankso@16 260
pankso@47 261 _EOF_
pankso@47 262 status
pankso@47 263 # GRUB info with disk name used for grub-install
pankso@47 264 TARGET_DISK=`echo $TARGET_DEV | sed s/"[0-9]"/''/`
pankso@47 265 echo ""
pankso@47 266 echo -e "\033[1mGRUB - Informations et installation\033[0m
pankso@8 267 ================================================================================
pankso@8 268
pankso@8 269 Avant de redémarrer sur votre nouveau système SliTaz GNU/Linux, veuillez vous
pankso@8 270 assurer qu'un gestionnaire de démarrage est bien installé. Si ce n'est pas le
pankso@47 271 cas vous pouvez répondre oui et installer GRUB ou lancer la commande :
pankso@8 272
pankso@47 273 # grub-install --no-floppy --root-directory=$TARGET_ROOT $TARGET_DISK
pankso@8 274
pankso@16 275 Les lignes suivantes on été ajoutées au fichier de configuration de GRUB
pankso@47 276 /boot/grub/menu.lst de la cible. Elles feront démarrer SliTaz en installant
pankso@47 277 GRUB. Si vous n'installez pas GRUB, vous pouvez utiliser ces même lignes dans
pankso@47 278 un autre fichier menu.lst, situé sur une autre partitions :
pankso@8 279
pankso@8 280 title SliTaz GNU/Linux (cooking) (Kernel $KERNEL)
pankso@47 281 root $GRUB_ROOT
pankso@8 282 kernel /boot/$KERNEL root=$TARGET_DEV
pankso@8 283
pankso@8 284 ================================================================================"
pankso@47 285 echo ""
pankso@47 286
pankso@47 287 # GRUB install
pankso@47 288 echo -n "Installer GRUB sur le disque : $TARGET_DISK (oui/Non) ? "; read anser
pankso@47 289 if [ "$anser" = "oui" ]; then
pankso@47 290 grub-install --no-floppy --root-directory=$TARGET_ROOT $TARGET_DISK
pankso@53 291 else
pankso@53 292 echo "GRUB n'a pas été installé."
pankso@47 293 fi
pankso@47 294 }
pankso@47 295
pankso@47 296 # End of installation
pankso@47 297 end_of_install()
pankso@47 298 {
pankso@52 299 echo ""
pankso@52 300 echo -e "\033[1mFin de l'installation\033[0m
pankso@47 301 ================================================================================
pankso@52 302
pankso@47 303 Installation terminée. Vous pouvez dès maintenant redémarrer sur votre nouveau
pankso@47 304 système SliTaz GNU/Linux et commencer à finement le configurer en fonction de
pankso@47 305 vos besoins et préférences. Vous trouverez un support technique gratuit via
pankso@53 306 la liste de discussion et/ou le forum officiel du projet."
pankso@47 307 echo ""
pankso@47 308 }
pankso@47 309
pankso@47 310 ######################
pankso@47 311 # Installer sequence #
pankso@47 312 ######################
pankso@47 313
pankso@53 314 start_infos
pankso@47 315 check_root
pankso@47 316 ask_for_target_dev
pankso@47 317 mkfs_target_dev
pankso@47 318 mount_devices
pankso@47 319 install_kernel
pankso@47 320 copy_bootloaders
pankso@47 321 copy_extract_rootfs
pankso@53 322 pre_config_system
pankso@47 323 grub_install
pankso@47 324 end_of_install
pankso@47 325
pankso@47 326 exit 0