rev |
line source |
pankso@70
|
1 #!/bin/sh
|
pankso@70
|
2 # slitaz-installer - SliTaz GNU/Linux installer.
|
pankso@70
|
3 #
|
pankso@70
|
4 # So this is SliTaz installer using dialog boxes. All the comments are in
|
pankso@70
|
5 # English but displayed messages are in French. The scrip starts with a
|
pankso@70
|
6 # few main variables, then all the functions and then a sequece of functions.
|
pankso@70
|
7 #
|
pankso@70
|
8 # (C) 2007-2008 SliTaz - GNU General Public License v3.
|
pankso@70
|
9 #
|
pankso@70
|
10 # Author : Christophe Lincoln <pankso@slitaz.org>
|
pankso@70
|
11 #
|
pankso@70
|
12 VERSION=1.0
|
pankso@70
|
13 : ${DIALOG=dialog}
|
pankso@70
|
14
|
pankso@70
|
15 # Installer actions can be specified on cmdline (install or upgrade).
|
pankso@70
|
16 if [ -n "$1" ]; then
|
pankso@70
|
17 ACTION=$1
|
pankso@70
|
18 else
|
pankso@70
|
19 ACTION=install
|
pankso@70
|
20 fi
|
pankso@70
|
21
|
pankso@70
|
22 # We need to know cdrom device and kernel version string to copy files.
|
pankso@70
|
23 DRIVE_NAME=`cat /proc/sys/dev/cdrom/info | grep "drive name" | cut -f 3`
|
pankso@70
|
24 CDROM=/dev/$DRIVE_NAME
|
pankso@70
|
25 KERNEL=vmlinuz-`uname -r`
|
pankso@70
|
26 TARGET_ROOT=/mnt/target
|
pankso@70
|
27 LOG=/var/log/slitaz-installer.log
|
pankso@70
|
28 BACKLIST="SliTaz GNU/Linux installer"
|
pankso@70
|
29
|
pankso@70
|
30 # start_install messages (to translate)
|
pankso@70
|
31 START_INSTALL_MSG="\n
|
pankso@70
|
32 Bienvenue dans l'installateur de SliTaz GNU/Linux. Vous pouvez utiliser \
|
pankso@70
|
33 les flèches du clavier et la touche ENTER ou la souris pour valider. Il vous \
|
julien@75
|
34 suffira de répondre à quelques questions lors des différentes étapes \
|
pankso@70
|
35 d'installation. L'installateur va commencer par monter le cdrom, vous \
|
julien@75
|
36 demander la partition à utiliser comme racine du système et vous proposer \
|
pankso@70
|
37 de la formater. Ensuite il va copier les fichiers depuis le cdrom, les \
|
pankso@70
|
38 décompresser, les installer et va préconfigurer le système. Pour finir,
|
pankso@70
|
39 vous aurez aussi la possibilité d'installer le gestionnaire de démarrage
|
pankso@70
|
40 GRUB, si besoin est.\n\n
|
pankso@70
|
41 \Z2Commencer l'installation ?\Zn"
|
pankso@70
|
42
|
pankso@70
|
43 #######################
|
pankso@70
|
44 # Installer functions #
|
pankso@70
|
45 #######################
|
pankso@70
|
46
|
pankso@70
|
47 # Display error message.
|
pankso@70
|
48 error_message()
|
pankso@70
|
49 {
|
pankso@70
|
50 $DIALOG --title " Erreur " \
|
pankso@70
|
51 --colors --backtitle "$BACKLIST" \
|
pankso@70
|
52 --clear --msgbox "\n$ERROR_MSG" 18 70
|
pankso@70
|
53 }
|
pankso@70
|
54
|
pankso@70
|
55 # Exit install if user is not root.
|
pankso@70
|
56 check_root()
|
pankso@70
|
57 {
|
pankso@70
|
58 if test $(id -u) != 0 ; then
|
pankso@70
|
59 ERROR_MSG="\
|
pankso@70
|
60 [\Z6fr\Zn] Vous devez être root pour installer SLiTaz GNU/Linux. Vous pouvez \
|
pankso@70
|
61 utiliser 'su' suivi du mot de passe administrateur pour devenir root \
|
pankso@70
|
62 et relancer l'installation.\n\n
|
pankso@70
|
63 [\Z6en\Zn] You must be root administrator to start SliTaz installer, please \
|
pankso@70
|
64 use 'su' to get a root SHell and restart installation."
|
pankso@70
|
65 error_message
|
pankso@70
|
66 exit 0
|
pankso@70
|
67 fi
|
pankso@70
|
68 }
|
pankso@70
|
69
|
pankso@70
|
70 # This function is used after each screen to contine or abort install.
|
pankso@70
|
71 check_retval()
|
pankso@70
|
72 {
|
pankso@70
|
73 case $retval in
|
pankso@70
|
74 0)
|
pankso@70
|
75 continue ;;
|
pankso@70
|
76 1)
|
pankso@70
|
77 echo -e "\nArrêt volontaire.\n" && exit 0 ;;
|
pankso@70
|
78 3)
|
pankso@70
|
79 continue ;;
|
pankso@70
|
80 255)
|
pankso@70
|
81 echo -e "ESC pressed.\n" && exit 0 ;;
|
pankso@70
|
82 esac
|
pankso@70
|
83 }
|
pankso@70
|
84
|
pankso@70
|
85 # Start install with basic informations.
|
pankso@70
|
86 start_install()
|
pankso@70
|
87 {
|
pankso@70
|
88 $DIALOG --title " Débuter l'installation " \
|
pankso@70
|
89 --backtitle "$BACKLIST" \
|
pankso@70
|
90 --clear --colors --yesno "$START_INSTALL_MSG" 18 70
|
pankso@70
|
91 retval=$?
|
pankso@70
|
92 check_retval
|
pankso@70
|
93 echo "start_infos: `date`" > $LOG
|
pankso@70
|
94 }
|
pankso@70
|
95
|
pankso@70
|
96 # Mount cdrom and verify if it's realy SliTaz CD.
|
pankso@70
|
97 mount_cdrom()
|
pankso@70
|
98 {
|
pankso@70
|
99 ERROR_MSG=""
|
pankso@70
|
100 umount /media/cdrom 2>/dev/null
|
pankso@70
|
101 (
|
pankso@70
|
102 echo "XXX" && echo 30
|
pankso@70
|
103 echo -e "\nCréation du point de montage (/media/cdrom)..."
|
pankso@70
|
104 echo "XXX"
|
pankso@70
|
105 mkdir -p /media/cdrom
|
pankso@70
|
106 sleep 1
|
pankso@70
|
107 echo "XXX" && echo 60
|
pankso@70
|
108 echo -e "\nMontage du cdrom ($CDROM)..."
|
pankso@70
|
109 echo "XXX"
|
pankso@70
|
110 mount -t iso9660 $CDROM /media/cdrom 2>>$LOG
|
pankso@70
|
111 echo "XXX" && echo 90
|
pankso@70
|
112 echo -e "\nVérification du media d'installation..."
|
pankso@70
|
113 echo "XXX"
|
pankso@70
|
114 sleep 2
|
pankso@70
|
115 ) |
|
pankso@70
|
116 $DIALOG --title " Montage du cdrom " \
|
pankso@70
|
117 --backtitle "$BACKLIST" \
|
pankso@70
|
118 --gauge "Préparation du media d'installation..." 18 70 0
|
pankso@70
|
119 # Exit with error msg if no rootfs.gz found
|
pankso@70
|
120 if [ ! -f /media/cdrom/boot/rootfs.gz ]; then
|
pankso@70
|
121 ERROR_MSG="\
|
pankso@70
|
122 Impossible de trouver : rootfs.gz\n\n
|
pankso@70
|
123 L'archive du système de fichiers racine n'est pas présente sur le cdrom. \
|
pankso@70
|
124 Il se peut que cette erreur soit due au fait que le LiveCD de SliTaz ne soit \
|
pankso@70
|
125 pas inséré dans le premier lecteur CD/DVD et que le media n'as pas pu être \
|
pankso@70
|
126 correctement monté. Arrêt."
|
pankso@70
|
127 error_message
|
pankso@70
|
128 echo "missing: /media/cdrom/boot/rootfs.gz" >>$LOG
|
pankso@70
|
129 exit 1
|
pankso@70
|
130 fi
|
pankso@70
|
131 }
|
pankso@70
|
132
|
pankso@70
|
133 # Display a list of available partition.
|
pankso@70
|
134 fdisk_list()
|
pankso@70
|
135 {
|
pankso@70
|
136 LIST_PARTITIONS=`fdisk -l | grep ^/dev | sed s/'e Win95'/'e'/g`
|
pankso@70
|
137 $DIALOG --title " Partitions tables " \
|
pankso@70
|
138 --backtitle "$BACKLIST" \
|
pankso@70
|
139 --clear --msgbox "\n
|
pankso@70
|
140 Liste des partitions disponibles :\n\n
|
pankso@70
|
141 $LIST_PARTITIONS" 18 70
|
pankso@70
|
142 }
|
pankso@70
|
143
|
pankso@70
|
144 # We need a partition to install (inputbox).
|
pankso@70
|
145 ask_for_target_dev()
|
pankso@70
|
146 {
|
pankso@70
|
147 exec 3>&1
|
pankso@70
|
148 TARGET_DEV=`$DIALOG --title " Partition racine " \
|
pankso@70
|
149 --backtitle "$BACKLIST" --clear \
|
pankso@70
|
150 --extra-label "List" --extra-button \
|
pankso@70
|
151 --colors --inputbox "\n
|
julien@75
|
152 Veuillez indiquer la partition à utiliser pour installer SliTaz GNU/Linux, \
|
pankso@70
|
153 exemple: '/dev/hda1'. Vous pouvez utiliser le bouton 'List' pour afficher \
|
pankso@70
|
154 une liste des partitions disponibles sur le ou les disques durs et revenir \
|
pankso@70
|
155 ensuite à cet écran. A noter qu'il faut au minimum 100 Mb pour le coeur du \
|
pankso@70
|
156 système et que si vous prévoyez d'installer de nouveaux paquets, vous serez \
|
pankso@70
|
157 plus à l'aise avec environ 400 Mb.\n\n
|
pankso@70
|
158 \Z2Partition à utiliser:\Zn" 18 70 2>&1 1>&3`
|
pankso@70
|
159 retval=$?
|
pankso@70
|
160 exec 3>&-
|
pankso@70
|
161 check_retval
|
pankso@70
|
162 # Display list and comme back.
|
pankso@70
|
163 if [ "$retval" = "3" ]; then
|
pankso@70
|
164 fdisk_list
|
pankso@70
|
165 ask_for_target_dev
|
pankso@70
|
166 fi
|
pankso@70
|
167 # Empty value.
|
pankso@70
|
168 if [ -z $TARGET_DEV ]; then
|
pankso@70
|
169 ask_for_target_dev
|
pankso@70
|
170 fi
|
pankso@70
|
171 # Check if specified device exist in /proc/partitions.
|
pankso@70
|
172 DEV_NAME=${TARGET_DEV#/dev/}
|
pankso@70
|
173 if cat /proc/partitions | grep -q $DEV_NAME; then
|
pankso@70
|
174 echo "ask_for_target_dev: $TARGET_DEV" >>$LOG
|
pankso@70
|
175 else
|
pankso@70
|
176 ERROR_MSG="La partition \Z2$TARGET_DEV\Zn ne semble pas exister."
|
pankso@70
|
177 error_message
|
pankso@70
|
178 ask_for_target_dev
|
pankso@70
|
179 fi
|
pankso@70
|
180 }
|
pankso@70
|
181
|
pankso@70
|
182 # Mkfs if needed/wanted.
|
pankso@70
|
183 ask_for_mkfs_target_dev()
|
pankso@70
|
184 {
|
pankso@70
|
185 $DIALOG --title " Formater " \
|
pankso@70
|
186 --backtitle "$BACKLIST" \
|
pankso@70
|
187 --clear --colors --yesno "\n
|
pankso@70
|
188 SliTaz va être installé sur la partition : $TARGET_DEV\n\n
|
pankso@70
|
189 Vous avez la possibilité de formater la partition en ext3 ou d'utiliser \
|
pankso@70
|
190 le système de fichiers déjà présent sur la partition. Le format ext3 est \
|
julien@75
|
191 un système de fichiers propre à Linux, robuste, stable et jounalisé, c'est \
|
pankso@70
|
192 le format conseillé. Faites attention, si vous formatez toutes les données \
|
julien@75
|
193 de cette partition seront définitivement détruites. Si vous conservez le \
|
julien@75
|
194 système de fichiers actuel, la partition sera nettoyée et les données
|
pankso@70
|
195 utilisateurs conservées (/home).\n\n
|
pankso@70
|
196 \Z2Faut t'il formater la partition en ext3 ?\Zn" 18 70
|
pankso@70
|
197 retval=$?
|
pankso@70
|
198 case $retval in
|
pankso@70
|
199 0)
|
pankso@70
|
200 MKFS_TARGET_DEV="ext3"
|
pankso@70
|
201 echo "mkfs_target_dev: ext3" >>$LOG ;;
|
pankso@70
|
202 1)
|
pankso@70
|
203 CLEAN="clean"
|
pankso@70
|
204 echo "mkfs_target_dev: clean" >>$LOG ;;
|
pankso@70
|
205 255)
|
pankso@70
|
206 echo -e "ESC pressed.\n" && exit 0 ;;
|
pankso@70
|
207 esac
|
pankso@70
|
208
|
pankso@70
|
209 }
|
pankso@70
|
210
|
pankso@70
|
211 # Mount and mkfs with progress.
|
pankso@70
|
212 prepare_target_dev()
|
pankso@70
|
213 {
|
pankso@70
|
214 (
|
pankso@70
|
215 echo "XXX" && echo 30
|
pankso@70
|
216 echo -e "\nPréparation de la partition cible..."
|
pankso@70
|
217 echo "XXX"
|
pankso@70
|
218 # Mount point can be already used.
|
pankso@70
|
219 if mount | grep -q $TARGET_ROOT; then
|
pankso@70
|
220 umount $TARGET_ROOT 2>$LOG
|
pankso@70
|
221 fi
|
pankso@70
|
222 sleep 2
|
pankso@70
|
223
|
pankso@70
|
224 if [ "$MKFS_TARGET_DEV" == "ext3" ]; then
|
pankso@70
|
225 echo "XXX" && echo 60
|
pankso@70
|
226 echo -e "\nExécution de mkfs.ext3 sur $TARGET_DEV"
|
pankso@70
|
227 echo "XXX"
|
pankso@70
|
228 mkfs.ext3 $TARGET_DEV >>$LOG 2>>$LOG
|
pankso@70
|
229 else
|
pankso@70
|
230 echo "XXX" && echo 60
|
pankso@70
|
231 echo -e "\nLa partition ($TARGET_DEV) sera nettoyée..."
|
pankso@70
|
232 echo "XXX"
|
pankso@70
|
233 sleep 2
|
pankso@70
|
234 fi
|
pankso@70
|
235
|
pankso@70
|
236 echo "XXX" && echo 90
|
pankso@70
|
237 echo -e "\nCréation du point de montage: $TARGET_ROOT"
|
pankso@70
|
238 echo "XXX"
|
pankso@70
|
239 mkdir -p $TARGET_ROOT
|
pankso@70
|
240 sleep 2
|
pankso@70
|
241
|
pankso@70
|
242 ) |
|
pankso@70
|
243 $DIALOG --title " Préparation de la cible " \
|
pankso@70
|
244 --backtitle "$BACKLIST" \
|
pankso@70
|
245 --gauge "Target in preparation..." 18 70 0
|
pankso@70
|
246 # Mount target
|
pankso@70
|
247 mount $TARGET_DEV $TARGET_ROOT >>$LOG 2>>$LOG
|
pankso@70
|
248 }
|
pankso@70
|
249
|
pankso@70
|
250 # Ask for hostanme before installing files.
|
pankso@70
|
251 ask_for_hostname()
|
pankso@70
|
252 {
|
pankso@70
|
253 exec 3>&1
|
pankso@70
|
254 HOSTNAME=`$DIALOG --title " Hostname " \
|
pankso@70
|
255 --backtitle "$BACKLIST" --clear \
|
pankso@70
|
256 --colors --inputbox "\n
|
julien@75
|
257 Veuillez indiquer le nom de machine à utiliser pour votre système SliTaz.\
|
pankso@70
|
258 Le nom de machine ou 'hostname' est utilisé pour identifier votre machine sur
|
julien@75
|
259 le réseau et en local par le système (defaut: slitaz). A noter que cette\
|
pankso@70
|
260 valeur peut aussi être modifiée une fois le système installé en utilisant
|
julien@75
|
261 'netbox' graphiquement ou en ligne de commande.\n\n
|
pankso@70
|
262 \Z2Nom de machine:\Zn" 18 70 2>&1 1>&3`
|
pankso@70
|
263 retval=$?
|
pankso@70
|
264 exec 3>&-
|
pankso@70
|
265 check_retval
|
pankso@70
|
266 # Empty value.
|
pankso@70
|
267 if [ -z $HOSTNAME ]; then
|
pankso@70
|
268 HOSTNAME="slitaz"
|
pankso@70
|
269 fi
|
pankso@70
|
270 }
|
pankso@70
|
271
|
pankso@70
|
272 # Get a clean target device (15%).
|
pankso@70
|
273 clean_target()
|
pankso@70
|
274 {
|
pankso@70
|
275 if [ "$CLEAN" == "clean" ]; then
|
pankso@70
|
276 echo "XXX" && echo 15
|
pankso@70
|
277 echo -e "\nNettoyage de la partition racine ($TARGET_DEV)..."
|
pankso@70
|
278 echo "XXX"
|
pankso@70
|
279 cd $TARGET_ROOT
|
pankso@70
|
280 # Keep /home in case of reinstall.
|
pankso@70
|
281 for dir in *
|
pankso@70
|
282 do
|
pankso@70
|
283 case "$dir" in
|
pankso@70
|
284 home)
|
pankso@70
|
285 mv home home.bak
|
pankso@70
|
286 echo "keeping /home found on: $TARGET_DEV" >>$LOG ;;
|
pankso@70
|
287 lost+found)
|
pankso@70
|
288 break ;;
|
pankso@70
|
289 *)
|
pankso@70
|
290 rm -rf $dir 2>$LOG ;;
|
pankso@70
|
291 esac
|
pankso@70
|
292 done
|
pankso@70
|
293 if [ -d $TARGET_ROOT/mklost+found ]; then
|
pankso@70
|
294 mklost+found 2>>$LOG
|
pankso@70
|
295 fi
|
pankso@70
|
296 fi
|
pankso@70
|
297 sleep 2
|
pankso@70
|
298 }
|
pankso@70
|
299
|
pankso@70
|
300 # Kernel is rename to standard vmlinuz-$VERSION.
|
pankso@70
|
301 install_kernel()
|
pankso@70
|
302 {
|
pankso@70
|
303 mkdir -p $TARGET_ROOT/boot
|
pankso@70
|
304 cp /media/cdrom/boot/bzImage $TARGET_ROOT/boot/$KERNEL
|
pankso@70
|
305 echo "install_kernel: $KERNEL" >>$LOG
|
pankso@70
|
306 sleep 2
|
pankso@70
|
307 }
|
pankso@70
|
308
|
pankso@70
|
309 # Copy isolinux r/w files (not syslinux, some files are read only).
|
pankso@70
|
310 copy_bootloaders()
|
pankso@70
|
311 {
|
pankso@70
|
312 if [ -d "/media/cdrom/boot/isolinux" ]; then
|
pankso@70
|
313 mkdir -p $TARGET_ROOT/boot/isolinux
|
pankso@70
|
314 cp -a /media/cdrom/boot/isolinux/*.cfg $TARGET_ROOT/boot/isolinux
|
pankso@70
|
315 cp -a /media/cdrom/boot/isolinux/*.kbd $TARGET_ROOT/boot/isolinux
|
pankso@70
|
316 cp -a /media/cdrom/boot/isolinux/*.txt $TARGET_ROOT/boot/isolinux
|
pankso@70
|
317 cp -a /media/cdrom/boot/isolinux/*.bin $TARGET_ROOT/boot/isolinux
|
pankso@70
|
318 cp -a /media/cdrom/boot/isolinux/*.msg $TARGET_ROOT/boot/isolinux
|
pankso@70
|
319 cp -a /media/cdrom/boot/isolinux/*.lss $TARGET_ROOT/boot/isolinux
|
pankso@70
|
320 cp -a /media/cdrom/boot/isolinux/*.c32 $TARGET_ROOT/boot/isolinux
|
pankso@70
|
321 fi
|
pankso@70
|
322 }
|
pankso@70
|
323
|
pankso@70
|
324 # Extract lzma'ed or gziped rootfs.
|
pankso@70
|
325 extract_rootfs()
|
pankso@70
|
326 {
|
pankso@70
|
327 cd $TARGET_ROOT
|
pascal@71
|
328 (zcat rootfs.gz 2>/dev/null || lzma d rootfs.gz -so 2>/dev/null || \
|
pascal@71
|
329 cat rootfs.gz) 2>>$LOG | cpio -id 2>>$LOG
|
pascal@71
|
330 rm -f rootfs.gz
|
pascal@71
|
331 # remove link to cdrom
|
pascal@71
|
332 [ -d cdrom ] && rmdir cdrom
|
pascal@71
|
333 if [ -L usr ]; then
|
pascal@71
|
334 rm usr
|
pascal@71
|
335 cp -a /media/cdrom/usr .
|
pascal@71
|
336 fi
|
pascal@71
|
337 # unpack /usr
|
pascal@71
|
338 sqfs="/media/cdrom/usr.sqfs"
|
pascal@71
|
339 [ -f $sqfs ] || sqfs=".usr.sqfs"
|
pascal@71
|
340 if [ -f $sqfs ]; then
|
pascal@71
|
341 rmdir usr
|
pascal@71
|
342 sbin/unsquashfs -d usr $sqfs
|
pascal@71
|
343 [ "$sqfs" = ".usr.sqfs" ] && rm -f $sqfs
|
pascal@71
|
344 fi
|
pascal@71
|
345 if [ -d usr/.moved ]; then
|
pascal@71
|
346 ( cd usr/.moved ; find * -print ) | \
|
pascal@71
|
347 while read file; do
|
pascal@71
|
348 [ -L "$file" ] || continue
|
pascal@71
|
349 rm -f "$file"
|
pascal@71
|
350 mv "usr/.moved/$file" "$file"
|
pascal@71
|
351 done
|
pascal@71
|
352 rm -rf usr/.moved
|
pascal@71
|
353 fi
|
pankso@70
|
354 }
|
pankso@70
|
355
|
pankso@70
|
356 # /etc/skel (60%)
|
pankso@70
|
357 gen_etc_skel()
|
pankso@70
|
358 {
|
pankso@70
|
359 #Maybe we don't have /home/hacker directory
|
pankso@70
|
360 if [ -d $TARGET_ROOT/home/hacker ]; then
|
pankso@70
|
361 echo "XXX" && echo 60
|
pankso@70
|
362 echo -e "\nCopie des fichiers utilisateurs par défaut (/etc/skel)..."
|
pankso@70
|
363 echo "XXX"
|
pankso@70
|
364 cp -a $TARGET_ROOT/home/hacker $TARGET_ROOT/etc/skel
|
pankso@70
|
365 else
|
pankso@70
|
366 echo "XXX" && echo 60
|
pankso@70
|
367 echo -e "\nCréation du répertoire (/etc/skel)..."
|
pankso@70
|
368 echo "XXX"
|
pankso@70
|
369 mkdir -p $TARGET_ROOT/etc/skel \
|
pankso@70
|
370 $TARGET_ROOT/etc/Documents \
|
pankso@70
|
371 $TARGET_ROOT/etc/skel/Images \
|
pankso@70
|
372 $TARGET_ROOT/etc/skel/.local/bin \
|
pankso@70
|
373 $TARGET_ROOT/etc/skel/.local/share
|
pankso@70
|
374 fi
|
pankso@70
|
375 sleep 2
|
pankso@70
|
376 }
|
pankso@70
|
377
|
pankso@70
|
378 # Pre configure freshly installed system (70 - 90%).
|
pankso@70
|
379 pre_config_system()
|
pankso@70
|
380 {
|
pankso@70
|
381 cd $TARGET_ROOT
|
pankso@70
|
382 # Restore backup of existing /home if exist.
|
pankso@70
|
383 # (created by prepare_target_dev)
|
pankso@70
|
384 if [ -d home.bak ]; then
|
pankso@70
|
385 echo "XXX" && echo 75
|
julien@75
|
386 echo -e "\nRestauration du répertoire /home..."
|
pankso@70
|
387 echo "XXX"
|
pankso@70
|
388 rm -rf home
|
pankso@70
|
389 mv home.bak home
|
pankso@70
|
390 sleep 2
|
pankso@70
|
391 fi
|
pankso@70
|
392 # Add root device to CHECK_FS in rcS.conf to check filesystem
|
pankso@70
|
393 # on each boot.
|
pankso@70
|
394 echo "XXX" && echo 80
|
pankso@70
|
395 echo -e "\nAjout de $TARGET_DEV à CHECK_FS du fichier /etc/rcS.conf..."
|
pankso@70
|
396 echo "XXX"
|
pankso@70
|
397 sed -i s#'CHECK_FS=\"\"'#"CHECK_FS=\"$TARGET_DEV\""# etc/rcS.conf
|
pankso@70
|
398 sleep 2
|
pankso@70
|
399 # Set hostname.
|
pankso@70
|
400 echo "XXX" && echo 85
|
pankso@70
|
401 echo -e "\nConfiguration du nom de machine: $HOSTNAME"
|
pankso@70
|
402 echo "XXX"
|
pankso@70
|
403 echo $HOSTNAME > etc/hostname
|
pankso@70
|
404 sleep 2
|
pankso@70
|
405 }
|
pankso@70
|
406
|
pankso@70
|
407 # Determin GRUB partition number and GRUB disk number.
|
pankso@70
|
408 grub_config()
|
pankso@70
|
409 {
|
pankso@70
|
410 DISK_LETTER=${TARGET_DEV#/dev/[h-s]d}
|
pankso@70
|
411 DISK_LETTER=${DISK_LETTER%[0-9]}
|
pankso@70
|
412 GRUB_PARTITION=$((${TARGET_DEV#/dev/[h-s]d[a-z]}-1))
|
pankso@70
|
413 for disk in a b c d e f g h
|
pankso@70
|
414 do
|
pankso@70
|
415 nb=$(($nb+1))
|
pankso@70
|
416 if [ "$disk" = "$DISK_LETTER" ]; then
|
pankso@70
|
417 GRUB_DISK=$(($nb-1))
|
pankso@70
|
418 break
|
pankso@70
|
419 fi
|
pankso@70
|
420 done
|
pankso@70
|
421 GRUB_ROOT="(hd${GRUB_DISK},${GRUB_PARTITION})"
|
pankso@70
|
422 # Creat the target GRUB configuration.
|
pankso@70
|
423 mkdir -p $TARGET_ROOT/boot/grub
|
pankso@70
|
424 cat > $TARGET_ROOT/boot/grub/menu.lst << _EOF_
|
pankso@70
|
425 # /boot/grub/menu.lst: GRUB boot loader configuration.
|
pankso@70
|
426 #
|
pankso@70
|
427
|
pankso@70
|
428 # By default, boot the first entry.
|
pankso@70
|
429 default 0
|
pankso@70
|
430
|
pankso@70
|
431 # Boot automatically after 8 secs.
|
pankso@70
|
432 timeout 8
|
pankso@70
|
433
|
pankso@70
|
434 # Change the colors.
|
pankso@70
|
435 color yellow/brown light-green/black
|
pankso@70
|
436
|
pankso@70
|
437 # For booting SliTaz from : $TARGET_DEV
|
pankso@70
|
438 #
|
pankso@70
|
439 title SliTaz GNU/Linux (cooking) (Kernel $KERNEL)
|
pankso@70
|
440 root $GRUB_ROOT
|
pankso@70
|
441 kernel /boot/$KERNEL root=$TARGET_DEV
|
pankso@70
|
442
|
pankso@70
|
443 _EOF_
|
pankso@70
|
444 # log
|
pankso@70
|
445 echo "grub_config: $TARGET_ROOT/boot/grub/menu.lst" >>$LOG
|
pankso@70
|
446 sleep 2
|
pankso@70
|
447 }
|
pankso@70
|
448
|
pankso@70
|
449 # Files install with gauge, calling for functions or with cmds.
|
pankso@70
|
450 install_files()
|
pankso@70
|
451 {
|
pankso@70
|
452 (
|
pankso@70
|
453
|
pankso@70
|
454 echo "XXX" && echo 10
|
pankso@70
|
455 echo -e "\nNettoyage de la partition racine si nécessaire..."
|
pankso@70
|
456 echo "XXX"
|
pankso@70
|
457 clean_target
|
pankso@70
|
458
|
pankso@70
|
459 echo "XXX" && echo 20
|
julien@75
|
460 echo -e "\nInstallation du noyau ($KERNEL)..."
|
pankso@70
|
461 echo "XXX"
|
pankso@70
|
462 install_kernel
|
pankso@70
|
463
|
pankso@70
|
464 echo "XXX" && echo 30
|
pankso@70
|
465 echo -e "\nCopie des bootloaders syslinux/isolinux..."
|
pankso@70
|
466 echo "XXX"
|
pankso@70
|
467 copy_bootloaders
|
pankso@70
|
468
|
pankso@70
|
469 echo "XXX" && echo 40
|
pankso@70
|
470 echo -e "\nCopie du système compressé (rootfs.gz)..."
|
pankso@70
|
471 echo "XXX"
|
pankso@70
|
472 cp /media/cdrom/boot/rootfs.gz $TARGET_ROOT
|
pankso@70
|
473 sleep 2
|
pankso@70
|
474
|
pankso@70
|
475 echo "XXX" && echo 50
|
pankso@70
|
476 echo -e "\nExtraction du système racine..."
|
pankso@70
|
477 echo "XXX"
|
pankso@70
|
478 extract_rootfs
|
pankso@70
|
479
|
pankso@70
|
480 echo "XXX" && echo 60
|
pankso@70
|
481 echo -e "\nCopie des fichiers utilisateurs par défaut (/etc/skel)..."
|
pankso@70
|
482 echo "XXX"
|
pankso@70
|
483 gen_etc_skel
|
pankso@70
|
484 sleep 2
|
pankso@70
|
485
|
pankso@70
|
486 echo "XXX" && echo 70
|
pankso@70
|
487 echo -e "\nPreconfiguration du système..."
|
pankso@70
|
488 echo "XXX"
|
pankso@70
|
489 pre_config_system
|
pankso@70
|
490
|
pankso@70
|
491 echo "XXX" && echo 90
|
pankso@70
|
492 echo -e "\nCréation du fichier de configuration de GRUB (menu.lst)..."
|
pankso@70
|
493 echo "XXX"
|
pankso@70
|
494 grub_config
|
pankso@70
|
495
|
pankso@70
|
496 echo "XXX" && echo 100
|
pankso@70
|
497 echo -e "\nFin de l'installation des fichiers..."
|
pankso@70
|
498 echo "XXX"
|
pankso@70
|
499 echo "install_files: OK" >>$LOG
|
pankso@70
|
500 sleep 4
|
pankso@70
|
501
|
pankso@70
|
502 ) |
|
pankso@70
|
503 $DIALOG --title " Installation des fichiers " \
|
pankso@70
|
504 --backtitle "$BACKLIST" \
|
pankso@70
|
505 --gauge "Starting to install files..." 18 70 0
|
pankso@70
|
506 }
|
pankso@70
|
507
|
pankso@70
|
508 # GRUB info with disk name used for grub-install
|
pankso@70
|
509 grub_install()
|
pankso@70
|
510 {
|
pankso@70
|
511 TARGET_DISK=`echo $TARGET_DEV | sed s/"[0-9]"/''/`
|
pankso@70
|
512 $DIALOG --title " GRUB install " \
|
pankso@70
|
513 --backtitle "$BACKLIST" \
|
pankso@70
|
514 --clear --colors --yesno "\n
|
pankso@70
|
515 Avant de redémarrer sur votre nouveau système SliTaz GNU/Linux, veuillez \
|
pankso@70
|
516 vous assurer qu'un gestionnaire de démarrage est bien installé. Si ce n'est \
|
pankso@70
|
517 pas le cas vous pouvez répondre oui et installer GRUB. Si vous n'installez \
|
julien@75
|
518 pas GRUB, un fichier de configuration (menu.lst) a été généré pendant \
|
pankso@70
|
519 l'installation, il contient les lignes qui permettent de démarrer SliTaz.\n\n
|
pankso@70
|
520 Une fois installé, GRUB peut facilement être reconfiguré et propose un SHell \
|
pankso@70
|
521 interactif au boot.\n\n
|
pankso@70
|
522 \Z2Faut t'il installer GRUB sur: $TARGET_DISK ?\Zn" 18 70
|
pankso@70
|
523 retval=$?
|
pankso@70
|
524 case $retval in
|
pankso@70
|
525 0)
|
pankso@70
|
526 (
|
pankso@70
|
527 echo "XXX" && echo 50
|
pankso@70
|
528 echo -e "\nExécution de grub-install sur : $TARGET_DISK..."
|
pankso@70
|
529 echo "XXX"
|
pankso@70
|
530 grub-install --no-floppy \
|
pankso@70
|
531 --root-directory=$TARGET_ROOT $TARGET_DISK 2>>$LOG
|
pankso@70
|
532 echo "XXX" && echo 100
|
pankso@70
|
533 echo -e "\nFin de l'installation..."
|
pankso@70
|
534 echo "XXX"
|
pankso@70
|
535 sleep 2
|
pankso@70
|
536 ) |
|
pankso@70
|
537 $DIALOG --title " GRUB install " \
|
pankso@70
|
538 --backtitle "$BACKLIST" \
|
pankso@70
|
539 --gauge "Installation de GRUB..." 18 70 0 ;;
|
pankso@70
|
540 1)
|
pankso@70
|
541 echo "grub_install: NO" >>$LOG ;;
|
pankso@70
|
542 255)
|
pankso@70
|
543 echo -e "ESC pressed.\n" && exit 0 ;;
|
pankso@70
|
544 esac
|
pankso@70
|
545 }
|
pankso@70
|
546
|
pankso@70
|
547 # Copy log file, umount target and eject cdrom
|
pankso@70
|
548 umount_devices()
|
pankso@70
|
549 {
|
pankso@70
|
550 (
|
pankso@70
|
551 echo "XXX" && echo 25
|
pankso@70
|
552 echo -e "\nCopie du fichier de log ($LOG)..."
|
pankso@70
|
553 echo "XXX"
|
pankso@70
|
554 cp -a $LOG $TARGET_ROOT/var/log
|
pankso@70
|
555 sleep 2
|
pankso@70
|
556 echo "XXX" && echo 50
|
pankso@70
|
557 echo -e "\nDémontage de la cible ($TARGET_DEV)..."
|
pankso@70
|
558 echo "XXX"
|
pankso@70
|
559 if mount | grep -q $TARGET_ROOT; then
|
pankso@70
|
560 umount $TARGET_ROOT 2>/dev/null
|
pankso@70
|
561 fi
|
pankso@70
|
562 echo "XXX" && echo 75
|
pankso@70
|
563 echo -e "\nDémontage et éjection du cdrom..."
|
pankso@70
|
564 echo "XXX"
|
pankso@70
|
565 if mount | grep -q /media/cdrom; then
|
pankso@70
|
566 umount /media/cdrom
|
pankso@70
|
567 eject
|
pankso@70
|
568 fi
|
pankso@70
|
569 sleep 2
|
pankso@70
|
570 echo "XXX" && echo 100
|
pankso@70
|
571 echo -e "\n$TITLE..."
|
pankso@70
|
572 echo "XXX"
|
pankso@70
|
573 sleep 2
|
pankso@70
|
574 ) |
|
pankso@70
|
575 $DIALOG --title " $TITLE " \
|
pankso@70
|
576 --backtitle "$BACKLIST" \
|
pankso@70
|
577 --gauge "$TITLE starting..." 18 70 0
|
pankso@70
|
578 }
|
pankso@70
|
579
|
pankso@70
|
580 # End of installation
|
pankso@70
|
581 end_of_install()
|
pankso@70
|
582 {
|
pankso@70
|
583 echo "end_of_install: `date`" >>$LOG
|
pankso@70
|
584 $DIALOG --title " Installation terminée " \
|
pankso@70
|
585 --backtitle "$BACKLIST" \
|
pankso@70
|
586 --yes-label "Exit" \
|
pankso@70
|
587 --no-label "Reboot" \
|
pankso@70
|
588 --clear --colors --yesno "\n
|
pankso@70
|
589 L'installation est terminée. Vous pouvez dès maintenant redémarrer (reboot) \
|
pankso@70
|
590 sur votre nouveau système SliTaz GNU/Linux et commencer à finement le \
|
pankso@70
|
591 configurer en fonction de vos besoins et préférences. Vous trouverez de l'aide \
|
pankso@70
|
592 ou un support technique gratuit via la liste de discussion et/ou le forum \
|
pankso@70
|
593 officiel du projet. Pour bien commencer à utiliser le système, vous pouvez \
|
pankso@70
|
594 vous référer aux documents du Handbook de SliTaz et utiliser le gestionnaire \
|
pankso@70
|
595 de paquets Tazpkg pour installer de nouveaux logiciels prêts à savourer." 18 70
|
pankso@70
|
596 retval=$?
|
pankso@70
|
597 case $retval in
|
pankso@70
|
598 0)
|
pankso@70
|
599 TITLE="Exiting"
|
pankso@70
|
600 umount_devices ;;
|
pankso@70
|
601 1)
|
pankso@70
|
602 TITLE="Rebooting"
|
pankso@70
|
603 umount_devices
|
pankso@70
|
604 reboot || reboot -f ;;
|
pankso@70
|
605 255)
|
pankso@70
|
606 echo -e "ESC pressed.\n" && exit 0 ;;
|
pankso@70
|
607 esac
|
pankso@70
|
608 }
|
pankso@70
|
609
|
pankso@70
|
610 #####################
|
pankso@70
|
611 # Upgrade functions #
|
pankso@70
|
612 #####################
|
pankso@70
|
613
|
pankso@70
|
614 # Start upgrade with basic informations (TODO).
|
pankso@70
|
615 start_upgrade()
|
pankso@70
|
616 {
|
pankso@70
|
617 $DIALOG --title " Mise à jour du système " \
|
pankso@70
|
618 --backtitle "$BACKLIST" \
|
pankso@70
|
619 --clear --colors --yesno "\n
|
pankso@70
|
620 La fonction de mise à jour complète du système n'est pas encore implémentée.
|
pankso@70
|
621 \n\n
|
pankso@70
|
622 * Montage de la partition.\n
|
pankso@70
|
623 * Sauvegarde des fichiers de configuration.\n
|
pankso@70
|
624 * Créer un diff entre les paquets du cdrom et ceux installés.\n
|
pankso@70
|
625 * Nettoyer la partition.\n
|
pankso@70
|
626 * Installer la version du cdrom.\n
|
pankso@70
|
627 * Restauration des fichiers de config.\n
|
pankso@70
|
628 * Réinstaller les paquets manquants depuis le miroir." 18 70
|
pankso@70
|
629 retval=$?
|
pankso@70
|
630 #check_retval
|
pankso@70
|
631 #echo "start_upgarde: `date`" > $LOG
|
pankso@70
|
632 exit 0
|
pankso@70
|
633 }
|
pankso@70
|
634
|
pankso@70
|
635 ######################
|
pankso@70
|
636 # Installer sequence #
|
pankso@70
|
637 ######################
|
pankso@70
|
638
|
pankso@70
|
639 case $ACTION in
|
pankso@70
|
640 upgrade)
|
pankso@70
|
641 check_root
|
pankso@70
|
642 start_upgrade
|
pankso@70
|
643 #mount_cdrom
|
pankso@70
|
644 ;;
|
pankso@70
|
645 install|*)
|
pankso@70
|
646 check_root
|
pankso@70
|
647 start_install
|
pankso@70
|
648 mount_cdrom
|
pankso@70
|
649 ask_for_target_dev
|
pankso@70
|
650 ask_for_mkfs_target_dev
|
pankso@70
|
651 prepare_target_dev
|
pankso@70
|
652 ask_for_hostname
|
pankso@70
|
653 install_files
|
pankso@70
|
654 grub_install
|
pankso@70
|
655 end_of_install
|
pankso@70
|
656 ;;
|
pankso@70
|
657 esac
|
pankso@70
|
658
|
pankso@70
|
659 exit 0
|