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
|