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
|
pascal@205
|
5 # English but displayed messages are in French. The script starts with a
|
MikeDSmith25@252
|
6 # few main variables, then all the functions and then a sequence of functions.
|
pankso@70
|
7 #
|
pankso@402
|
8 # (C) 2007-2009 SliTaz - GNU General Public License v3.
|
pankso@70
|
9 #
|
pankso@70
|
10 # Author : Christophe Lincoln <pankso@slitaz.org>
|
pankso@70
|
11 #
|
pankso@402
|
12 VERSION=2.0
|
pankso@236
|
13
|
pankso@402
|
14 : ${DIALOG=dialog}
|
pankso@70
|
15
|
pankso@70
|
16 # We need to know cdrom device and kernel version string to copy files.
|
pankso@70
|
17 DRIVE_NAME=`cat /proc/sys/dev/cdrom/info | grep "drive name" | cut -f 3`
|
pankso@70
|
18 CDROM=/dev/$DRIVE_NAME
|
pankso@70
|
19 KERNEL=vmlinuz-`uname -r`
|
pankso@70
|
20 TARGET_ROOT=/mnt/target
|
pankso@70
|
21 LOG=/var/log/slitaz-installer.log
|
pankso@70
|
22 BACKLIST="SliTaz GNU/Linux installer"
|
pankso@402
|
23 ACTION=$1
|
pankso@70
|
24
|
pankso@70
|
25 #######################
|
pankso@70
|
26 # Installer functions #
|
pankso@70
|
27 #######################
|
pankso@70
|
28
|
paul@319
|
29 # Messages language setting.
|
pascal@205
|
30 set_messages()
|
pascal@205
|
31 {
|
pankso@288
|
32 case $LANG in
|
pankso@288
|
33 de*)
|
pankso@343
|
34 . /usr/share/slitaz/messages/de/installer.msg ;;
|
pankso@288
|
35 fr*)
|
pankso@343
|
36 . /usr/share/slitaz/messages/fr/installer.msg ;;
|
pankso@355
|
37 hu*)
|
pankso@355
|
38 . /usr/share/slitaz/messages/hu/installer.msg ;;
|
pankso@355
|
39 pt*)
|
pankso@355
|
40 . /usr/share/slitaz/messages/pt/installer.msg ;;
|
pankso@288
|
41 *)
|
pankso@343
|
42 . /usr/share/slitaz/messages/en/installer.msg ;;
|
pankso@288
|
43 esac
|
pascal@205
|
44 }
|
pascal@205
|
45
|
pankso@70
|
46 # Display error message.
|
pankso@70
|
47 error_message()
|
pankso@70
|
48 {
|
paul@153
|
49 $DIALOG --title " Error " \
|
pankso@70
|
50 --colors --backtitle "$BACKLIST" \
|
pankso@70
|
51 --clear --msgbox "\n$ERROR_MSG" 18 70
|
pankso@70
|
52 }
|
pankso@70
|
53
|
pankso@70
|
54 # Exit install if user is not root.
|
pankso@70
|
55 check_root()
|
pankso@70
|
56 {
|
pankso@70
|
57 if test $(id -u) != 0 ; then
|
pankso@70
|
58 ERROR_MSG="\
|
pankso@148
|
59 [\Z6en\Zn] You must be root administrator to start SliTaz installer, please \
|
pankso@148
|
60 use 'su' to get a root SHell and restart installation.\n\n
|
pankso@70
|
61 [\Z6fr\Zn] Vous devez être root pour installer SLiTaz GNU/Linux. Vous pouvez \
|
pankso@70
|
62 utiliser 'su' suivi du mot de passe administrateur pour devenir root \
|
pankso@148
|
63 et relancer l'installation."
|
pankso@70
|
64 error_message
|
pankso@70
|
65 exit 0
|
pankso@70
|
66 fi
|
pankso@70
|
67 }
|
pankso@70
|
68
|
pankso@70
|
69 # This function is used after each screen to contine or abort install.
|
pankso@70
|
70 check_retval()
|
pankso@70
|
71 {
|
pankso@94
|
72 case $retval in
|
pankso@94
|
73 0)
|
pankso@94
|
74 continue ;;
|
pankso@94
|
75 1)
|
paul@153
|
76 echo -e "\nVoluntary exit.\n" && exit 0 ;;
|
pankso@94
|
77 3)
|
pankso@94
|
78 continue ;;
|
pankso@94
|
79 255)
|
pankso@94
|
80 echo -e "ESC pressed.\n" && exit 0 ;;
|
pankso@94
|
81 esac
|
pankso@70
|
82 }
|
pankso@70
|
83
|
MikeDSmith25@252
|
84 # Start install with basic information.
|
pankso@94
|
85 start_installer()
|
pankso@70
|
86 {
|
pankso@148
|
87 $DIALOG --title " Install or Upgrade " \
|
pankso@70
|
88 --backtitle "$BACKLIST" \
|
pankso@94
|
89 --extra-button --extra-label "Upgrade" \
|
pankso@402
|
90 --ok-label "Install" \
|
pankso@70
|
91 --clear --colors --yesno "$START_INSTALL_MSG" 18 70
|
pankso@70
|
92 retval=$?
|
pankso@94
|
93 case $retval in
|
pankso@94
|
94 0)
|
pankso@94
|
95 ACTION=install ;;
|
pankso@94
|
96 1)
|
paul@153
|
97 echo -e "\nVoluntary exit.\n" && exit 0 ;;
|
pankso@94
|
98 3)
|
pankso@94
|
99 ACTION=upgrade ;;
|
pankso@94
|
100 255)
|
pankso@94
|
101 echo -e "ESC pressed.\n" && exit 0 ;;
|
pankso@94
|
102 esac
|
pankso@94
|
103 echo "start_installer: `date`" > $LOG
|
pankso@70
|
104 }
|
pankso@70
|
105
|
paul@319
|
106 # Mount cdrom and verify if it's really SliTaz CD.
|
pankso@70
|
107 mount_cdrom()
|
pankso@70
|
108 {
|
pankso@70
|
109 ERROR_MSG=""
|
pankso@70
|
110 (
|
pankso@70
|
111 echo "XXX" && echo 30
|
pankso@148
|
112 echo -e "\nCreating mount point (/media/cdrom)..."
|
pankso@198
|
113 echo "XXX"
|
pankso@70
|
114 mkdir -p /media/cdrom
|
pankso@70
|
115 sleep 1
|
pankso@70
|
116 echo "XXX" && echo 60
|
paul@153
|
117 echo -e "\nMounting cdrom ($CDROM)..."
|
pankso@70
|
118 echo "XXX"
|
pankso@70
|
119 mount -t iso9660 $CDROM /media/cdrom 2>>$LOG
|
pankso@70
|
120 echo "XXX" && echo 90
|
pankso@148
|
121 echo -e "\nChecking installation media..."
|
pankso@70
|
122 echo "XXX"
|
pankso@70
|
123 sleep 2
|
pankso@70
|
124 ) |
|
paul@153
|
125 $DIALOG --title " Mounting cdrom " \
|
pankso@70
|
126 --backtitle "$BACKLIST" \
|
pankso@148
|
127 --gauge "Preparing the installation media..." 18 70 0
|
paul@319
|
128 # Exit with error msg if no rootfs.gz found.
|
pankso@70
|
129 if [ ! -f /media/cdrom/boot/rootfs.gz ]; then
|
pankso@148
|
130 ERROR_MSG="$MOUNT_CDROM_ERROR_MSG"
|
pankso@70
|
131 error_message
|
pankso@70
|
132 echo "missing: /media/cdrom/boot/rootfs.gz" >>$LOG
|
pankso@70
|
133 exit 1
|
pankso@70
|
134 fi
|
pankso@70
|
135 }
|
pankso@70
|
136
|
MikeDSmith25@252
|
137 # Display a list of available partitions.
|
pankso@70
|
138 fdisk_list()
|
pankso@70
|
139 {
|
pankso@70
|
140 LIST_PARTITIONS=`fdisk -l | grep ^/dev | sed s/'e Win95'/'e'/g`
|
paul@153
|
141 $DIALOG --title " Partition tables " \
|
pankso@70
|
142 --backtitle "$BACKLIST" \
|
pankso@70
|
143 --clear --msgbox "\n
|
paul@153
|
144 Available partitions :\n\n
|
pankso@70
|
145 $LIST_PARTITIONS" 18 70
|
pankso@70
|
146 }
|
pankso@70
|
147
|
MikeDSmith25@252
|
148 # We need a partition to install to (inputbox).
|
pankso@70
|
149 ask_for_target_dev()
|
pankso@70
|
150 {
|
pankso@70
|
151 exec 3>&1
|
paul@319
|
152 TARGET_DEV=`$DIALOG --title " Root Partition " \
|
pankso@70
|
153 --backtitle "$BACKLIST" --clear \
|
pankso@70
|
154 --extra-label "List" --extra-button \
|
pankso@149
|
155 --colors --inputbox "$ASK_FOR_TARGET_DEV_MSG" 18 70 2>&1 1>&3`
|
pankso@70
|
156 retval=$?
|
pankso@70
|
157 exec 3>&-
|
pankso@70
|
158 check_retval
|
MikeDSmith25@252
|
159 # Display list and come back.
|
pankso@70
|
160 if [ "$retval" = "3" ]; then
|
pankso@70
|
161 fdisk_list
|
pankso@70
|
162 ask_for_target_dev
|
pankso@70
|
163 fi
|
pankso@70
|
164 # Empty value.
|
pankso@70
|
165 if [ -z $TARGET_DEV ]; then
|
pankso@70
|
166 ask_for_target_dev
|
pankso@70
|
167 fi
|
pascal@205
|
168 set_messages
|
MikeDSmith25@252
|
169 # Check if specified device exists in /proc/partitions.
|
pankso@70
|
170 DEV_NAME=${TARGET_DEV#/dev/}
|
pankso@70
|
171 if cat /proc/partitions | grep -q $DEV_NAME; then
|
pascal@273
|
172 if [ "$DEV_NAME" = "$TARGET_DEV" ]; then
|
pascal@273
|
173 TARGET_DEV="/dev/$DEV_NAME"
|
pascal@273
|
174 fi
|
pankso@70
|
175 echo "ask_for_target_dev: $TARGET_DEV" >>$LOG
|
pankso@70
|
176 else
|
paul@153
|
177 ERROR_MSG="Partition \Z2$TARGET_DEV\Zn doesn't exist."
|
pankso@70
|
178 error_message
|
pankso@70
|
179 ask_for_target_dev
|
pankso@70
|
180 fi
|
pankso@70
|
181 }
|
pankso@70
|
182
|
pankso@70
|
183 # Mkfs if needed/wanted.
|
pankso@70
|
184 ask_for_mkfs_target_dev()
|
pankso@70
|
185 {
|
pankso@149
|
186 $DIALOG --title " Format " \
|
pankso@70
|
187 --backtitle "$BACKLIST" \
|
pankso@149
|
188 --clear --colors --yesno "$ASK_FOR_MKFS_TARGET_DEV_MSG" 18 70
|
pankso@70
|
189 retval=$?
|
pankso@70
|
190 case $retval in
|
pankso@70
|
191 0)
|
pankso@70
|
192 MKFS_TARGET_DEV="ext3"
|
pankso@70
|
193 echo "mkfs_target_dev: ext3" >>$LOG ;;
|
pankso@70
|
194 1)
|
pankso@70
|
195 CLEAN="clean"
|
pankso@70
|
196 echo "mkfs_target_dev: clean" >>$LOG ;;
|
pankso@70
|
197 255)
|
pankso@70
|
198 echo -e "ESC pressed.\n" && exit 0 ;;
|
pankso@70
|
199 esac
|
pankso@198
|
200
|
pankso@70
|
201 }
|
pankso@70
|
202
|
pankso@70
|
203 # Mount and mkfs with progress.
|
pankso@70
|
204 prepare_target_dev()
|
pankso@70
|
205 {
|
pankso@70
|
206 (
|
pankso@70
|
207 echo "XXX" && echo 30
|
pankso@149
|
208 echo -e "\nPreparing target partition..."
|
pankso@70
|
209 echo "XXX"
|
pankso@70
|
210 # Mount point can be already used.
|
pankso@70
|
211 if mount | grep -q $TARGET_ROOT; then
|
pankso@70
|
212 umount $TARGET_ROOT 2>$LOG
|
pankso@70
|
213 fi
|
pankso@70
|
214 sleep 2
|
pankso@198
|
215
|
pankso@70
|
216 if [ "$MKFS_TARGET_DEV" == "ext3" ]; then
|
pankso@70
|
217 echo "XXX" && echo 60
|
pankso@149
|
218 echo -e "\nExecuting mkfs.ext3 on $TARGET_DEV"
|
pankso@198
|
219 echo "XXX"
|
pankso@70
|
220 mkfs.ext3 $TARGET_DEV >>$LOG 2>>$LOG
|
pankso@70
|
221 else
|
pankso@70
|
222 echo "XXX" && echo 60
|
pankso@149
|
223 echo -e "\nThe partition ($TARGET_DEV) will be cleaned..."
|
pankso@70
|
224 echo "XXX"
|
pankso@70
|
225 sleep 2
|
pankso@70
|
226 fi
|
pankso@198
|
227
|
pankso@70
|
228 echo "XXX" && echo 90
|
pankso@149
|
229 echo -e "\nCreating mount point: $TARGET_ROOT"
|
pankso@198
|
230 echo "XXX"
|
pankso@70
|
231 mkdir -p $TARGET_ROOT
|
pankso@70
|
232 sleep 2
|
pankso@198
|
233
|
pankso@70
|
234 ) |
|
paul@319
|
235 $DIALOG --title " Prepare the target " \
|
pankso@70
|
236 --backtitle "$BACKLIST" \
|
pankso@70
|
237 --gauge "Target in preparation..." 18 70 0
|
paul@319
|
238 # Mount target.
|
pankso@70
|
239 mount $TARGET_DEV $TARGET_ROOT >>$LOG 2>>$LOG
|
pankso@70
|
240 }
|
pankso@70
|
241
|
MikeDSmith25@252
|
242 # Ask for hostname before installing files.
|
pankso@70
|
243 ask_for_hostname()
|
pankso@70
|
244 {
|
pankso@70
|
245 exec 3>&1
|
pankso@70
|
246 HOSTNAME=`$DIALOG --title " Hostname " \
|
pankso@70
|
247 --backtitle "$BACKLIST" --clear \
|
pankso@149
|
248 --colors --inputbox "$ASK_FOR_HOSTNAME_MSG" 18 70 "slitaz" 2>&1 1>&3`
|
pankso@70
|
249 retval=$?
|
pankso@70
|
250 exec 3>&-
|
pankso@70
|
251 check_retval
|
pankso@70
|
252 # Empty value.
|
pankso@70
|
253 if [ -z $HOSTNAME ]; then
|
pankso@70
|
254 HOSTNAME="slitaz"
|
pankso@70
|
255 fi
|
pankso@70
|
256 }
|
pankso@70
|
257
|
pankso@402
|
258 # Ask for root password and default user settings.
|
pankso@402
|
259 ask_for_users_settings()
|
pankso@402
|
260 {
|
pankso@402
|
261 # Root passwd
|
pankso@402
|
262 exec 3>&1
|
pankso@402
|
263 ROOT_PASSWD=`$DIALOG --title " Root password " \
|
pankso@402
|
264 --backtitle "$BACKLIST" --clear \
|
pankso@402
|
265 --colors --nocancel --inputbox "
|
pankso@402
|
266 The root administrator privilege let you manage and configure the full \
|
pankso@402
|
267 system, root user can damage your system so you should put setup a strong \
|
pankso@402
|
268 password with special characters and/or numbers.
|
pankso@402
|
269
|
pankso@402
|
270 \Z2Please specify the Root password for your new system:\Zn" 18 70 "root" 2>&1 1>&3`
|
pankso@402
|
271 retval=$?
|
pankso@402
|
272 exec 3>&-
|
pankso@402
|
273 check_retval
|
pankso@402
|
274 # Pevent empty value.
|
pankso@402
|
275 if [ -z $ROOT_PASSWD ]; then
|
pankso@402
|
276 ROOT_PASSWD="root"
|
pankso@402
|
277 fi
|
pankso@402
|
278 # Default user
|
pankso@402
|
279 exec 3>&1
|
pankso@402
|
280 USER=`$DIALOG --title " User name " \
|
pankso@402
|
281 --backtitle "$BACKLIST" --clear \
|
pankso@402
|
282 --colors --nocancel --inputbox "
|
pankso@402
|
283 The default user for the system will have his personnal files stored \
|
pankso@402
|
284 in /home/*user* and will automaticaly be add to the audio group.
|
pankso@402
|
285
|
pankso@402
|
286 \Z2Default user name login:\Zn" 18 70 "tux" 2>&1 1>&3`
|
pankso@402
|
287 retval=$?
|
pankso@402
|
288 exec 3>&-
|
pankso@402
|
289 check_retval
|
pankso@402
|
290 # Pevent empty value.
|
pankso@402
|
291 if [ -z $USER ]; then
|
pankso@402
|
292 USER="tux"
|
pankso@402
|
293 fi
|
pankso@402
|
294 # User passwd
|
pankso@402
|
295 exec 3>&1
|
pankso@402
|
296 USER_PASSWD=`$DIALOG --title " User password " \
|
pankso@402
|
297 --backtitle "$BACKLIST" --clear \
|
pankso@402
|
298 --colors --nocancel --inputbox "
|
pankso@402
|
299 The password for default user $USER. It may also be a security hole if to \
|
pankso@402
|
300 weak and should realy be strong if you will use SSH connection trought the web.
|
pankso@402
|
301
|
pankso@402
|
302 \Z2Please specify $USER password:\Zn" 18 70 "tux" 2>&1 1>&3`
|
pankso@402
|
303 retval=$?
|
pankso@402
|
304 exec 3>&-
|
pankso@402
|
305 check_retval
|
pankso@402
|
306 # Pevent empty value.
|
pankso@402
|
307 if [ -z $USER_PASSWD ]; then
|
pankso@402
|
308 USER_PASSWD="tux"
|
pankso@402
|
309 fi
|
pankso@402
|
310 }
|
pankso@402
|
311
|
pankso@402
|
312 # Tiny summary and last chance to cancel or restart for user.
|
pankso@402
|
313 summary()
|
pankso@402
|
314 {
|
pankso@402
|
315 $DIALOG --title " Summary " \
|
pankso@402
|
316 --backtitle "$BACKLIST" \
|
pankso@402
|
317 --clear --colors --yesno "
|
pankso@402
|
318 Installation settings summary and last chance to cancel or restart all \
|
pankso@402
|
319 installator steps.
|
pankso@402
|
320
|
pankso@402
|
321 Root partition: $TARGET_DEV
|
pankso@402
|
322 Hostname: $HOSTNAME
|
pankso@402
|
323 Default user: $USER
|
pankso@402
|
324
|
pankso@402
|
325 \Z2Go and install SliTaz or cancel?\Zn" 18 70
|
pankso@402
|
326 retval=$?
|
pankso@402
|
327 check_retval
|
pankso@402
|
328 }
|
pankso@402
|
329
|
pankso@70
|
330 # Get a clean target device (15%).
|
pankso@70
|
331 clean_target()
|
pankso@70
|
332 {
|
pankso@70
|
333 if [ "$CLEAN" == "clean" ]; then
|
pankso@70
|
334 echo "XXX" && echo 15
|
paul@319
|
335 echo -e "\nCleaning the root partition ($TARGET_DEV)..."
|
pankso@70
|
336 echo "XXX"
|
pankso@94
|
337 # Keep /home in case of reinstall.
|
pankso@70
|
338 cd $TARGET_ROOT
|
pankso@94
|
339 for dir in *
|
pankso@70
|
340 do
|
pankso@94
|
341 case "$dir" in
|
pankso@70
|
342 home)
|
erjo@77
|
343 mv $TARGET_ROOT/home $TARGET_ROOT/home.bak
|
pankso@70
|
344 echo "keeping /home found on: $TARGET_DEV" >>$LOG ;;
|
pankso@70
|
345 lost+found)
|
pankso@94
|
346 continue ;;
|
pankso@70
|
347 *)
|
pankso@94
|
348 echo "removing target: $dir" >>$LOG
|
erjo@77
|
349 rm -rf $dir 2>>$LOG ;;
|
pankso@70
|
350 esac
|
pankso@70
|
351 done
|
pankso@70
|
352 if [ -d $TARGET_ROOT/mklost+found ]; then
|
pankso@70
|
353 mklost+found 2>>$LOG
|
pankso@70
|
354 fi
|
pankso@70
|
355 fi
|
pankso@70
|
356 sleep 2
|
pankso@70
|
357 }
|
pankso@70
|
358
|
MikeDSmith25@252
|
359 # Kernel is renamed to standard vmlinuz-$VERSION.
|
pankso@70
|
360 install_kernel()
|
pankso@70
|
361 {
|
pankso@70
|
362 mkdir -p $TARGET_ROOT/boot
|
pankso@70
|
363 cp /media/cdrom/boot/bzImage $TARGET_ROOT/boot/$KERNEL
|
pankso@94
|
364 echo "install_kernel: $KERNEL" >> $LOG
|
pankso@70
|
365 sleep 2
|
pankso@70
|
366 }
|
pankso@70
|
367
|
pankso@70
|
368 # Copy isolinux r/w files (not syslinux, some files are read only).
|
pankso@70
|
369 copy_bootloaders()
|
pankso@70
|
370 {
|
pankso@70
|
371 if [ -d "/media/cdrom/boot/isolinux" ]; then
|
pankso@70
|
372 mkdir -p $TARGET_ROOT/boot/isolinux
|
pankso@70
|
373 cp -a /media/cdrom/boot/isolinux/*.cfg $TARGET_ROOT/boot/isolinux
|
pankso@70
|
374 cp -a /media/cdrom/boot/isolinux/*.kbd $TARGET_ROOT/boot/isolinux
|
pankso@70
|
375 cp -a /media/cdrom/boot/isolinux/*.txt $TARGET_ROOT/boot/isolinux
|
pankso@70
|
376 cp -a /media/cdrom/boot/isolinux/*.bin $TARGET_ROOT/boot/isolinux
|
pankso@70
|
377 cp -a /media/cdrom/boot/isolinux/*.msg $TARGET_ROOT/boot/isolinux
|
pankso@70
|
378 cp -a /media/cdrom/boot/isolinux/*.lss $TARGET_ROOT/boot/isolinux
|
pankso@70
|
379 cp -a /media/cdrom/boot/isolinux/*.c32 $TARGET_ROOT/boot/isolinux
|
pankso@70
|
380 fi
|
pankso@70
|
381 }
|
pankso@70
|
382
|
pankso@70
|
383 # Extract lzma'ed or gziped rootfs.
|
pankso@70
|
384 extract_rootfs()
|
pankso@70
|
385 {
|
pankso@70
|
386 cd $TARGET_ROOT
|
pankso@94
|
387 (zcat rootfs.gz 2>/dev/null || lzma d rootfs.gz -so || \
|
pascal@186
|
388 cat rootfs.gz) 2>>$LOG | cpio -id 2>>$LOG > /dev/null
|
pascal@71
|
389 rm -f rootfs.gz
|
pankso@94
|
390 # unpack /usr (double check...)
|
pankso@94
|
391 if ls etc/tazlito | grep -q ".extract"; then
|
pankso@94
|
392 for i in etc/tazlito/*.extract; do
|
pascal@186
|
393 [ -f "$i" ] && . $i /media/cdrom
|
pankso@94
|
394 done
|
pankso@94
|
395 fi
|
pankso@70
|
396 }
|
pankso@70
|
397
|
pankso@402
|
398 # Pre configure freshly installed system (60 - 80%).
|
pankso@70
|
399 pre_config_system()
|
pankso@70
|
400 {
|
pankso@70
|
401 cd $TARGET_ROOT
|
MikeDSmith25@252
|
402 # Restore backup of existing /home if exists.
|
pankso@70
|
403 # (created by prepare_target_dev)
|
pankso@70
|
404 if [ -d home.bak ]; then
|
pankso@402
|
405 echo "XXX" && echo 65
|
pankso@402
|
406 echo -e "\nRestoring directory: /home..."
|
pankso@70
|
407 echo "XXX"
|
pankso@70
|
408 rm -rf home
|
pankso@70
|
409 mv home.bak home
|
pankso@402
|
410 sleep 1
|
pankso@70
|
411 fi
|
pankso@198
|
412 # Add root device to CHECK_FS in rcS.conf to check filesystem
|
pankso@70
|
413 # on each boot.
|
pankso@402
|
414 echo "XXX" && echo 70
|
paul@319
|
415 echo -e "\nAdding $TARGET_DEV and CHECK_FS to file /etc/rcS.conf..."
|
pankso@70
|
416 echo "XXX"
|
pankso@70
|
417 sed -i s#'CHECK_FS=\"\"'#"CHECK_FS=\"$TARGET_DEV\""# etc/rcS.conf
|
pankso@70
|
418 sleep 2
|
pankso@70
|
419 # Set hostname.
|
pankso@402
|
420 echo "XXX" && echo 80
|
paul@319
|
421 echo -e "\nConfiguring host name: $HOSTNAME"
|
pankso@70
|
422 echo "XXX"
|
pankso@70
|
423 echo $HOSTNAME > etc/hostname
|
pankso@402
|
424 }
|
pankso@402
|
425
|
pankso@402
|
426 # Set root passwd and create user after rootfs extraction.
|
pankso@402
|
427 users_settings()
|
pankso@402
|
428 {
|
pankso@402
|
429 cat > $TARGET_ROOT/users.sh << _EOF_
|
pankso@402
|
430 #!/bin/sh
|
pankso@402
|
431 echo "root:$ROOT_PASSWD" | chpasswd
|
pankso@402
|
432 adduser -D -H $USER
|
pankso@402
|
433 addgroup $USER audio
|
pankso@402
|
434 echo "$USER:$USER_PASSWD" | chpasswd
|
pankso@402
|
435 if [ ! -d /home/$USER ]; then
|
pankso@402
|
436 cp /etc/skel /home/$USER
|
pankso@402
|
437 chown -R $USER.$USER /home/$USER
|
pankso@402
|
438 # Path for user desktop files.
|
pankso@402
|
439 for i in /home/$USER/.local/share/applications/*.desktop
|
pankso@402
|
440 do
|
pankso@402
|
441 sed -i s/"user_name"/"$USER"/g \$i
|
pankso@402
|
442 done
|
pankso@402
|
443 fi
|
pankso@402
|
444 # Slim default user.
|
pankso@402
|
445 if [ -f /etc/slim.conf ]; then
|
pankso@402
|
446 sed -i s/"default_user .*"/"default_user $USER"/\
|
pankso@402
|
447 /etc/slim.conf
|
pankso@402
|
448 fi
|
pankso@402
|
449 _EOF_
|
pankso@402
|
450 chmod +x $TARGET_ROOT/users.sh
|
pankso@402
|
451 chroot $TARGET_ROOT ./users.sh
|
pankso@402
|
452 rm $TARGET_ROOT/users.sh
|
pankso@70
|
453 }
|
pankso@70
|
454
|
MikeDSmith25@252
|
455 # Determine GRUB partition number and GRUB disk number.
|
pankso@70
|
456 grub_config()
|
pankso@70
|
457 {
|
pankso@70
|
458 DISK_LETTER=${TARGET_DEV#/dev/[h-s]d}
|
pankso@70
|
459 DISK_LETTER=${DISK_LETTER%[0-9]}
|
pankso@70
|
460 GRUB_PARTITION=$((${TARGET_DEV#/dev/[h-s]d[a-z]}-1))
|
pankso@70
|
461 for disk in a b c d e f g h
|
pankso@70
|
462 do
|
pankso@70
|
463 nb=$(($nb+1))
|
pankso@70
|
464 if [ "$disk" = "$DISK_LETTER" ]; then
|
pankso@70
|
465 GRUB_DISK=$(($nb-1))
|
pankso@70
|
466 break
|
pankso@70
|
467 fi
|
pankso@70
|
468 done
|
pankso@70
|
469 GRUB_ROOT="(hd${GRUB_DISK},${GRUB_PARTITION})"
|
MikeDSmith25@252
|
470 # Create the target GRUB configuration.
|
pankso@70
|
471 mkdir -p $TARGET_ROOT/boot/grub
|
pankso@70
|
472 cat > $TARGET_ROOT/boot/grub/menu.lst << _EOF_
|
pankso@70
|
473 # /boot/grub/menu.lst: GRUB boot loader configuration.
|
pankso@70
|
474 #
|
pankso@70
|
475
|
pankso@70
|
476 # By default, boot the first entry.
|
pankso@70
|
477 default 0
|
pankso@70
|
478
|
pankso@70
|
479 # Boot automatically after 8 secs.
|
pankso@70
|
480 timeout 8
|
pankso@70
|
481
|
pankso@70
|
482 # Change the colors.
|
pankso@70
|
483 color yellow/brown light-green/black
|
pankso@70
|
484
|
pankso@70
|
485 # For booting SliTaz from : $TARGET_DEV
|
pankso@70
|
486 #
|
pankso@70
|
487 title SliTaz GNU/Linux (cooking) (Kernel $KERNEL)
|
pankso@70
|
488 root $GRUB_ROOT
|
pankso@70
|
489 kernel /boot/$KERNEL root=$TARGET_DEV
|
pankso@70
|
490
|
pankso@70
|
491 _EOF_
|
pankso@70
|
492 # log
|
pankso@70
|
493 echo "grub_config: $TARGET_ROOT/boot/grub/menu.lst" >>$LOG
|
pankso@70
|
494 sleep 2
|
pankso@70
|
495 }
|
pankso@70
|
496
|
pankso@70
|
497 # Files install with gauge, calling for functions or with cmds.
|
pankso@70
|
498 install_files()
|
pankso@70
|
499 {
|
pankso@70
|
500 (
|
pankso@198
|
501
|
pankso@70
|
502 echo "XXX" && echo 10
|
paul@319
|
503 echo -e "\nCleaning the root partition if necessary..."
|
pankso@70
|
504 echo "XXX"
|
pankso@70
|
505 clean_target
|
pankso@198
|
506
|
pankso@70
|
507 echo "XXX" && echo 20
|
paul@319
|
508 echo -e "\nInstalling the kernel ($KERNEL)..."
|
pankso@70
|
509 echo "XXX"
|
pankso@70
|
510 install_kernel
|
pankso@198
|
511
|
pankso@70
|
512 echo "XXX" && echo 30
|
paul@319
|
513 echo -e "\nCopying the bootloader syslinux/isolinux..."
|
pankso@70
|
514 echo "XXX"
|
pankso@70
|
515 copy_bootloaders
|
pankso@198
|
516
|
pankso@70
|
517 echo "XXX" && echo 40
|
paul@319
|
518 echo -e "\nCopying the compressed system (rootfs.gz)..."
|
pankso@70
|
519 echo "XXX"
|
pankso@70
|
520 cp /media/cdrom/boot/rootfs.gz $TARGET_ROOT
|
pankso@70
|
521 sleep 2
|
pankso@198
|
522
|
pankso@70
|
523 echo "XXX" && echo 50
|
paul@319
|
524 echo -e "\nExtracting the root system..."
|
pankso@70
|
525 echo "XXX"
|
pankso@70
|
526 extract_rootfs
|
pankso@198
|
527
|
pankso@70
|
528 echo "XXX" && echo 60
|
paul@319
|
529 echo -e "\nPreconfiguring the system..."
|
pankso@70
|
530 echo "XXX"
|
pankso@70
|
531 pre_config_system
|
pankso@402
|
532
|
pankso@402
|
533 echo "XXX" && echo 80
|
pankso@402
|
534 echo -e "\nConfiguring root and default $USER account..."
|
pankso@402
|
535 echo "XXX"
|
pankso@402
|
536 users_settings
|
pankso@402
|
537 sleep 2
|
pankso@198
|
538
|
pankso@70
|
539 echo "XXX" && echo 90
|
paul@319
|
540 echo -e "\nCreating the configuration file for GRUB (menu.lst)..."
|
pankso@70
|
541 echo "XXX"
|
pankso@70
|
542 grub_config
|
pankso@198
|
543
|
pankso@70
|
544 echo "XXX" && echo 100
|
paul@319
|
545 echo -e "\nFinishing the files installation..."
|
pankso@70
|
546 echo "XXX"
|
pankso@70
|
547 echo "install_files: OK" >>$LOG
|
pankso@402
|
548 sleep 2
|
pankso@198
|
549
|
pankso@70
|
550 ) |
|
paul@319
|
551 $DIALOG --title " Install files " \
|
pankso@70
|
552 --backtitle "$BACKLIST" \
|
pankso@70
|
553 --gauge "Starting to install files..." 18 70 0
|
pankso@70
|
554 }
|
pankso@70
|
555
|
paul@319
|
556 # GRUB info with disk name used for grub-install.
|
pankso@70
|
557 grub_install()
|
pankso@70
|
558 {
|
pankso@70
|
559 TARGET_DISK=`echo $TARGET_DEV | sed s/"[0-9]"/''/`
|
pascal@205
|
560 set_messages
|
pankso@70
|
561 $DIALOG --title " GRUB install " \
|
pankso@70
|
562 --backtitle "$BACKLIST" \
|
pankso@149
|
563 --clear --colors --yesno "$GRUB_INSTALL_MSG" 18 70
|
pankso@70
|
564 retval=$?
|
pankso@70
|
565 case $retval in
|
pankso@70
|
566 0)
|
pankso@70
|
567 (
|
pankso@70
|
568 echo "XXX" && echo 50
|
paul@319
|
569 echo -e "\nRunning grub-install on : $TARGET_DISK..."
|
pankso@198
|
570 echo "XXX"
|
pankso@70
|
571 grub-install --no-floppy \
|
pankso@70
|
572 --root-directory=$TARGET_ROOT $TARGET_DISK 2>>$LOG
|
pankso@70
|
573 echo "XXX" && echo 100
|
paul@319
|
574 echo -e "\nFinished installation..."
|
pankso@70
|
575 echo "XXX"
|
pankso@70
|
576 sleep 2
|
pankso@70
|
577 ) |
|
pankso@70
|
578 $DIALOG --title " GRUB install " \
|
pankso@70
|
579 --backtitle "$BACKLIST" \
|
paul@319
|
580 --gauge "Installating GRUB..." 18 70 0 ;;
|
pankso@70
|
581 1)
|
pankso@70
|
582 echo "grub_install: NO" >>$LOG ;;
|
pankso@70
|
583 255)
|
pankso@70
|
584 echo -e "ESC pressed.\n" && exit 0 ;;
|
pankso@70
|
585 esac
|
pankso@70
|
586 }
|
pankso@70
|
587
|
paul@319
|
588 # Copy log file, umount target and eject cdrom.
|
pankso@70
|
589 umount_devices()
|
pankso@70
|
590 {
|
pankso@70
|
591 (
|
pankso@70
|
592 echo "XXX" && echo 25
|
paul@319
|
593 echo -e "\nCopying the log files ($LOG)..."
|
pankso@70
|
594 echo "XXX"
|
pankso@70
|
595 cp -a $LOG $TARGET_ROOT/var/log
|
pankso@70
|
596 sleep 2
|
pankso@70
|
597 echo "XXX" && echo 50
|
paul@319
|
598 echo -e "\nUnmounting the target ($TARGET_DEV)..."
|
pankso@198
|
599 echo "XXX"
|
pankso@70
|
600 if mount | grep -q $TARGET_ROOT; then
|
pankso@70
|
601 umount $TARGET_ROOT 2>/dev/null
|
pankso@70
|
602 fi
|
pankso@70
|
603 echo "XXX" && echo 75
|
paul@319
|
604 echo -e "\nUnmounting and ejecting the cdrom..."
|
pankso@70
|
605 echo "XXX"
|
pankso@70
|
606 if mount | grep -q /media/cdrom; then
|
pankso@70
|
607 umount /media/cdrom
|
pascal@186
|
608 grep -q slitaz-loram-cdrom /etc/init.d/rcS || eject
|
pankso@70
|
609 fi
|
pankso@70
|
610 sleep 2
|
pankso@70
|
611 echo "XXX" && echo 100
|
pankso@70
|
612 echo -e "\n$TITLE..."
|
pankso@70
|
613 echo "XXX"
|
pankso@70
|
614 sleep 2
|
pankso@70
|
615 ) |
|
pankso@70
|
616 $DIALOG --title " $TITLE " \
|
pankso@70
|
617 --backtitle "$BACKLIST" \
|
pankso@70
|
618 --gauge "$TITLE starting..." 18 70 0
|
pankso@70
|
619 }
|
pankso@70
|
620
|
paul@319
|
621 # End of installation.
|
pankso@70
|
622 end_of_install()
|
pankso@70
|
623 {
|
pankso@70
|
624 echo "end_of_install: `date`" >>$LOG
|
paul@319
|
625 $DIALOG --title " Installation complete " \
|
pankso@70
|
626 --backtitle "$BACKLIST" \
|
pankso@70
|
627 --yes-label "Exit" \
|
pankso@70
|
628 --no-label "Reboot" \
|
pankso@149
|
629 --clear --colors --yesno "$END_OF_INSTALL_MSG" 18 70
|
pankso@70
|
630 retval=$?
|
pankso@70
|
631 case $retval in
|
pankso@70
|
632 0)
|
pankso@70
|
633 TITLE="Exiting"
|
pankso@70
|
634 umount_devices ;;
|
pankso@70
|
635 1)
|
pankso@70
|
636 TITLE="Rebooting"
|
pankso@70
|
637 umount_devices
|
pankso@70
|
638 reboot || reboot -f ;;
|
pankso@70
|
639 255)
|
pankso@70
|
640 echo -e "ESC pressed.\n" && exit 0 ;;
|
pankso@70
|
641 esac
|
pankso@70
|
642 }
|
pankso@70
|
643
|
pankso@70
|
644 #####################
|
pankso@70
|
645 # Upgrade functions #
|
pankso@70
|
646 #####################
|
pankso@70
|
647
|
pankso@94
|
648 # We need a partition to upgrade SliTaz.
|
pankso@94
|
649 ask_for_upgrade_dev()
|
pankso@70
|
650 {
|
pankso@94
|
651 exec 3>&1
|
paul@319
|
652 UPGRADE_DEV=`$DIALOG --title " Target to upgrade " \
|
pankso@94
|
653 --backtitle "$BACKLIST" --clear \
|
pankso@94
|
654 --extra-label "List" --extra-button \
|
pankso@94
|
655 --colors --inputbox "\n
|
paul@319
|
656 The installer will upgrade the target by saving all configuration files and \
|
paul@319
|
657 the list of installed packages. Then, it will clean the partition and install the \
|
paul@319
|
658 version of SliTaz contained on the cdrom, restore the configuration files and \
|
paul@319
|
659 reinstall all packages which are not present on the cdrom. You will need an active \
|
paul@319
|
660 internet connection before upgrading.\n\n
|
paul@319
|
661 \Z2Partition containing the system upgrade:\Zn" 18 70 2>&1 1>&3`
|
pankso@94
|
662 retval=$?
|
pankso@94
|
663 exec 3>&-
|
pankso@94
|
664 check_retval
|
MikeDSmith25@252
|
665 # Display list and come back.
|
pankso@94
|
666 if [ "$retval" = "3" ]; then
|
pankso@94
|
667 fdisk_list
|
pankso@94
|
668 ask_for_upgrade_dev
|
pankso@94
|
669 fi
|
pankso@94
|
670 # Empty value.
|
pankso@94
|
671 if [ -z $UPGRADE_DEV ]; then
|
pankso@94
|
672 ask_for_upgrade_dev
|
pankso@94
|
673 fi
|
MikeDSmith25@252
|
674 # Check if specified device exists in /proc/partitions.
|
pankso@94
|
675 DEV_NAME=${UPGRADE_DEV#/dev/}
|
pankso@94
|
676 if cat /proc/partitions | grep -q $DEV_NAME; then
|
pankso@94
|
677 echo "ask_for_target_dev: $TARGET_DEV" >>$LOG
|
pankso@94
|
678 else
|
paul@319
|
679 ERROR_MSG="The partition \Z2$UPGRADE_DEV\Zn doesn't seem to exist."
|
pankso@94
|
680 error_message
|
pankso@94
|
681 ask_for_upgrade_dev
|
pankso@94
|
682 fi
|
pankso@94
|
683 echo "partition to upgrade: $UPGRADE_DEV" >>$LOG
|
pankso@94
|
684 }
|
pankso@94
|
685
|
paul@319
|
686 # Prepare the partition to upgrade, backup, install, restore configs
|
pankso@94
|
687 # and reinstall pkgs.
|
pankso@94
|
688 upgrade_process()
|
pankso@94
|
689 {
|
pankso@94
|
690 (
|
pankso@94
|
691 echo "XXX" && echo 5
|
paul@319
|
692 echo -e "\nPreparing the target partition..."
|
pankso@94
|
693 echo "XXX"
|
pankso@94
|
694 # Mount point can be already used.
|
pankso@94
|
695 if mount | grep -q $TARGET_ROOT; then
|
pankso@94
|
696 umount $TARGET_ROOT 2>$LOG
|
pankso@94
|
697 fi
|
pankso@94
|
698 mkdir -p $TARGET_ROOT && sleep 2
|
paul@319
|
699 # Mount target.
|
pankso@94
|
700 mount $UPGRADE_DEV $TARGET_ROOT >>$LOG 2>>$LOG
|
pankso@94
|
701 cd $TARGET_ROOT
|
pankso@94
|
702 TARGET_DEV=$UPGRADE_DEV
|
pascal@205
|
703 set_messages
|
pankso@198
|
704
|
pankso@94
|
705 echo "XXX" && echo 10
|
paul@319
|
706 echo -e "\nSearch for /etc/slitaz-release"
|
pankso@94
|
707 echo "XXX"
|
pankso@94
|
708 if [ -f etc/slitaz-release ]; then
|
pankso@94
|
709 release=`cat etc/slitaz-release`
|
pankso@94
|
710 echo "XXX" && echo 15
|
pankso@94
|
711 echo -e "\nSliTaz release: $release"
|
pankso@94
|
712 echo "XXX"
|
pankso@94
|
713 else
|
paul@319
|
714 ERROR_MSG="The partition \Z2$UPGRADE_DEV\Zn doesn't appear to contain \
|
paul@319
|
715 a SliTaz system, the file: /etc/slitaz-release doesn't exist."
|
pankso@94
|
716 error_message
|
pankso@94
|
717 exit 0
|
pankso@94
|
718 fi && sleep 2
|
pankso@198
|
719
|
pankso@94
|
720 echo "XXX" && echo 20
|
paul@319
|
721 echo -e "\nBackup /etc, /home and the packages list..."
|
pankso@94
|
722 echo "XXX"
|
paul@319
|
723 # Backup target packages list.
|
pankso@94
|
724 ls -1 var/lib/tazpkg/installed > home/packages-selection.list
|
pankso@94
|
725 for dir in *
|
pankso@94
|
726 do
|
pankso@94
|
727 case "$dir" in
|
pankso@94
|
728 boot)
|
MikeDSmith25@252
|
729 # Upgrade doesn't prompt for grub install, so backup and
|
MikeDSmith25@252
|
730 # create a new grub menu.lst.
|
pankso@94
|
731 rm -rf $TARGET_ROOT/boot/vmlinuz-*
|
pankso@94
|
732 mv $TARGET_ROOT/boot/grub/menu.lst \
|
pankso@94
|
733 $TARGET_ROOT/boot/grub/menu.lst.bak 2>/dev/null
|
pankso@94
|
734 grub_config ;;
|
pankso@94
|
735 home)
|
pankso@94
|
736 mv $TARGET_ROOT/home $TARGET_ROOT/home.bak
|
pankso@94
|
737 echo "keeping /home found on: $UPGRADE_DEV" >>$LOG ;;
|
pankso@94
|
738 etc)
|
pankso@94
|
739 tar czf $TARGET_ROOT/etc.tar.gz etc
|
pankso@94
|
740 mv $TARGET_ROOT/etc $TARGET_ROOT/etc.bak
|
pankso@94
|
741 echo "keeping /etc found on: $UPGRADE_DEV" >>$LOG ;;
|
pankso@94
|
742 var)
|
pankso@94
|
743 if [ -d $TARGET_ROOT/var/www ]; then
|
pankso@94
|
744 mv $TARGET_ROOT/var/www $TARGET_ROOT/www.bak
|
pankso@94
|
745 fi
|
pankso@94
|
746 rm -rf $TARGET_ROOT/var ;;
|
pankso@94
|
747 lost+found)
|
pankso@94
|
748 continue ;;
|
pankso@94
|
749 *)
|
pankso@94
|
750 echo "removing target: $dir" >>$LOG
|
pankso@94
|
751 rm -rf $TARGET_ROOT/$dir 2>>$LOG ;;
|
pankso@94
|
752 esac
|
pankso@94
|
753 done
|
pankso@94
|
754 if [ -d $TARGET_ROOT/mklost+found ]; then
|
pankso@94
|
755 mklost+found 2>>$LOG
|
pankso@94
|
756 fi
|
pankso@94
|
757 sleep 2
|
pankso@198
|
758
|
pankso@94
|
759 echo "XXX" && echo 25
|
paul@319
|
760 echo -e "\nInstalling the kernel ($KERNEL)..."
|
pankso@94
|
761 echo "XXX"
|
pankso@94
|
762 install_kernel
|
pankso@198
|
763
|
pankso@94
|
764 echo "XXX" && echo 30
|
paul@319
|
765 echo -e "\nCopying the bootloader syslinux/isolinux..."
|
pankso@94
|
766 echo "XXX"
|
pankso@94
|
767 copy_bootloaders
|
pankso@198
|
768
|
pankso@94
|
769 echo "XXX" && echo 35
|
paul@319
|
770 echo -e "\nCopying the compressed system (rootfs.gz)..."
|
pankso@94
|
771 echo "XXX"
|
pankso@94
|
772 cp /media/cdrom/boot/rootfs.gz $TARGET_ROOT
|
pankso@94
|
773 sleep 2
|
pankso@198
|
774
|
pankso@94
|
775 echo "XXX" && echo 40
|
paul@319
|
776 echo -e "\nExtracting the root system..."
|
pankso@94
|
777 echo "XXX"
|
pankso@94
|
778 extract_rootfs
|
pankso@198
|
779
|
pankso@94
|
780 # Restore backups.
|
pankso@94
|
781 echo "XXX" && echo 42
|
paul@319
|
782 echo -e "\nRestoring configuration files..."
|
pankso@94
|
783 echo "XXX"
|
pankso@94
|
784 rm -rf $TARGET_ROOT/home
|
pankso@94
|
785 mv $TARGET_ROOT/home.bak $TARGET_ROOT/home
|
pankso@94
|
786 rm -rf $TARGET_ROOT/etc
|
pankso@94
|
787 mv $TARGET_ROOT/etc.bak $TARGET_ROOT/etc
|
pankso@94
|
788 if [ -d $TARGET_ROOT/www.bak ]; then
|
pankso@94
|
789 rm -rf $TARGET_ROOT/var/www
|
pankso@94
|
790 mv $TARGET_ROOT/www.bak $TARGET_ROOT/var/www
|
pankso@94
|
791 fi
|
pankso@94
|
792 echo "backups restored: `date`" >> $LOG
|
pankso@198
|
793
|
pankso@94
|
794 # /var/lib/slitaz-installer
|
pankso@94
|
795 mkdir $TARGET_ROOT/var/lib/slitaz-installer
|
pankso@94
|
796 mv $TARGET_ROOT/etc.tar.gz $TARGET_ROOT/var/lib/slitaz-installer
|
pankso@94
|
797 mv $TARGET_ROOT/home/packages-selection.list $TARGET_ROOT/var/lib/slitaz-installer
|
pankso@94
|
798 cd $TARGET_ROOT/var/lib/slitaz-installer
|
pankso@198
|
799
|
pankso@94
|
800 # LiveCD packages list.
|
pankso@94
|
801 echo "XXX" && echo 46
|
paul@319
|
802 echo -e "\nCreating package lists..."
|
pankso@94
|
803 echo "XXX"
|
pankso@94
|
804 ls -1 $TARGET_ROOT/var/lib/tazpkg/installed > packages-cdrom.list || exit 1
|
pankso@94
|
805 echo "packages-cdrom.list: done" >> $LOG
|
pankso@94
|
806 # Diff
|
pankso@94
|
807 diff packages-cdrom.list packages-selection.list | \
|
pankso@94
|
808 grep ^+[a-z] | sed s/^+// > packages-selection.diff
|
pankso@94
|
809 echo "packages-selection.diff: done" >> $LOG
|
pankso@94
|
810 # Get mirror list.
|
pankso@94
|
811 tazpkg recharge >>$LOG 2>>$LOG
|
pankso@94
|
812 if [ ! -f /var/lib/tazpkg/packages.list ]; then
|
paul@319
|
813 ERROR_MSG="The list of available packages on the mirror could not be \
|
paul@319
|
814 downloaded. No missing packages will be reinstalled now, but \
|
paul@319
|
815 you can do so later by looking at the following list: \n\n
|
pankso@94
|
816
|
pankso@94
|
817 /var/lib/slitaz-installer/packages-selection.diff"
|
pankso@94
|
818 error_message
|
pankso@94
|
819 fi
|
pankso@94
|
820 sleep 2
|
pankso@198
|
821
|
paul@319
|
822 # Check if the pkg is on the mirror.
|
pankso@94
|
823 echo "XXX" && echo 48
|
paul@319
|
824 echo -e "\nChecking the availability of packages..."
|
pankso@94
|
825 echo "XXX"
|
pankso@94
|
826 touch packages-to-install.list
|
pankso@94
|
827 packages=0
|
pankso@94
|
828 diff=`cat packages-selection.diff | sort`
|
pankso@94
|
829 for pkg in $diff
|
pankso@94
|
830 do
|
pankso@94
|
831 if grep -q ^$pkg-[0-9] /var/lib/tazpkg/packages.list; then
|
pankso@94
|
832 packages=$(($packages+1))
|
pankso@94
|
833 echo "$pkg" >> packages-to-install.list
|
pankso@94
|
834 fi
|
pankso@94
|
835 done
|
pankso@198
|
836
|
MikeDSmith25@252
|
837 # Calculate the percent for one package and install.
|
pankso@94
|
838 echo "XXX" && echo 50
|
paul@319
|
839 echo -e "\nInstalling any packages..."
|
pankso@94
|
840 echo "XXX"
|
pankso@94
|
841 sleep 2
|
pankso@198
|
842 if [ "$packages" == "0" ]; then
|
pankso@94
|
843 echo "packages to install: 0" >> $LOG
|
pankso@94
|
844 else
|
pankso@94
|
845 onepkg=$((48/$packages))
|
pankso@94
|
846 pct=50
|
pankso@94
|
847 # Get-install all missing pkgs.
|
pankso@94
|
848 for pkg in `cat packages-to-install.list`
|
pankso@94
|
849 do
|
pankso@94
|
850 pct=$(($pct+$onepkg))
|
pankso@94
|
851 echo "XXX" && echo $pct
|
paul@319
|
852 echo -e "\nInstallation of: $pkg..."
|
pankso@94
|
853 echo "XXX"
|
pankso@94
|
854 # Log please.
|
pankso@94
|
855 echo "get-install: $pkg" >>$LOG
|
MikeDSmith25@252
|
856 # Get install package and answer yes in case of dependencies.
|
pankso@94
|
857 pkgname=`grep ^$pkg /var/lib/tazpkg/packages.list`
|
pankso@94
|
858 tazpkg get $pkg >/dev/null 2>/dev/null
|
pankso@94
|
859 yes "" | tazpkg install $pkgname.tazpkg --root=$TARGET_ROOT >/dev/null 2>/dev/null
|
pankso@94
|
860 rm -f $pkgname.tazpkg
|
pankso@94
|
861 done
|
pankso@94
|
862 fi
|
pankso@94
|
863 echo "XXX" && echo 100
|
paul@319
|
864 echo -e "\nInstallation of packages complete..."
|
pankso@94
|
865 echo "XXX"
|
pankso@94
|
866 sleep 2
|
pankso@94
|
867 ) |
|
paul@319
|
868 $DIALOG --title " Processing system upgrade " \
|
pankso@70
|
869 --backtitle "$BACKLIST" \
|
pankso@94
|
870 --gauge "Target in preparation..." 18 70 0
|
pankso@94
|
871 }
|
pankso@94
|
872
|
paul@319
|
873 # End of system upgrade.
|
pankso@94
|
874 end_of_upgrade()
|
pankso@94
|
875 {
|
pankso@94
|
876 TARGET_DEV=$UPGRADE_DEV
|
pascal@205
|
877 set_messages
|
pankso@94
|
878 pkgscd=`cat $TARGET_ROOT/var/lib/slitaz-installer/packages-cdrom.list | wc -l`
|
pankso@94
|
879 pkginst=`cat $TARGET_ROOT/var/lib/slitaz-installer/packages-to-install.list | wc -l`
|
pankso@94
|
880 echo "end_of_upgrade: `date`" >>$LOG
|
paul@319
|
881 $DIALOG --title " Upgrade completed " \
|
pankso@94
|
882 --backtitle "$BACKLIST" \
|
pankso@94
|
883 --yes-label "Exit" \
|
pankso@94
|
884 --no-label "Reboot" \
|
pankso@70
|
885 --clear --colors --yesno "\n
|
paul@319
|
886 Upgrade finished. You can know restart (reboot) \
|
paul@319
|
887 from your SliTaz GNU/Linux system.\n\n
|
paul@319
|
888 Packages on the cdrom : $pkgscd\n
|
paul@319
|
889 Packages installed from the mirror : $pkginst\n" 18 70
|
pankso@70
|
890 retval=$?
|
pankso@94
|
891 case $retval in
|
pankso@94
|
892 0)
|
pankso@94
|
893 TITLE="Exiting"
|
pankso@94
|
894 umount_devices ;;
|
pankso@94
|
895 1)
|
pankso@94
|
896 TITLE="Rebooting"
|
pankso@94
|
897 umount_devices
|
pankso@94
|
898 reboot || reboot -f ;;
|
pankso@94
|
899 255)
|
pankso@94
|
900 echo -e "ESC pressed.\n" && exit 0 ;;
|
pankso@94
|
901 esac
|
pankso@70
|
902 }
|
pankso@70
|
903
|
pankso@70
|
904 ######################
|
pankso@70
|
905 # Installer sequence #
|
pankso@70
|
906 ######################
|
pankso@70
|
907
|
pascal@205
|
908 set_messages
|
pankso@94
|
909 check_root
|
pankso@94
|
910 start_installer
|
pankso@94
|
911
|
pankso@70
|
912 case $ACTION in
|
pankso@70
|
913 upgrade)
|
paul@319
|
914 BACKLIST="$BACKLIST (Upgrade)"
|
pankso@94
|
915 mount_cdrom
|
pankso@94
|
916 ask_for_upgrade_dev
|
pankso@94
|
917 upgrade_process
|
pankso@402
|
918 end_of_upgrade ;;
|
pankso@70
|
919 install|*)
|
pankso@70
|
920 mount_cdrom
|
pankso@70
|
921 ask_for_target_dev
|
pankso@70
|
922 ask_for_mkfs_target_dev
|
pankso@70
|
923 prepare_target_dev
|
pankso@70
|
924 ask_for_hostname
|
pankso@402
|
925 ask_for_users_settings
|
pankso@402
|
926 summary
|
pankso@70
|
927 install_files
|
pankso@70
|
928 grub_install
|
pankso@402
|
929 end_of_install ;;
|
pankso@70
|
930 esac
|
pankso@70
|
931
|
pankso@70
|
932 exit 0
|