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