/[clonezilla-sysresccd]/trunk/create-clonezilla-sysresccd/create-clonezilla-sysresccd.sh
ViewVC logotype

Contents of /trunk/create-clonezilla-sysresccd/create-clonezilla-sysresccd.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 193 - (show annotations)
Tue Aug 28 09:39:20 2012 UTC (8 years ago) by sng
File MIME type: application/x-sh
File size: 32710 byte(s)
- updating ChangeLog
- using xz compression for mksquashfs in create-clonezilla-sysresccd

1 ##############################################################################
2 # #
3 # create-clonezilla-sysresccd, (C) 2007-2011 S. Georgaras <sng@hellug.gr> #
4 # #
5 # This file is part of Clonezilla-SysRescCD. #
6 # #
7 # Clonezilla-SysRescCD is free software: you can redistribute it and/or #
8 # modify it under the terms of the GNU General Public License as published #
9 # by the Free Software Foundation, either version 2 of the License, or #
10 # (at your option) any later version. #
11 # #
12 # Clonezilla-SysRescCD is distributed in the hope that it will be useful, #
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of #
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
15 # GNU General Public License for more details. #
16 # #
17 # You should have received a copy of the GNU General Public License along #
18 # with Clonezilla-SysRescCD. If not, see <http://www.gnu.org/licenses/>. #
19 # #
20 ##############################################################################
21 function evalPrograms(){
22 local ans
23
24 echo -n "Looking for curl... "
25 if [ -z "$(curl -V 2>/dev/null)" ];then
26 echo failed
27 unset curlFound
28 echo
29 echo "curl was not found on your system, so the ISO files cannot be download"
30 echo "Please install curl and try again"
31 exit 1
32 else
33 echo found
34 curlFound=1
35 fi
36
37 echo -n "Looking for md5sum... "
38 if [ -z "$(md5sum --version 2>/dev/null)" ];then
39 echo failed
40 unset md5sumFound
41 echo
42 echo " Info: md5sum was not found on your system"
43 echo " The ISO files will not be validated."
44 echo
45 echo -n " Do you want to continue? (y/[n]) "
46 read ans
47 if [ "$ans" != "y" ];then
48 exit
49 fi
50 else
51 echo found
52 md5sumFound=1
53 fi
54 }
55
56 function downloadIsoFiles(){
57 local clonIso
58 local sysIso="http://sourceforge.net/projects/systemrescuecd/files/sysresccd-x86/"$sysVersion"/systemrescuecd-x86-"$sysVersion".iso/download"
59
60 # Start with Clonezilla Live
61 if [ "$1" = "all" ] || [ -z "$1" ];then
62 # Download all files
63 for clonType in i686 i486 amd64;do
64 if [ "$clonType" = "i686" ];then
65 clonType="$clonType"-pae
66 fi
67 clonIso="http://downloads.sourceforge.net/project/clonezilla/clonezilla_live_stable/OldFiles/"$clonVersion"/clonezilla-live-"$clonVersion"-"$clonType".iso?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fclonezilla%2Ffiles%2Fclonezilla_live_stable%2FOldFiles%2F"$clonVersion"%2F"
68 downloadClonezillaLive
69 done
70 else
71 clonType="$1"
72 if [ "$clonType" = "i686" ];then
73 clonType="$clonType"-pae
74 fi
75 clonIso="http://downloads.sourceforge.net/project/clonezilla/clonezilla_live_stable/OldFiles/"$clonVersion"/clonezilla-live-"$clonVersion"-"$clonType".iso?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fclonezilla%2Ffiles%2Fclonezilla_live_stable%2FOldFiles%2F"$clonVersion"%2F"
76 downloadClonezillaLive
77 fi
78
79 # Download System Rescue CD
80 echo "
81 ****** Downloading System Rescue CD "$sysVersion" ******"
82 unset curlContinue
83 if [ -e systemrescuecd-x86-"$sysVersion".iso ];then
84 if [ -n "$md5sumFound" ];then
85 echo "$sysmd5 systemrescuecd-x86-"$sysVersion".iso" > test.md5sum
86 echo -n "File found.
87 Checking integrity of "
88 md5sum -c test.md5sum 2>/dev/null
89 if [ "$?" -eq 0 ];then
90 rm -f test.md5sum 2>/dev/null
91 return
92 else
93 echo "File systemrescuecd-x86-"$sysVersion".iso already exists"
94 echo " You can continue downloading the file or restart it"
95 echo -n " Continue downloading? (y/[n]): "
96 read ans
97 curlContinue=""
98 if [ "$ans" = "y" ] || [ "$ans" = "Y" ];then
99 curlContinue=1
100 else
101 rm -f test.md5sum 2>/dev/null
102 fi
103 fi
104 else
105 echo "File systemrescuecd-x86-"$sysVersion".iso already exists"
106 echo " You can continue downloading the file or restart it"
107 echo " If you do continue downloading, and since md5sum was not found,"
108 echo " make sure you check the file's integrity manually, after the"
109 echo " download is complete"
110 echo -n " Continue downloading? (y/[n]): "
111 curlContinue=""
112 read ans
113 if [ "$ans" = "y" ] || [ "$ans" = "Y" ];then
114 curlContinue=1
115 fi
116 fi
117 fi
118 if [ -z "$curlContinue" ];then
119 curl -L "$sysIso" -o systemrescuecd-x86-"$sysVersion".iso
120 else
121 curl -L -C - "$sysIso" -o systemrescuecd-x86-"$sysVersion".iso
122 fi
123 # Check integrity
124 if [ -n "$md5sumFound" ];then
125 echo "$sysmd5 systemrescuecd-x86-"$sysVersion".iso" > test.md5sum
126 echo -n "Checking integrity of "
127 md5sum -c test.md5sum 2>/dev/null
128 if [ "$?" -eq 1 ];then
129 echo "Integrity check on systemrescuecd-x86-"$sysVersion".iso failed!!!"
130 echo -n "Do you want to delete this file? ([y]/n): "
131 read ans
132 if [ "$ans" = "y" ] || [ "$ans" = "Y" ];then
133 rm -f systemrescuecd-x86-"$sysVersion".iso 2>/dev/null && echo "File deleted..." || echo "****** Error deleting file!!! ******
134 Please delete systemrescuecd-x86-"$sysVersion".iso manually"
135 fi
136 fi
137 rm -f test.md5sum 2>/dev/null
138 fi
139 }
140
141 function downloadClonezillaLive(){
142 echo "
143 ****** Downloading Clonezilla Live "$clonVersion" "$clonType" ******"
144 unset curlContinue
145 if [ -e clonezilla-live-"$clonVersion"-"$clonType".iso ];then
146 if [ -n "$md5sumFound" ];then
147 if [ "$clonType" = "amd64" ];then
148 echo "$amd64md5 clonezilla-live-"$clonVersion"-"$clonType".iso">test.md5sum
149 elif [ "$clonType" = "i486" ];then
150 echo "$i486md5 clonezilla-live-"$clonVersion"-"$clonType".iso">test.md5sum
151 else
152 echo "$i686md5 clonezilla-live-"$clonVersion"-"$clonType".iso">test.md5sum
153 fi
154 unset checkmd5
155 echo -n "File found.
156 Checking integrity of "
157 md5sum -c test.md5sum 2>/dev/null && checkmd5=1
158
159 if [ -z "$checkmd5" ];then
160 # md5 check failed
161 unset checkmd5
162 echo "File clonezilla-live-"$clonVersion"-"$clonType".iso already exists"
163 echo " You can continue downloading the file or restart it"
164 echo -n " Continue downloading? (y/[n]): "
165 read ans
166 if [ "$ans" = "y" ] || [ "$ans" = "Y" ];then
167 curlContinue=1
168 else
169 rm -f test.md5sum 2>/dev/null
170 return
171 fi
172 else
173 # file is ok
174 return
175 fi
176 else
177 # no md5sum
178 echo "File clonezilla-live-"$clonVersion"-"$clonType".iso already exists"
179 echo " You can continue downloading the file or restart it"
180 echo " If you do continue downloading, and since md5sum was not found,"
181 echo " make sure you check the file's integrity manually, after the"
182 echo " download is complete"
183 echo -n " Continue downloading? (y/[n]): "
184 read ans
185 if [ "$ans" = "y" ] || [ "$ans" = "Y" ];then
186 curlContinue=1
187 fi
188 fi
189 fi
190
191 # Check if we have to go to OldFiles
192 echo "Checking file availability..."
193 oldFiles="$(curl -IL "$clonIso" | grep 'Location: http://')"
194 if [ -z "$oldFiles" ];then
195 # go to stable
196 clonIso="$(echo "$clonIso" | sed 's{OldFiles/{{' | sed 's{OldFiles%2F{{')"
197 echo ">>>>>> This is Clonezilla Live Stable!!!"
198 else
199 echo ">>>>>> This is an older Clonezilla Live version!!!"
200 fi
201
202 # Download file
203 if [ -z "$curlContinue" ];then
204 curl -L "$clonIso" -o clonezilla-live-"$clonVersion"-"$clonType".iso
205 else
206 curl -L -C - "$clonIso" -o clonezilla-live-"$clonVersion"-"$clonType".iso
207 fi
208
209 if [ -n "$md5sumFound" ];then
210 if [ "$clonType" = "amd64" ];then
211 echo "$amd64md5 clonezilla-live-"$clonVersion"-"$clonType".iso">test.md5sum
212 elif [ "$clonType" = "i486" ];then
213 echo "$i486md5 clonezilla-live-"$clonVersion"-"$clonType".iso">test.md5sum
214 else
215 echo "$i686md5 clonezilla-live-"$clonVersion"-"$clonType".iso">test.md5sum
216 fi
217 unset checkmd5
218 echo -n "Checking integrity of "
219 md5sum -c test.md5sum 2>/dev/null && checkmd5=1
220 rm -f test.md5sum 2>/dev/null
221 if [ -z "$checkmd5" ];then
222 echo "Integrity check on clonezilla-live-"$clonVersion"-"$clonType".iso failed!!!"
223 echo -n "Do you want to delete this file? ([y]/n): "
224 read ans
225 if [ "$ans" = "y" ] || [ "$ans" = "Y" ];then
226 rm -f clonezilla-live-"$clonVersion"-"$clonType".iso 2>/dev/null && echo "File deleted..." || echo "****** Error deleting file!!! ******
227 Please delete clonezilla-live-"$clonVersion"-"$clonType".iso manually"
228 fi
229 fi
230 fi
231
232
233 }
234
235 function noRoot(){
236 echo " Error: You must be root to execute this script"
237 exit 1
238 }
239
240 function getScript(){
241 if [ -n "$auto" ];then return;fi
242 echo 'Insert script to be executed'
243 echo -n '> '
244 read exScript
245 }
246
247 function getSysCD(){
248 echo 'Insert "System Rescue CD" ISO file name'
249 until [ ! -z "$sysCD" ];do
250 echo -n '> '
251 read sysCD
252 done
253
254 if [ ! -s "$sysCD" ];then
255 echo -n " Error: File not found. Press ENTER to continue... "
256 sysCD=''
257 read
258 getSysCD
259 fi
260 }
261
262 function getCloneCD(){
263 echo 'Insert "Clonezilla Live" ISO file name'
264 until [ ! -z "$cloneCD" ];do
265 echo -n '> '
266 read cloneCD
267 done
268
269 if [ ! -s "$cloneCD" ];then
270 echo -n " Error: File not found. Press ENTER to continue... "
271 cloneCD=''
272 read
273 getCloneCD
274 fi
275 }
276
277 function getcfgFile(){
278 echo 'Insert "isolinux.cfg" file to use'
279 until [ ! -z "$cfgFile" ];do
280 echo -n '> '
281 read cfgFile
282 done
283 if [ ! -s "$cfgFile" ];then
284 echo -n " Error: File not found. Press ENTER to continue... "
285 cfgFile=''
286 read
287 getcfgFile
288 fi
289 }
290
291 function getPreparer(){
292 echo 'Insert Preparer ID'
293 until [ ! -z "$preparerID" ];do
294 echo -n '> '
295 read preparerID
296 done
297 }
298
299 function getPublisher(){
300 echo 'Insert Publisher ID'
301 until [ ! -z "$publisher" ];do
302 echo -n '> '
303 read publisher
304 done
305 }
306
307 function getvolLabel(){
308 echo 'Insert CD Volume label'
309 until [ ! -z "$volLabel" ];do
310 echo -n '> '
311 read volLabel
312 done
313 }
314
315 function getDebianLiveFolder(){
316 echo 'Insert Debian Live folder'
317 until [ ! -z "$DebianLiveFolder" ];do
318 echo -n '> '
319 read DebianLiveFolder
320 done
321 }
322
323
324
325 function createTempFolders(){
326 echo -n "Creating "$SAVE_DIR"/tmp folder... "
327 mkdir "$SAVE_DIR"/tmp 2>/dev/null
328 if [ ! -d "$SAVE_DIR"/tmp ];then
329 echo
330 echo " Error creating folder: "$SAVE_DIR"/tmp"
331 echo " This shouldn't be happening..."
332 exit 1
333 fi
334 echo 'done'
335
336 echo -n "Creating temp folders... "
337 rm -rf "$SAVE_DIR"/tmp/clonezilla-sysresccd-"$version".iso 2>/dev/null
338 rm -rf "$SAVE_DIR"/tmp/syscd 2>/dev/null
339 rm -rf "$SAVE_DIR"/tmp/clonecd 2>/dev/null
340 rm -rf "$SAVE_DIR"/tmp/clonezilla-sysresccd 2>/dev/null
341 mkdir "$SAVE_DIR"/tmp/syscd "$SAVE_DIR"/tmp/clonecd "$SAVE_DIR"/tmp/clonezilla-sysresccd 2>/dev/null
342 if [ ! -d "$SAVE_DIR"/tmp/syscd ];then
343 echo
344 echo " Error creating temp folder: "$SAVE_DIR"/tmp/syscd"
345 exit 1
346 fi
347 if [ ! -d "$SAVE_DIR"/tmp/clonecd ];then
348 echo
349 echo " Error creating temp folder: "$SAVE_DIR"/tmp/clonecd"
350 exit 1
351 fi
352
353
354 if [ ! -d "$SAVE_DIR"/tmp/clonezilla-sysresccd ];then
355 echo
356 echo " Error creating temp folder: "$SAVE_DIR"/tmp/clonezilla-sysresccd"
357 exit 1
358 fi
359 echo 'done'
360 }
361
362 function errorMount(){
363 echo "$1"
364 cleanUp
365 exit 1
366 }
367
368 function errorISO(){
369 echo " Error creating new ISO file: "$SAVE_DIR"/tmp/output.iso"
370 rm "$SAVE_DIR"/tmp/clonezilla-sysresccd-"$outName""$version".iso 2>/dev/null
371 cleanUp
372 exit 1
373 }
374
375 function cleanUp(){
376 echo -n "
377 Cleaning up... "
378 umount "$SAVE_DIR"/tmp/clonecd 2>/dev/null
379 umount "$SAVE_DIR"/tmp/syscd 2>/dev/null
380 if [ -z "$cleanUpValue" ];then
381 rm -rf "$SAVE_DIR"/tmp/clonezilla-sysresccd 2>/dev/null
382 fi
383 rm -rf "$SAVE_DIR"/tmp/clonecd "$SAVE_DIR"/tmp/syscd 2>/dev/null
384 echo 'done'
385 echo
386 exit $exitStatus
387 }
388
389 function isnumber(){
390 if [ "$1" = "0" ];then return 0;fi
391 local n="$1"
392 (( n ++ )) 2>/dev/null || return 1
393 return 0
394 }
395
396 function readProfiles(){
397 local n=0
398 local tmpName=${profile[0]}
399 until [ -z "$tmpName" ];do
400 (( n ++ ))
401 tmpName=${profile[$n]}
402 done
403 numOfProfiles=$(( n - 1 ))
404 }
405
406 function applyProfile(){
407 test -z "${sysCDP[$1]}" || sysCD="${sysCDP[$1]}"
408 test -z "${cloneCDP[$1]}" || cloneCD="${cloneCDP[$1]}"
409 test -z "${cfgFileP[$1]}" || cfgFile="${cfgFileP[$1]}"
410 test -z "${splashP[$1]}" || splash="${splashP[$1]}"
411 test -z "${outNameP[$1]}" || outName="${outNameP[$1]}"
412 test -z "${preparerIDP[$1]}" || preparerID="${preparerIDP[$1]}"
413 test -z "${publisherP[$1]}" || publisher="${publisherP[$1]}"
414 test -z "${volLabelP[$1]}" || volLabel="${volLabelP[$1]}"
415 test -z "${exScriptP[$1]}" || exScript="${exScriptP[$1]}"
416 # test -z "${DebianLiveFolderP[$1]}" || DebianLiveFolder="${DebianLiveFolderP[$1]}"
417 }
418
419 function printHelp(){
420 echo "$(basename $0) - v $version - Spiros Georgaras <sng@hellug.gr>
421 A utility to create a multi boot CD containing
422 Clonezilla Live CD and
423 System Rescue CD
424 (they have to be downloaded seperately)
425
426 Usage: $(basename $0) [options]
427 Available options are:
428 a run in auto mode (no confirmation, assume yes to
429 all questions asked, no ISO burning to disk)
430 s show profiles and let user select profile to use
431 p [number] use profile number
432 f copy files only. Don't create ISO file and don't
433 burn anything on CD
434 nf don't copy files. Use files existing in folder
435 \""$SAVE_DIR"/tmp/clonezilla-sysresccd\".
436 *** Caution: Dangerous!!! ***
437 i only create ISO file. Don't burn anything on CD
438 b burn a previously created ISO file
439 d [folder] Use [folder]/tmp as temporary and output folder
440 instead of $HOME/tmp
441 x [script] A user defined and written BASH script
442 to be executed just before mastering the CD
443 g [arch] Download ISO files and exit. $(basename $0)
444 will download the appropriate ISO files in
445 order to succesfully build Clonezilla-SysRescCD.
446 [arch] refers to Clonezilla Live architecture
447 (i686,i486 or amd64 - use all to get them all)
448 SystemRescueCD will be downloaded in any case
449 v print version and exit
450 h print this screen and exit
451
452 More information on available customization in file
453 /root/.clonezilla-sysresccd/clonezilla-sysresccd.conf"
454 }
455
456 function printVersion(){
457 echo "$(basename $0) - v $version - Spiros Georgaras <sng@hellug.gr>
458 A utility to create a multi boot CD containing
459 Clonezilla Live CD and
460 System Rescue CD
461 (they have to be downloaded seperately)"
462 exit
463 }
464
465 # function decectDVDWriter(){
466 # local z
467 # # local DEV0 DEV1
468 # local CDW0 CDW1
469 # local DVDW0 DVDW1
470 #
471 # z=`cat /proc/sys/dev/cdrom/info 2>/dev/null | grep name | sed 's/.*name://' | sed 's/[ ][ ]*/ /g'| sed 's/^[ ][ ]*//' `
472 # DEV0=`echo "$z" | sed 's/\([^ ]*\).*/\1/'`
473 # DEV1=`echo "$z" | sed 's/[^ ]* *\([^ ]*\)/\1/'`
474 #
475 # z=`cat /proc/sys/dev/cdrom/info 2>/dev/null| grep 'write' | grep 'DVD-R:'| sed 's/.*DVD-R://' | sed 's/[ ][ ]*/ /g'| sed 's/^[ ][ ]*//' `
476 # # echo z=$z
477 # DVDW0=`echo "$z" | sed 's/\([^ ]*\).*/\1/'`
478 # DVDW1=`echo "$z" | sed 's/[^ ]* *\([^ ]*\)/\1/'`
479 #
480 #
481 # z=`cat /proc/sys/dev/cdrom/info 2>/dev/null| grep 'write' | grep 'CD-R:'| sed 's/.*CD-R://' | sed 's/[ ][ ]*/ /g'| sed 's/^[ ][ ]*//' `
482 # # echo z=$z
483 # CDW0=`echo "$z" | sed 's/\([^ ]*\).*/\1/'`
484 # CDW1=`echo "$z" | sed 's/[^ ]* *\([^ ]*\)/\1/'`
485 #
486 # if ! test -z "$DEV0";then
487 # if [ "$DVDW0" = "1" ];then DVDRECORDER=/dev/"$DEV0";fi
488 # if [ "$CDW0" = "1" ];then CDRECORDER=/dev/"$DEV0";fi
489 # fi
490 #
491 # if ! test -z "$DEV1";then
492 # if test -z "$DVDRECORDER"; then
493 # if [ "$DVDW1" = "1" ];then
494 # DVDRECORDER=/dev/"$DEV1"
495 # fi
496 # fi
497 # if test -z "$CDRECORDER"; then
498 # if [ "$CDW1" = "1" ];then
499 # CDRECORDER=/dev/"$DEV1"
500 # fi
501 # fi
502 # fi
503 #
504 # }
505
506 function sourceProfiles(){
507 if [ -r /root/.clonezilla-sysresccd/profiles.conf ];then
508 . /root/.clonezilla-sysresccd/profiles.conf 2>/dev/null || profilesError=1
509 profilesExist=1
510 fi
511 if [ $profilesError -eq 1 ];then
512 echo " Error: Your profiles configuration file \"/root/.clonezilla-sysresccd/profiles.conf\""
513 echo " has errors and cannot be used. Please fix the problem and try again"
514 exit 1
515 fi
516 }
517
518
519 function readConfig(){
520 if [ -n "$configAlreadyRead" ];then return; fi
521 test "$(whoami)" = "root" || noRoot
522 [ -r /root/.clonezilla-sysresccd/clonezilla-sysresccd.conf ] || {
523 echo " Error: Your configuration file \"/root/.clonezilla-sysresccd/clonezilla-sysresccd.conf\""
524 echo " does not exist or can not be read. Please fix the problem and try again"
525 exit 1
526 }
527
528 . /root/.clonezilla-sysresccd/clonezilla-sysresccd.conf 2>/dev/null
529 if [ $? -ne 0 ];then
530 echo " Error: Your configuration file \"/root/.clonezilla-sysresccd/clonezilla-sysresccd.conf\""
531 echo " has errors and cannot be used. Please fix the problem and try again"
532 exit 1
533 fi
534 configAlreadyRead='true'
535 }
536
537 ####### Script starts here #######
538 SAVE_DIR="$HOME"
539
540 MKISOFS=genisoimage
541 onlyBurnISO=0
542 onlyCopyFiles=0
543 onlyCreateISO=0
544 noFileCopy=0
545 exitStatus=0
546
547 profilesExist=0
548 profilesError=0
549
550
551 while getopts ":asp:bfihvn:x:d:g:" Option
552 do
553 case $Option in
554 a)
555 auto=yes
556 ;;
557 s)
558 readConfig
559 sourceProfiles
560 if [ $profilesExist -eq 1 ];then
561 readProfiles
562 until [ ! -z "$prN" ];do
563 clear
564 echo "Available profiles"
565 for i in `seq 0 $numOfProfiles`;do
566 echo " Profile[$i]: ${profile[$i]}"
567 done
568 echo -n "Insert profile number ([0]-$numOfProfiles): "
569 read prN
570 test -z "$prN" && prN=0
571 isnumber "$prN" || prN=''
572 if [ $prN -gt $numOfProfiles ] 2>/dev/null; then prN='';fi
573 done
574 applyProfile $prN
575 else
576 echo " Error: You have requested to use profiles but your profiles configuration file"
577 echo " \"/root/.clonezilla-sysresccd/profiles.conf\" does not exist or cannot be read"
578 exit 1
579 fi
580 ;;
581 p)
582 readConfig
583 sourceProfiles
584 if [ $profilesExist -eq 1 ];then
585 if $(isnumber "$OPTARG");then
586 applyProfile $OPTARG
587 usingProfile=yes
588 currentProfile=$OPTARG
589 else
590 echo " Error in parameter: -p $OPTARG"
591 exit 1
592 fi
593 else
594 echo " Error: You have requested to use profile No $OPTARG but your profiles configuration file"
595 echo " \"/root/.clonezilla-sysresccd/profiles.conf\" does not exist or cannot be read"
596 exit 1
597 fi
598 ;;
599 b)
600 readConfig
601 onlyBurnISO=1;;
602 f)
603 readConfig
604 onlyCopyFiles=1;;
605 i)
606 readConfig
607 onlyCreateISO=1;;
608 x)
609 readConfig
610 [ -s "OPTARG" ] || {
611 echo " Error: The specified script \"$OPTARG\" cannot be found"
612 exit 1
613 }
614 [ -r "$OPTARG" ] && exScript="$OPTARG" || {
615 echo " Error: The specified script \"$OPTARG\" cannot be read"
616 exit 1
617 };;
618 h)
619 printHelp
620 exit
621 ;;
622 v)
623 printVersion
624 ;;
625 n)
626 readConfig
627 if [ "$OPTARG" != "f" ] ;then
628 echo "Error: Not a valid parameter -n$OPTARG"
629 exit 1
630 fi
631 noFileCopy=1
632 ;;
633 d)
634 SAVE_DIR="$OPTARG"
635 if [ ! -d "$SAVE_DIR" ]; then
636 mkdir "$SAVEDIR" 2>/dev/null
637 if [ -d "$SAVE_DIR" ];then
638 echo "Error: \"$SAVE_DIR\" cannot be created!!!"
639 exit 1
640 fi
641 fi
642 ;;
643 g)
644 ARCH="$OPTARG"
645 if [ "$ARCH" != "i486" ] && [ "$ARCH" != "i686" ] && [ "$ARCH" != "amd64" ] && [ "$ARCH" != "all" ];then
646 echo " Error in parameter -g. Should be -g [i668|i486|amd64|all]"
647 exit 1
648 fi
649 ;;
650 esac
651 done
652 shift $(($OPTIND - 1))
653
654 if [ -z "$ARCH" ];then
655 test "$(whoami)" = "root" || noRoot
656 else
657 evalPrograms
658 downloadIsoFiles $ARCH
659 exit
660 fi
661 # check auto mode
662 if [ -n "$auto" ];then
663 if [ -z "$usingProfile" ];then
664 echo ' Error: Parameter -a used without -p'
665 exit 1
666 fi
667 if [ "$onlyBurnISO" -eq 1 ];then
668 echo " Error: Conflicting parameters -a and -b used"
669 exit 1
670 fi
671 fi
672
673 # Check input parameters
674 checkInParms=0
675 checkInParms=$(( onlyBurnISO + onlyCreateISO + onlyCopyFiles + noFileCopy ))
676 if [ $noFileCopy -eq 1 ] && [ $onlyCreateISO -eq 1 ];then
677 okToContinue=1
678 elif [ $checkInParms -gt 1 ];then
679 echo " Error: Conflicting input parameters detected..."
680 exit 1
681 fi
682 if [ "$outName" = "" ];then
683 outFile="$SAVE_DIR"/tmp/clonezilla-sysresccd-"$version".iso
684 else
685 outFile="$SAVE_DIR"/tmp/clonezilla-sysresccd-"$outName"-"$version".iso
686 fi
687
688 if [ $onlyBurnISO -eq 0 ];then
689 if [ $noFileCopy -eq 0 ];then
690 while [ "$ans" != "y" ] || [ "$ans" = "Y" ];do
691 test -z "$sysCD" && getSysCD
692 test -z "$cloneCD" && getCloneCD
693 test -z "$cfgFile" && getcfgFile
694 test -z "$exScript" && getScript
695 # test -z "$DebianLiveFolder" && getDebianLiveFolder
696 clear
697 # echo -n "Current settings:
698 # System Rescue CD: $sysCD
699 # Clonezilla Live CD: $cloneCD
700 # isolinux.cfg to use: $cfgFile
701 # Debian Live folder: $DebianLiveFolder
702 # script to execute: $exScript
703 #
704 # Is this correct? (y/[n]): "
705
706 if [ -n "$auto" ]; then
707 ans=y
708 else
709 echo -n "Current settings:
710 System Rescue CD: $sysCD
711 Clonezilla Live CD: $cloneCD
712 isolinux.cfg to use: $cfgFile
713 script to execute: $exScript
714
715 Is this correct? (y/[n]): "
716
717 read ans
718 fi
719 if [ "$ans" = "n" ] || [ "$ans" = "N" ] || [ "$ans" = "" ];then
720 sysCD=''
721 cloneCD=''
722 cfgFile=''
723 fi
724 done
725 ans=''
726 while [ 1 ];do
727 test -z "$preparerID" && getPreparer
728 test -z "$publisher" && getPublisher
729 test -z "$volLabel" && getvolLabel
730
731 if [ -n "$auto" ]; then
732 ans=y
733 else
734 clear
735 echo -n "Current CD info:
736 Preparer: $preparerID
737 Publisher: $publisher
738 Volume label: $volLabel
739
740 Is this correct? (y/[n]): "
741 read ans
742 fi
743 if [ "$ans" = "n" ] || [ "$ans" = "N" ] || [ "$ans" = "" ];then
744 preparerID=''
745 publisher=''
746 volLabel=''
747 fi
748 if [ "$ans" = "y" ] || [ "$ans" = "Y" ];then break;fi
749 done
750 trap cleanUp 2
751 clear
752 echo "$(basename $0) - v $version - Spiros Georgaras <sng@hellug.gr>
753 "
754
755 if [ -n "$currentProfile" ];then
756 echo "Running profile: $currentProfile ($outName)"
757 fi
758
759 createTempFolders
760
761 echo -n "Mounting ISO files... "
762 mount "$sysCD" "$SAVE_DIR"/tmp/syscd -o ro,loop || errorMount ' Error mounting "System Rescue CD" file'
763 mount "$cloneCD" "$SAVE_DIR"/tmp/clonecd -o ro,loop || errorMount ' Error mounting Clonezilla" file'
764 echo 'done'
765 echo -n "Copying files... "
766 cp -RL "$SAVE_DIR"/tmp/syscd/* "$SAVE_DIR"/tmp/clonezilla-sysresccd
767 cp -RL "$SAVE_DIR"/tmp/clonecd/* "$SAVE_DIR"/tmp/clonezilla-sysresccd
768 echo 'done'
769
770
771 # echo -n "Extracting boot programs... "
772 echo "Extracting boot programs... "
773 cd "$SAVE_DIR"/tmp/clonezilla-sysresccd/bootprog
774 mkdir tmp
775 cp *zip tmp
776 unzip -x sys*zip win32/syslinux.exe
777 mv win32/* .
778 rmdir win32
779 unzip -x gr* gr*/grub.exe
780 mv gr*/grub.exe .
781 rm -rf grub4dos*
782 cp tmp/* .
783 rm -rf tmp
784 # echo 'done'
785
786 if [ ! -z "$splash" ];then
787 echo -n "Copying new spalsh screen... "
788 cp -L "$splash" "$SAVE_DIR"/tmp/clonezilla-sysresccd/isolinux/ocswp.png
789 echo 'done'
790 else
791 cp -L /root/.clonezilla-sysresccd/files/default-ocswp.png "$SAVE_DIR"/tmp/clonezilla-sysresccd/isolinux/ocswp.png
792 fi
793
794 echo -n "Copying Super Grub Disk... "
795 cp -L /root/.clonezilla-sysresccd/files/sgd.img "$SAVE_DIR"/tmp/clonezilla-sysresccd/bootdisk/sgd.img && echo 'done' || {
796 echo
797 echo
798 echo
799 echo " Error: Copying Super Grub Disk failed!!!"
800 echo
801 echo " Please make sure that the image file exists"
802 echo " Image file: "$SAVE_DIR"/tmp/clonezilla-sysresccd/bootdisk/sgd.img"
803 echo
804 echo
805 cleanUp
806 exit 1
807 }
808 if [ -e /root/.clonezilla-sysresccd/files/sgd2.img ];then
809 echo -n "Copying Super Grub Disk 2... "
810 cp -L /root/.clonezilla-sysresccd/files/sgd2.img "$SAVE_DIR"/tmp/clonezilla-sysresccd/bootdisk/grubdisk.img && echo 'done' || {
811 echo
812 echo
813 echo
814 echo " Error: Copying Super Grub Disk 2 failed!!!"
815 echo
816 echo " Please make sure that the image file exists"
817 echo " Image file: "$SAVE_DIR"/tmp/clonezilla-sysresccd/bootdisk/sgd2.img"
818 echo
819 echo
820 cleanUp
821 exit 1
822 }
823 fi
824 echo -n "Copying new cfg file(s)... "
825 if [ -z $(echo "$cfgFile" | grep 'cfg$') ];then
826 tar -C "$SAVE_DIR"/tmp/clonezilla-sysresccd -xzhf /root/.clonezilla-sysresccd/files/menu-for-iso.tar.gz
827 else
828 cp -L "$cfgFile" "$SAVE_DIR"/tmp/clonezilla-sysresccd/isolinux/isolinux.cfg
829 fi
830 echo 'done'
831
832 echo -n "Creating folder restorecd... "
833 WHERE="$(pwd)"
834 mkdir "$SAVE_DIR"/tmp/clonezilla-sysresccd/restorecd 2>/dev/null
835 cd /root/.clonezilla-sysresccd/files
836 cp -L pre* ocs-iso what-cd patch-clonezilla-sysresccd continue-multi-cd isolinux-restore-cd.cfg \
837 isolinux-restore-cd-ram.cfg menu-for-iso.tar.gz doc.tar.gz imginfo imgconvert cust-menu "$SAVE_DIR"/tmp/clonezilla-sysresccd/restorecd
838 fsplash=`basename "$splash"`
839 if [ "$fsplash" = "default-ocswp-i686.png" ] || [ "$fsplash" = "default-ocswp-i486.png" ] || [ "$fsplash" = "default-ocswp-amd64.png" ];then
840 cp $(echo "$splash" | sed 's/default/default-restore/') "$SAVE_DIR"/tmp/clonezilla-sysresccd/restorecd/ocswp.png
841 else
842 cp -L default-restore-ocswp.png "$SAVE_DIR"/tmp/clonezilla-sysresccd/restorecd/ocswp.png
843 fi
844 cp sbminst "$SAVE_DIR"/tmp/clonezilla-sysresccd/restorecd
845
846 # Copy Smart Boot Manager and rawrite-fdimage to bootdisk
847 mkdir "$SAVE_DIR"/tmp/clonezilla-sysresccd/rawrite
848 cp raw* fd* *dll "$SAVE_DIR"/tmp/clonezilla-sysresccd/rawrite
849 cp sbm.img "$SAVE_DIR"/tmp/clonezilla-sysresccd/bootdisk
850 cd "$DebianLiveFolder" 2>/dev/null || debFilesError=yes
851 # if [ -s files.tar.gz ];then
852 # cp -L files.tar.gz "$SAVE_DIR"/tmp/clonezilla-sysresccd/restorecd/ 2>/dev/null || debFilesError=yes
853 # else
854 # [ -e "$DebianLiveFolder"/unifont.bgf ] || {
855 # uniFontCopied=yes
856 # cp -L /root/.clonezilla-sysresccd/files/unifont.bgf "$DebianLiveFolder"
857 # }
858 # tar chzf "$SAVE_DIR"/tmp/clonezilla-sysresccd/restorecd/files.tar.gz unifont.bgf debian-live-for-ocs.iso 2>/dev/null || debFilesError=yes
859 # [ -z "$uniFontCopied" ] || rm "$DebianLiveFolder"/unifont.bgf
860 # fi
861 # [ -z "$debFilesError" ] || {
862 # echo
863 # echo
864 # echo
865 # echo " Error: Copying files.tar.gz failed!!!"
866 # echo
867 # echo " Please make sure that the variable DebianLiveFolder points either to"
868 # echo " the folder where the files unifont.bgf and debian-live-for-ocs.iso"
869 # echo " reside, or the files files.tar.gz (which contains unifont.bgf and"
870 # echo " debian-live-for-ocs.iso) can be found"
871 # echo
872 # echo
873 # echo
874 # cleanUp
875 # exit 1
876 # }
877 cd "$WHERE"
878 echo "done"
879
880 echo -n "Copying documentation files... "
881 cd "$SAVE_DIR"/tmp/clonezilla-sysresccd
882 tar xzhf "$SAVE_DIR"/tmp/clonezilla-sysresccd/restorecd/doc.tar.gz
883 echo 'done'
884
885 if [ ! -z "$exScript" ];then
886 # echo -n "Executing external script: \"$exScript\"... "
887 echo -n "Executing external script... "
888 . "$exScript" || {
889 echo
890 echo
891 echo
892 echo " Error: The execution of the script failed!!!"
893 echo " Please correct it and try again"
894 echo
895 echo " Script: \"$exScript\""
896 cleanUp
897 exit 1
898 }
899 echo 'done'
900 fi
901 # echo
902 # echo
903 # echo
904 else
905 trap cleanUp 2
906 cleanUpValue=1
907 if [ ! -d "$SAVE_DIR"/tmp/clonezilla-sysresccd ];then
908 echo " Error accessing folder \""$SAVE_DIR"/tmp/clonezilla-sysresccd\""
909 exitStatus=1
910 cleanUp
911 fi
912 fi
913
914 # move extra folders into utils
915 mv "$SAVE_DIR"/tmp/clonezilla-sysresccd/rawrite "$SAVE_DIR"/tmp/clonezilla-sysresccd/bootprog "$SAVE_DIR"/tmp/clonezilla-sysresccd/utils
916 mv "$SAVE_DIR"/tmp/clonezilla-sysresccd/version "$SAVE_DIR"/tmp/clonezilla-sysresccd/SystemRescueCD-Version
917
918 # copy png files from isolinux/ to syslinux/
919 cp "$SAVE_DIR"/tmp/clonezilla-sysresccd/isolinux/*.png "$SAVE_DIR"/tmp/clonezilla-sysresccd/syslinux
920 #
921 # re-build clonezilla filesystem.squashfs
922 #
923 echo -n "Rebuilding Clonezilla squashfs... "
924 cd "$SAVE_DIR"/tmp/clonezilla-sysresccd/live
925 unsquashfs filesystem.squashfs 2>/dev/null 1>&2
926 cp -r ../README* ../doc ../restorecd squashfs-root
927 # mksquashfs squashfs-root aa.squashfs -always-use-fragments -no-duplicates -all-root 2>/dev/null 1>&2
928 if [ "$clonType" = "amd64" ];then
929 mksquashfs squashfs-root aa.squashfs -comp xz -Xbcj ia64 -Xdict-size 75% -always-use-fragments -no-duplicates -all-root 2>/dev/null 1>&2
930 else
931 mksquashfs squashfs-root aa.squashfs -comp xz -Xbcj x86 -Xdict-size 75% -always-use-fragments -no-duplicates -all-root 2>/dev/null 1>&2
932 fi
933 mv aa.squashfs filesystem.squashfs
934 rm -rf squashfs-root
935 cd
936 echo 'done'
937
938 if [ $onlyCopyFiles -eq 1 ];then
939 cleanUpValue=1
940 # echo
941 # echo
942 echo "Both CDs have been copyied in: "$SAVE_DIR"/tmp/clonezilla-sysresccd"
943 cleanUp
944 fi
945 echo
946 if [ -z "$auto" ]; then
947 echo -n "Ready to create new ISO file.
948
949 ************************************************************************
950 Ready to master your CD. If you want to alter any files contained
951 in the CD, now is the right time.
952 CD root is \""$SAVE_DIR"/tmp/clonezilla-sysresccd\"
953
954 When you are done
955 ***********************************************************************
956
957 Press ENTER to continue... "
958 read
959 else
960 echo "Creating new ISO file."
961 fi
962 find "$SAVE_DIR"/tmp/clonezilla-sysresccd -name "*~" -exec rm '{}' ';'
963 # $MKISOFS -quiet -f -r -J -o "$outFile" -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -iso-level 3 -joliet-long -input-charset utf-8 -output-charset utf-8 -V "$volLabel" -publisher "$publisher" -p "$preparerID" "$SAVE_DIR"/tmp/clonezilla-sysresccd || errorISO
964 $MKISOFS -quiet -f -r -J -o "$outFile" -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -V "$volLabel" -publisher "$publisher" -p "$preparerID" "$SAVE_DIR"/tmp/clonezilla-sysresccd || errorISO
965 echo "
966 Done creating new ISO file
967 The file is saved as $outFile"
968 ans=c
969 chIsoHyb=`type isohybrid 2>/dev/null`
970 if [ -n "$chIsoHyb" ];then
971 echo -n "Isohybriding $outFile... "
972 isohybrid "$outFile"
973 echo 'done'
974 fi
975
976 if [ -z "$auto" ];then
977 echo '
978
979 '
980 fi
981 else
982 while [ ! -r "$outFile" ];do
983 echo 'Insert "clonezilla-resccd" ISO file name'
984 echo -n "> "
985 read outFile
986 done
987 ans=y
988 fi
989
990 if [ $onlyCreateISO -eq 1 ];then ans=n;fi
991
992 while [ 1 ];do
993 if [ "$ans" = "" ];then ans=y;fi
994 if [ "$ans" = "y" ] || [ "$ans" = "Y" ] || [ "$ans" = "n" ] || [ "$ans" = "N" ];then break;fi
995 if [ -n "$auto" ]; then
996 ans=n
997 else
998 echo -n "Do you want to burn this ISO file? ([y]/n): "
999 read ans
1000 fi
1001 done
1002 burnISO=0
1003 if [ "$ans" = "y" ] || [ "$ans" = "Y" ];then
1004 echo
1005 echo "File to burn: $outFile"
1006 echo
1007 burnISO=1
1008 # decectDVDWriter
1009
1010 # CDRECORDER=$(sh /root/.clonezilla-sysresccd/files/what-cd -wb)
1011 chmod +x /root/.clonezilla-sysresccd/files/what-cd
1012 CDRECORDER=$(/root/.clonezilla-sysresccd/files/what-cd -wb)
1013 chmod -x /root/.clonezilla-sysresccd/files/what-cd
1014
1015 echo CD redorder found: "$CDRECORDER"
1016 ans=''
1017 until [ "$ans" = "y" ] || [ "$ans" = "Y" ];do
1018 echo -n "Is this correct? ([y]/n): "
1019 read ans
1020 if [ "$ans" = "y" ] || [ "$ans" = "Y" ] || [ "$ans" = "" ];then
1021 ans='y'
1022 cdW="$CDRECORDER"
1023 else
1024 echo -n "Insert your CD redorder device name ($CDRECORDER): "
1025 read cdW
1026 if [ "$cdW" = "" ];then cdW="$CDRECORDER";fi
1027 echo CD redorder: "$cdW"
1028 fi
1029 done
1030 fi
1031
1032 if [ $burnISO -eq 1 ];then
1033 ans=c
1034 while [ 1 ];do
1035 if [ "$ans" = "" ];then ans="y";fi
1036 if [ "$ans" = "y" ] || [ "$ans" = "Y" ] || [ "$ans" = "n" ] || [ "$ans" = "N" ];then break;fi
1037 echo -n "Does the CD need blanking (RW-CD)? ([y]/n): "
1038 read ans
1039 done
1040 if [ "$ans" = "y" ] || [ "$ans" = "Y" ];then
1041 blankCD=1
1042 else
1043 blankCD=0
1044 fi
1045 ans=c
1046 while [ 1 ];do
1047 if [ "$ans" = "" ];then ans="y";fi
1048 if [ "$ans" = "y" ] || [ "$ans" = "Y" ] || [ "$ans" = "n" ] || [ "$ans" = "N" ];then break;fi
1049 echo -n "Do you wan to to start a multi-session CD? ([y]/n): "
1050 read ans
1051 done
1052 if [ "$ans" = "y" ] || [ "$ans" = "Y" ];then
1053 MULTI='-multi'
1054 else
1055 MULTI=''
1056 fi
1057
1058 clear
1059 echo "Ready to burn the ISO file to CD. Please load a (re)writable CD
1060 in $cdW and Press ENTER to continue... "
1061 read
1062 echo -n "Unmounting CD... "
1063 while [ $(mount |grep "$cdW" | wc -l) -gt 0 ] ;do
1064 umount "$cdW" 2>/dev/null
1065 done
1066 echo 'done'
1067 if [ $blankCD -eq 1 ];then
1068 echo "Blanking CD...
1069 -----------"
1070 cdrecord dev="$cdW" blank=fast -eject || errorMount '
1071
1072 Error: Blanking procedure failed...
1073
1074
1075 '
1076 fi
1077 echo
1078 echo "Burinng ISO file
1079 ----------------"
1080 cdrecord -v dev="$cdW" driveropts=burnfree "$MULTI" -eject "$outFile" || errorMount '
1081
1082 Error: Burning procedure failed...
1083
1084
1085 '
1086 fi
1087 cleanUp

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26