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