/[clonezilla-sysresccd]/trunk/create-clonezilla-sysresccd/files/ocs-iso
ViewVC logotype

Annotation of /trunk/create-clonezilla-sysresccd/files/ocs-iso

Parent Directory Parent Directory | Revision Log Revision Log


Revision 190 - (hide annotations)
Sun Aug 26 14:25:43 2012 UTC (11 years, 7 months ago) by sng
File size: 41984 byte(s)
updating cfg files (removed rannish and dban from tools),
changing menu selection color, renamed pack-them to 
update-cfgs (script to create a tarball containing CFGs

1 sng 47 #!/bin/bash
2     # Author: Steven Shiau <steven _at_ nchc org tw>
3     # License: GPL
4     # Description: This program will put Debian Live minimal + DRBL/Clonezilla program into a bootable iso file.
5    
6     #
7     DRBL_SCRIPT_PATH="${DRBL_SCRIPT_PATH:-/opt/drbl/}"
8    
9     . $DRBL_SCRIPT_PATH/sbin/drbl-conf-functions
10     . $DRBL_SCRIPT_PATH/conf/drbl-ocs.conf
11     . $DRBL_SCRIPT_PATH/sbin/ocs-functions
12    
13     # other default settings
14     # If insert_mode=prog_only, only copy DRBL/Clonezilla programs only, no ocs images.
15     insert_mode="prog_and_img"
16     img_size_sum=0
17     # Default to output the result to iso file, another vaule is cdwriter.
18     output_mode="file"
19     # If there is any file larger then 2GB, we need to turn on -allow-limited-size option for genisoimage. Actually it can be 4GB. Anyway, here we use 2GB. (man genisoimage for more details)
20     iso9660_file_size_limit="2000M" # For command "find" to find the file size (unit: Bytes)
21    
22     # Excluding list for mkisofs
23     # We will create it like this:
24     # -x $DEBIAN_ISO_TMP/isolinux -x $DEBIAN_ISO_TMP/md5sum.txt -x $DEBIAN_ISO_TMP/casper/memtest
25     # "home" should also be excluded since if it exists, it will conflict with the real home later we will merge. Ref: https://sourceforge.net/forum/message.php?msg_id=7599463 Thanks to Andrew Bloxom for this idea.
26 sng 59 mkiso_exclude_list_1="isolinux syslinux md5sum.txt doc live etc pkg ocs-live.d utils"
27 sng 47 mkiso_exclude_list_2="home" # This should not be a duplicated count.
28     mkiso_exclude_list="$mkiso_exclude_list_1 $mkiso_exclude_list_2"
29 sng 190 # Flag to put EFI booting image in iso
30     enabled_EFI=""
31 sng 47
32     #
33     prog="$(basename $0)"
34     prog_option="$*"
35    
36     # functions
37     USAGE() {
38     echo "Usage:"
39     echo "To put clonezilla image into live CD:"
40     echo "$prog [OPTION] CLONEZILLA_IMAGE_NAME"
41     echo "OPTION:"
42     language_help_prompt_by_idx_no
43     echo "-a, --file-name-prefix NAME Assign the output file name as NAME.iso. $0 will auto append '.iso' in the end of filename."
44     echo "-b, --bg-mode [text|graphic] Assign the background of boot menu. Default is graphic"
45     echo "-m, --custom-ocs PATH/custom-ocs Use the customized ocs program 'custom-ocs' instead of the default one. Note! PATH should be assigned so that it can be found. This is advanced mode."
46     echo "-e, --extra-param PARAM Assign extra parameter PARAM for clonezilla live to run, PARAM will be appended when run in ocs-live-restore or ocs."
47     echo "-g, --ocs-live-language LANGUAGE Assign the language when using clonezilla live, available languages are en_US.UTF-8, zh_TW.UTF-8 "
48     echo "-k, --ocs-live-keymap KEYMAP Assign the keyboard when using clonezilla live. Use full path for KEYMAP, for example: /usr/share/keymaps/i386/azerty/fr.kmap.gz. If 'NONE' is used, the default one (US keyboard) will be use."
49     echo "-t, --ocs-live-batch Set clonezilla live to run in batch mode, usually it's for restoring. If this mode is set, some dialog question will be ignored."
50     echo "-i, --assign-version-no NO Assign the version no as NO instead of date. This only works when using with option -s."
51     echo "-j, --debian-iso ISO_FILE Assign Debian live template iso file name as ISO_FILE to be used to create Clonezilla live."
52     echo "-n, --debian-iso-etc-url-path ISO_ETC_FILE_URL Assign the url (Ex. http://localhost/clonezilla-live/template-iso) for Debian live template iso file as ISO_FILE_URL to be used to create Clonezilla live."
53     echo "-p, --image-path Assign the clonezilla image path where CLONEZILLA_IMAGE_NAME exists. Default = $ocsroot"
54     echo "-s, --skip-image Do not include any clonezilla image. The is used to created a live CD with DRBL/Clonezilla programs only."
55     echo "-f, --on-the-fly DEV Write the output to CD/DVD writer DEV (such as /dev/hdc) instead of creating an ISO file."
56     echo "-o, --normal-menu When a clonezilla image is inserted, by default only restore menu will be shown in the created ISO file. If you want to show normal menu, i.e. with save and restore menu, use this one."
57     echo "-x, --extra-boot-param EXTRA_PARAM Assign extra boot parameter EXTRA_PARAM for clonezilla live kernel to read. These parameters are the same with that from live-initramfs. Ex. \"noprompt\" can be use to not prompt to eject the CD on reboot."
58     echo "-u, --include-dir DIR Include a dir in the target iso file."
59     echo "--ocs-live-boot-menu-option EXTRA_OPTION Assign an extra option for ocs-live-boot-menu. //NOTE// Do not put '-' in this EXTRA_OPTION, $0 will add that automatically. e.g. if you want to add -s1 for ocs-live-boot-menu to run, use 's1' only."
60     echo "$prog will download a template Debian live CD for clonezilla iso file if ncecessary. You can also download it by yourself, and put it in the working directory when you run $prog. If you want to create that template iso file in Debian Etch, run create-debian-live."
61     echo "NOTE! Due to the limitation in mkisofs, this program does not work in clonezilla image file larger than $FILE_LIMIT MB."
62     echo "Ex:"
63     echo "To put clonezilla image sarge-ocs (located in /home/partimag in clonezilla server) to Live CD, you can run:"
64     echo " $prog sarge-ocs"
65     echo "To put more images, just append them, such as:"
66     echo " $prog sarge-ocs etch-ocs"
67     echo "To create a Live CD with DRBL/Clonezilla programs:"
68     echo " $prog -s"
69     echo "To specify the Debian live template iso, run like this:"
70     echo " $prog -j debian-live-for-ocs-1.0.1-3.iso -n http://localhost/clonezilla-live/template-iso/testing -s"
71     echo "To put clonezilla image sarge-ocs, etch-ocs to to Live CD, and write it to cd writer /dev/hdc, you can run:"
72     echo " $prog -f /dev/hdc sarge-ocs etch-ocs"
73     echo "To create an iso file for restoring with clonezilla image sarge-r5 builtin, and make it boot then restore the image sarge-r5 to hda in unattended mode (Only confirmation in the beginning), you can run:"
74     echo " $prog -g en_US.UTF-8 -t -k NONE -e \"-b -c restoredisk sarge-r5 hda\" sarge-r5"
75     echo "To create an iso file to run your own custom-ocs program:"
76     echo " $prog -g en_US.UTF-8 -k NONE -s -m ./custom-ocs"
77     }
78     #
79     check_file_size_in_ocs_image() {
80     local img_path="$1"
81     local size_t
82 sng 94 local size_t_tot=0
83 sng 59 for ifile in $img_path/*; do
84 sng 47 size_t="$(du -Lms $ifile | awk -F" " '{print $1}')"
85 sng 94 size_t_tot=$((size_t_tot+size_t))
86     done
87     if [ "$size_t_tot" -gt "$FILE_LIMIT" ]; then
88 sng 47 ################################################################################
89     # Section edited by S. Georgaras <sng@hellug.gr>
90 sng 190
91 sng 93 # [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
92     # echo "$ifile size ($size_t MB) is too large! $msg_mkisofs_unable_process_that"
93     # [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
94     # echo "$msg_are_u_sure_u_want_to_continue"
95     # echo -n "[y/N] "
96     # read cont_ans
97     # case "$cont_ans" in
98     # y|Y|[yY][eE][sS])
99     # echo $msg_ok_let_do_it
100     # ;;
101     # *)
102     # echo "Abort!"
103     # exit 2
104     # esac
105 sng 94 whiptail --backtitle Clonezilla-SysRescCD --title ' Excessive Image Size ' --yesno "The image file \"$(basename ${1})\" is too large ($size_t_tot MB) and
106     $msg_mkisofs_unable_process_that
107 sng 47
108 sng 94 $msg_are_u_sure_u_want_to_continue" 0 60
109 sng 47 if [ $? -eq 1 ];then
110     exit 1
111     fi
112 sng 94 # going2RAM="prog_only"
113 sng 47 break
114 sng 94 fi
115     # done
116 sng 47 ################################################################################
117     }
118    
119     #
120     clean_tmp_dir() {
121 sng 176 if [ -d "$DEBIAN_ISO_TMP" -a -n "$DEBIAN_ISO_TMP" ]; then
122     # Force to unmount, althouth it might have beed unmounted, or maybe not (ctrl-c interrupt).
123     umount $DEBIAN_ISO_TMP &>/dev/null
124     rmdir $DEBIAN_ISO_TMP &>/dev/null
125     fi
126     if [ -d "$ISOSYSLNX_TMP" -a -n "$(echo $ISOSYSLNX_TMP | grep "ocs_isosyslnx")" ]; then
127     rm -rf $ISOSYSLNX_TMP
128     fi
129     if [ -d "$WD_TMP" -a -n "$(echo $WD_TMP | grep "ocs_iso_wd")" ]; then
130     rm -rf $WD_TMP
131     fi
132 sng 47 } # End of clean_tmp_dir
133    
134     #
135     check_if_root
136    
137     # default settings:
138     ocs_live_batch="no"
139     custom_ocs=""
140     normal_menu_with_insert_image="no"
141     template_mode=""
142    
143     # Parse command-line options
144     while [ $# -gt 0 ]; do
145     case "$1" in
146     -a|--file-name-prefix)
147     shift
148     if [ -z "$(echo $1 |grep ^-.)" ]; then
149     # skip the -xx option, in case
150     target_iso_prefix="$1"
151     shift
152     fi
153     [ -z "$target_iso_prefix" ] && USAGE && exit 1
154     ;;
155     -l|--language)
156     shift
157     if [ -z "$(echo $1 |grep ^-.)" ]; then
158     # skip the -xx option, in case
159     specified_lang="$1"
160     shift
161     fi
162     [ -z "$specified_lang" ] && USAGE && exit 1
163     ;;
164     -b|--bg-mode)
165     shift
166     if [ -z "$(echo $1 |grep ^-.)" ]; then
167     # skip the -xx option, in case
168     bg_mode="$1"
169     shift
170     fi
171     [ -z "$bg_mode" ] && USAGE && exit 1
172     ;;
173     -m|--custom-ocs)
174     shift
175     if [ -z "$(echo $1 |grep ^-.)" ]; then
176     # skip the -xx option, in case
177     custom_ocs="$1"
178     shift
179     fi
180     [ -z "$custom_ocs" ] && USAGE && exit 1
181     ;;
182     -e|--extra-param)
183     shift
184     # extra param might begin with -, i.e. Ex. -b -p true. Therefore we should not skip this.
185     ocs_live_extra_param="$1"
186     shift
187     [ -z "$ocs_live_extra_param" ] && USAGE && exit 1
188     ;;
189     -i|--assign-version-no)
190     shift
191     if [ -z "$(echo $1 |grep ^-.)" ]; then
192     # skip the -xx option, in case
193     version_no="$1"
194     shift
195     fi
196     [ -z "$version_no" ] && USAGE && exit 1
197     ;;
198     -g|--ocs-live-language)
199     shift
200     if [ -z "$(echo $1 |grep ^-.)" ]; then
201     # skip the -xx option, in case
202     ocs_lang="$1"
203     shift
204     fi
205     [ -z "$ocs_lang" ] && USAGE && exit 1
206     ;;
207     -k|--ocs-live-keymap)
208     shift
209     if [ -z "$(echo $1 |grep ^-.)" ]; then
210     # skip the -xx option, in case
211     ocs_live_keymap="$1"
212     shift
213     fi
214     [ -z "$ocs_live_keymap" ] && USAGE && exit 1
215     ;;
216     -p|--image-path)
217     shift
218     if [ -z "$(echo $1 |grep ^-.)" ]; then
219     # skip the -xx option, in case
220     image_path="$1"
221     shift
222     fi
223     [ -z "$image_path" ] && USAGE && exit 1
224     ;;
225     -s|--skip-image)
226     insert_mode="prog_only"
227 sng 93 #
228     # Section inserted by S. Georgaras <sng@hellug.gr>
229     # Variable to know that -s was actually used
230     #
231     ORIGINAL_INSERT_MODE='-o'
232     #
233     ##################################################
234 sng 47 shift ;;
235     -t|--ocs-live-batch)
236     ocs_live_batch="yes"
237     shift ;;
238     -o|--normal-menu)
239     normal_menu_with_insert_image="yes"
240     shift ;;
241     -f|--on-the-fly)
242     shift
243     output_mode="cdwriter"
244     if [ -z "$(echo $1 |grep ^-.)" ]; then
245     # skip the -xx option, in case
246     output_dev="$1"
247     shift
248     fi
249     [ -z "$output_dev" ] && USAGE && exit 1
250     ;;
251     -j|--debian-iso)
252     shift
253     if [ -z "$(echo $1 |grep ^-.)" ]; then
254     # skip the -xx option, in case
255     DEBIAN_ISO="$1"
256     template_mode="from-download-live-media"
257     shift
258     fi
259     [ -z "$DEBIAN_ISO" ] && USAGE && exit 1
260     ;;
261     -n|--debian-iso-etc-url-path)
262     shift
263     if [ -z "$(echo $1 |grep ^-.)" ]; then
264     # skip the -xx option, in case
265     DEBIAN_ISO_ETC_PATH="$1"
266     shift
267     fi
268     [ -z "$DEBIAN_ISO_ETC_PATH" ] && USAGE && exit 1
269     ;;
270     -x|--extra-boot-param)
271     shift
272     if [ -z "$(echo $1 |grep ^-.)" ]; then
273     # skip the -xx option, in case
274     live_extra_boot_param="$1"
275     shift
276     fi
277     [ -z "$live_extra_boot_param" ] && USAGE && exit 1
278     ;;
279     --ocs-live-boot-menu-option)
280     shift
281     if [ -z "$(echo $1 |grep ^-.)" ]; then
282     # skip the -xx option, in case
283     ocs_live_boot_menu_option="$1"
284     shift
285     fi
286     [ -z "$ocs_live_boot_menu_option" ] && USAGE && exit 1
287     ;;
288     -u|--include-dir)
289     shift
290     if [ -z "$(echo $1 |grep ^-.)" ]; then
291     # skip the -xx option, in case
292     include_dir="$1"
293     include_dir_graft_point="$include_dir=$include_dir"
294     shift
295     fi
296     [ -z "$include_dir" ] && USAGE && exit 1
297     ;;
298     -*) echo "${0}: ${1}: invalid option" >&2
299     USAGE >& 2
300     exit 2 ;;
301     *) break ;;
302     esac
303     done
304     ocs_image="$*"
305     # strip the / to avoid problem
306     ocs_image="$(echo $ocs_image | sed -e "s|/||g")"
307    
308     [ -z "$ocs_image" -a "$insert_mode" = "prog_and_img" ] && USAGE && exit 1
309     [ -z "$image_path" ] && image_path=$ocsroot
310     [ -z "$bg_mode" ] && bg_mode="$BG_MODE_DEF"
311     [ -z "$DEBIAN_ISO_ETC_PATH" ] && DEBIAN_ISO_ETC_PATH="$DEBIAN_ISO_ETC_PATH_DEF"
312     [ -z "$DEBIAN_ISO" ] && DEBIAN_ISO="$DEBIAN_ISO_DEF"
313     [ -n "$ocs_live_boot_menu_option" ] && ocs_live_boot_menu_option="-$ocs_live_boot_menu_option"
314     DEBIAN_ISO_URL="$DEBIAN_ISO_ETC_PATH/$DEBIAN_ISO"
315     md5_file_url="$DEBIAN_ISO_ETC_PATH/$md5_file"
316    
317     #
318     ask_and_load_lang_set $specified_lang
319    
320     #
321     if ! type genisoimage &>/dev/null; then
322     [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
323     echo "Program genisoimage not found!"
324     [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
325     echo "$msg_program_stop"
326     exit 1
327     fi
328    
329 sng 190 # Check if genisoimage support -efi-boot option
330     if [ -n "$(LC_ALL=C genisoimage --help 2>&1 | grep -E -- "-efi-boot")" ]; then
331     enabled_EFI="true"
332     else
333     [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
334     echo "Warning! Setting EFI boot image name is not supported in genisoimage!"
335     [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
336     enabled_EFI="false"
337     fi
338    
339 sng 47 if [ "$output_mode" = "cdwriter" -a type wodim &>/dev/null ]; then
340     [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
341     echo "Program wodim is not aviailable! You have to install it."
342     [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
343     echo "$msg_program_stop"
344     exit 1
345     fi
346    
347     if [ -n "$custom_ocs" -a ! -e "$custom_ocs" ]; then
348     [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
349     echo "File $custom_ocs not found!"
350     [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
351     echo "$msg_program_stop"
352     exit 1
353     fi
354    
355     # Format the lang variable. This is for clonezilla live running, not for ocs-iso.
356     case "$ocs_lang" in
357     zh_TW.BIG5|zh_TW.big5|tw.BIG5)
358     [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
359     echo "For Traditional Chinese locale, Clonezilla live only supports unicode (zh_TW.UTF-8), not Big5 encoding (zh_TW.BIG5). Force to use UTF-8 for Traditional Chinese in Clonezilla live."
360     [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
361     ocs_lang="zh_TW.UTF-8" ;;
362     zh_TW.UTF-8|zh_TW.utf8|tw.UTF-8|tw.utf8)
363     ocs_lang="zh_TW.UTF-8" ;;
364     esac
365    
366     # Decide where is the $LIVE_MEDIA
367     get_live_media_mnt_point &>/dev/null
368    
369     # Some temp dirs
370     # Thanks to Orgad Shaneh. Since the temp files from Clonezilla live won't take too much space, we just use /tmp/ to store these temp files.
371     #if [ -w ./ ]; then
372 sng 59 # ISOSYSLNX_TMP="$(mktemp -d ./isolnx.XXXXXX)"
373 sng 47 # WD_TMP="$(mktemp -d ./iso_wd.XXXXXX)"
374     #else
375 sng 59 # ISOSYSLNX_TMP="$(mktemp -d /tmp/isolnx.XXXXXX)"
376 sng 47 # WD_TMP="$(mktemp -d /tmp/iso_wd.XXXXXX)"
377     #fi
378 sng 59 ISOSYSLNX_TMP="$(mktemp -d /tmp/ocs_isosyslnx.XXXXXX)"
379     WD_TMP="$(mktemp -d /tmp/ocs_iso_wd.XXXXXX)"
380 sng 47
381     #
382     trap clean_tmp_dir HUP INT QUIT TERM EXIT
383    
384     # Try to find if it is running on live cd/usb already
385     if [ -z "$template_mode" ]; then
386     if [ -n "$LIVE_MEDIA" ]; then
387     # It's running from Clonezilla live media, use the existing resource
388     template_mode="from-booting-live-media"
389     [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
390     echo "Found a Clonezilla live media... Will use that as a template..."
391     [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
392     else
393     template_mode="from-downloaded-live-media"
394     [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
395     echo "No Clonezilla live media was found... Will use the downloaded template from Clonezilla repository..."
396     [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
397     fi
398     fi
399    
400     if [ "$template_mode" = "from-downloaded-live-media" ]; then
401     if [ ! -f "$DEBIAN_ISO" ]; then
402     echo "We need Debian live CD for Clonnezilla to create clonezilla cd."
403     echo "Downloadling the iso file from $DEBIAN_ISO_URL..."
404     wget $DEBIAN_ISO_URL
405     get_iso_rc=$?
406     # validate it
407     if [ "$get_iso_rc" -eq 0 ]; then
408     echo -n "Validating $DEBIAN_ISO... "
409     md5_tmp="$(mktemp -d /tmp/isomd5.XXXXX)"
410     # wget http://opensource.nchc.org.tw/drbl-core/iso/MD5SUMS
411     echo -n "Downloading $md5_file_url... "
412     wget $wget_opt -P "$md5_tmp" $md5_file_url
413     if ! grep -w "$DEBIAN_ISO" $md5_tmp/MD5SUMS | md5sum -c; then
414     [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
415     echo "$DEBIAN_ISO is broken! Something went wrong! Try to remove $DEBIAN_ISO and run this program again."
416     [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
417     echo "$msg_program_stop"
418     exit 1
419     fi
420     else
421     [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
422     echo "Unable to download $DEBIAN_ISO_URL!"
423     [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
424     echo "$msg_program_stop"
425     exit 1
426     fi
427     else
428     echo "A template iso ($DEBIAN_ISO) was found!"
429     fi
430     fi
431    
432     allow_limited_size_flag=""
433     if [ "$insert_mode" = "prog_and_img" ]; then
434     # 2 cases:
435     # (1) normal_menu_with_insert_image=no, i.e. only restore menu. ocs-live-restore is the main program.
436     # If it's not batch mode for clonezilla live (especially for restoring), by default we have to append "-x --restore-only", and especially before any other parameters, so that ocs-sr will run like:
437     # ocs-sr -l $ocs_lang -p true -x --restore-only -b restoredisk sarge_image
438     # (2) normal_menu_with_insert_image=yes, i.e. normal menu. ocs-live-general is the main program. Threfore no extra param.
439     if [ "$ocs_live_batch" = "no" ]; then
440     case "$normal_menu_with_insert_image" in
441     no) ocs_live_extra_param="-x --restore-only $ocs_live_extra_param" ;;
442     yes) ocs_live_extra_param="" ;;
443     esac
444     fi
445    
446     echo "Creating clonezilla ISO with image(s) $ocs_image from $image_path..."
447     # here we put ocs-live-restore as ocs-live inside live cd, and it will be shown as /$LIVE_MEDIA/ocs-live when using in running live CD.
448     # use the 1st image name as iso filename
449     iso_label_tag="$(echo $ocs_image | awk -F" " '{print $1}')"
450     # mkisofs only allow 32 characters for volume ID
451     iso_label_tag="${iso_label_tag:0:31}"
452     ocs_imgs_with_abs_path=""
453     for im in $ocs_image; do
454     if [ ! -d "$image_path/$im" ]; then
455     [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
456     echo "$image_path/$im $msg_NOT_found!"
457     [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
458     echo "$msg_program_stop"
459     exit 1
460     fi
461     if [ -z "$allow_limited_size_flag" ]; then
462     if [ -n "$(find $image_path/$im -size +${iso9660_file_size_limit} -print)" ]; then
463     allow_limited_size_flag="yes"
464     fi
465     fi
466     # we will put all the images in $ocsroot/ inside ISO file.
467     # Since we will always use /home/partimag as the image root in Clonezilla live, here the path in the created iso is /home/partimag/
468     ocs_imgs_with_abs_path="$ocs_imgs_with_abs_path /home/partimag/$im/=$image_path/$im/"
469     convert_ocs_format_from_1.5_to_2.0_or_newer $image_path/$im/
470     check_file_size_in_ocs_image $image_path/$im/
471     img_size="$(du -ms $image_path/$im/ | awk -F" " '{print $1}')" # unit: MB
472     img_size_sum="$((img_size_sum+img_size))"
473     done
474     else
475     echo "Creating clonezilla Live CD ISO file..."
476     # if version_no is not set, use date (Ex. 20070409)
477     [ -z "$version_no" ] && version_no="$(date +%Y%m%d)"
478     iso_label_tag="${version_no}"
479     fi
480     boot_menu_opt="--version-no $iso_label_tag"
481    
482     if [ -n "$target_iso_prefix" ]; then
483     target_iso="${target_iso_prefix}.iso"
484     else
485     target_iso="clonezilla-live-${iso_label_tag}.iso"
486     fi
487     echo "The output file name is: $target_iso."
488    
489     if [ "$template_mode" = "from-booting-live-media" ]; then
490     DEBIAN_ISO_TMP="$LIVE_MEDIA"
491     else
492     DEBIAN_ISO_TMP="$(mktemp -d /tmp/ocs-iso.XXXXXX)"
493     mount -o loop,ro $DEBIAN_ISO $DEBIAN_ISO_TMP
494     fi
495    
496     #
497     # Possible kernel/initrd paths are /casper (created by casper) or /live (created by live-initramfs)
498     # Find the kernel and initrd in $DEBIAN_ISO_TMP/casper or $DEBIAN_ISO_TMP/live
499     # Ex: $DEBIAN_ISO_TMP/casper/vmlinuz1, /$DEBIAN_ISO_TMP/casper/initrd1.img
500     # $live_sys_files_dir_list is from drbl-ocs.conf.
501     # Possible kernel/initrd paths are /casper (created by casper) or /live (created by live-initramfs)
502     sys_files_dir=""
503     for i in $live_sys_files_dir_list; do
504     krnfile_full_path="$(find $DEBIAN_ISO_TMP/$i/ -maxdepth 1 -name "vmlinuz*" -print 2>/dev/null)"
505     if [ -n "$krnfile_full_path" ]; then
506     krnfile="$(basename $krnfile_full_path)"
507     sys_files_dir="$i"
508     irdfile_full_path="$(find $DEBIAN_ISO_TMP/$i/ -maxdepth 1 -name "initrd*" -print)"
509     irdfile="$(basename $irdfile_full_path)"
510     break
511     fi
512     done
513    
514     #
515     if [ -z "$sys_files_dir" ]; then
516     [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
517     echo "No system files from template live iso are found! Something went wrong!"
518     [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
519     echo "$msg_program_stop"
520     exit 1
521     fi
522    
523     if [ -z "$krnfile" -o -z "$irdfile" ]; then
524     [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
525     echo "Kernel and initrd files NOT found in path $DEBIAN_ISO_TMP/$sys_files_dir/!"
526     echo "$msg_program_stop"
527     [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
528     exit 1
529     fi
530    
531 sng 93 if [ "$template_mode" = "from-booting-live-media" ]; then
532     # From boot media (clonezilla live), DEBIAN_ISO_TMP is LIVE_MEDIA
533     # The dirs/files in Clonezilla live:
534     # -r--r--r-- 1 root root 117 2010-05-21 21:17 Clonezilla-Live-Version
535     # -r--r--r-- 1 root root 18K 2010-05-21 21:05 COPYING
536     # dr-xr-xr-x 2 root root 2.0K 2010-05-21 21:17 isolinux/
537     # dr-xr-xr-x 2 root root 2.0K 2010-05-21 21:17 live/
538     # dr-xr-xr-x 2 root root 2.0K 2010-05-21 21:17 syslinux/
539     # dr-xr-xr-x 5 root root 2.0K 2010-05-21 21:17 utils/
540     # We need all of them.
541     template_iso_size="$(LC_ALL=C du -Lmsc $LIVE_MEDIA/{Clonezilla-Live-Version,COPYING,isolinux,$sys_files_dir,syslinux,utils} | tail -n 1 | awk -F" " '{print $1}')"
542     else
543     # From iso file (debian-live-for-ocs.iso)
544     # The dirs/files in Debian live for OCS:
545     # dr-xr-xr-x 3 root root 4.0K 2010-05-28 18:03 doc/
546     # dr-xr-xr-x 2 root root 4.0K 2010-05-28 18:03 isolinux/
547     # dr-xr-xr-x 2 root root 2.0K 2010-05-28 18:03 live/
548     # -r--r--r-- 1 root root 3.7K 2010-05-28 18:03 md5sum.txt
549     # We only need dirs isolinux and live only
550     template_iso_size="$(LC_ALL=C du -Lmsc $DEBIAN_ISO_TMP/{isolinux,$sys_files_dir} | tail -n 1 | awk -F" " '{print $1}')"
551     fi
552     target_iso_size="$(($template_iso_size + $img_size_sum))"
553    
554 sng 47 #
555 sng 59 BOOT_ITEM_DIR=$ISOSYSLNX_TMP/$sys_files_dir
556 sng 47 [ ! -d $BOOT_ITEM_DIR ] && mkdir $BOOT_ITEM_DIR
557     echo -n "Copying the system files to working dir... This might take a few minutes... "
558 sng 59 cp -af $DEBIAN_ISO_TMP/$sys_files_dir $ISOSYSLNX_TMP/
559 sng 47 RC=$?
560     if [ "$RC" -ne 0 ]; then
561     [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
562     echo "Failed to copy system files to working dir..."
563     echo "$msg_program_stop"
564     [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
565     exit 1
566     fi
567     echo "done!"
568    
569     ################################################################################
570     # Section edited by S. Georgaras <sng@hellug.gr>
571     #
572     # echo "Estimated target ISO file \"$target_iso\" size: $target_iso_size MB"
573     # if [ "$target_iso_size" -gt "$FILE_LIMIT" ]; then
574     # [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
575     # echo "$msg_ocs_iso_too_big_for_DVD"
576     # [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
577     # echo "$msg_are_u_sure_u_want_to_continue"
578     # echo -n "[y/N] "
579     # read cont_ans
580     # case "$cont_ans" in
581     # y|Y|[yY][eE][sS])
582     # echo $msg_ok_let_do_it
583     # ;;
584     # *)
585     # echo "Abort!"
586     # exit 2
587     # esac
588     # elif [ "$target_iso_size" -gt "$CD_FILE_LIMIT" ]; then
589     # [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
590     # echo "$msg_ocs_iso_too_big_for_CD"
591     # [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
592     # echo "$msg_are_u_sure_u_want_to_continue"
593     # echo -n "[y/N] "
594     # read cont_ans
595     # case "$cont_ans" in
596     # y|Y|[yY][eE][sS])
597     # echo $msg_ok_let_do_it
598     # ;;
599     # *)
600     # echo "Abort!"
601     # exit 2
602     # esac
603     # fi
604    
605     ################################################################################
606    
607     # output setting for clonezilla live
608     mkdir -p $WD_TMP/etc/ocs
609    
610     # Decide ocs_live_run
611     # $DRBL_SCRIPT_PATH/sbin/custom-ocs is copied from $LIVE_MEDIA/pkg/custom-ocs by /etc/ocs/ocs-live.d/S03prep-drbl-clonezilla when booting
612     if [ -n "$custom_ocs" ]; then
613     custom_ocs_opt="/pkg/custom-ocs=$custom_ocs"
614     ocs_live_run="custom-ocs"
615     else
616     if [ "$insert_mode" = "prog_and_img" ]; then
617     case "$normal_menu_with_insert_image" in
618     no) ocs_live_run="ocs-live-restore" ;;
619     yes) ocs_live_run="ocs-live-general" ;;
620     esac
621     else # prog_only mode
622     ocs_live_run="ocs-live-general"
623     fi
624     fi
625    
626     # Create the iso image file
627     # isolinux should be rw, so we have to copy it, and exclude the one in iso image.
628 sng 59 mkdir -p $ISOSYSLNX_TMP/isolinux/ $ISOSYSLNX_TMP/syslinux/
629     # rsync -a --exclude f*.txt --exclude boot.cat --exclude isolinux.txt --exclude isolinux.bin --exclude splash.rle --exclude doc $DRBL_SCRIPT_PATH/pkg/syslinux/* $ISOSYSLNX_TMP/isolinux/
630 sng 47 # we have to overwrite isolinux.bin since vesamenu.c32 should be same version with that.
631 sng 59 # For isolinux
632 sng 176 cp -af $isolinux_file $pxelinux_simple_vesamenu $pxelinux_simple_menu $pxelinux_memdisk_file $pxelinux_bg_img $ocs_logo_img_png $pxelinux_chain_file $ISOSYSLNX_TMP/isolinux/
633 sng 59 # For syslinux
634 sng 176 cp -af $pxelinux_simple_vesamenu $pxelinux_simple_menu $pxelinux_memdisk_file $pxelinux_bg_img $ocs_logo_img_png $pxelinux_chain_file $ISOSYSLNX_TMP/syslinux/
635     # Copy the EFI boot files
636     if [ -e "$DEBIAN_ISO_TMP/EFI/boot/bootia32.efi" -a -e "$DEBIAN_ISO_TMP/EFI/boot/bootx64.efi" ]; then
637     cp -af $DEBIAN_ISO_TMP/EFI $ISOSYSLNX_TMP/
638 sng 187 cp -af $ocs_logo_grub2_img_png $ISOSYSLNX_TMP/EFI/boot/
639 sng 176 fi
640 sng 47
641     etherboot_zlilo="$($query_pkglist_cmd drbl-etherboot 2>/dev/null | grep -E "eb-.*-etherboot-pci.zlilo$")"
642     # we have to force it name as etherboot.zdsk, since isolinux only uses the "plain" ISO 9660 filenames, i.e. it does not support Rock Ridge or Joliet filenames.
643     # ref: http://syslinux.zytor.com/archives/2006-October/007440.html
644     # "-" will be regards as "_" if you want to use "-" for isolinux.
645     # In syslinux on vfat, etherboot.zlilo is too long, make it ever shorter as eb.zli
646     if [ -n "$etherboot_zlilo" ]; then
647     # This is run in DRBL server
648     cp -af $etherboot_zlilo $BOOT_ITEM_DIR/eb.zli
649     else
650     # This is run in Clonezilla live with casper or live mechanism
651     for i in $live_sys_files_dir_list; do
652     if [ -e "$LIVE_MEDIA/$i/eb.zli" ]; then
653     cp -af $LIVE_MEDIA/$i/eb.zli $BOOT_ITEM_DIR/eb.zli
654     break
655     fi
656     done
657     fi
658     # same reason, we have to use different name in isolinux
659 sng 176 # gPXE is deprecated, we will use iPXE. We keep this gpxe part for ref only.
660 sng 47 gpxe_lkn="$($query_pkglist_cmd gpxe 2>/dev/null | grep -E "gpxe.lkrn$")"
661     if [ -n "$gpxe_lkn" ]; then
662     # This is run in DRBL server
663     cp -af $gpxe_lkn $BOOT_ITEM_DIR/gpxe.lkn
664     else
665     # This is run in Clonezilla live with casper or live mechanism
666     for i in $live_sys_files_dir_list; do
667     if [ -e "$LIVE_MEDIA/$i/gpxe.lkn" ]; then
668     cp -af $LIVE_MEDIA/$i/gpxe.lkn $BOOT_ITEM_DIR/gpxe.lkn
669     break
670     fi
671     done
672     fi
673     # same reason, we have to use different name in isolinux
674 sng 176 ipxe_lkn="$($query_pkglist_cmd ipxe 2>/dev/null | grep -E "ipxe.lkrn$")"
675     if [ -n "$ipxe_lkn" ]; then
676     # This is run in DRBL server
677     cp -af $ipxe_lkn $BOOT_ITEM_DIR/ipxe.lkn
678     else
679     # This is run in Clonezilla live with casper or live mechanism
680     for i in $live_sys_files_dir_list; do
681     if [ -e "$LIVE_MEDIA/$i/ipxe.lkn" ]; then
682     cp -af $LIVE_MEDIA/$i/ipxe.lkn $BOOT_ITEM_DIR/ipxe.lkn
683     break
684     fi
685     done
686     fi
687     # same reason, we have to use different name in isolinux
688 sng 47 if [ -e "$fdos_img_src" ] ; then
689     cp -af $fdos_img_src $BOOT_ITEM_DIR/freedos.img
690     else
691     # This is run in Clonezilla live with casper or live mechanism
692     for i in $live_sys_files_dir_list; do
693     if [ -e "$LIVE_MEDIA/$i/freedos.img" ]; then
694     cp -af $LIVE_MEDIA/$i/freedos.img $BOOT_ITEM_DIR/freedos.img
695     break
696     fi
697     done
698     fi
699     # $memtest86_file (memtest86) is 9 characters, will go wrong when it's FAT (usb flash drive). We use memtest to overwrite the one comes from Debian live.
700     # Since live helper will put memtest in casper, we can choose to copy it or not.
701     # If we really want to use the memtest from drbl, we have to remove $DEBIAN_ISO_TMP/casper/memtest before doing mkisofs, otherwise it will complain like:
702     # Using MEMTEST000.;1 for /tmp/ocs-iso.E15902/casper/memtest (memtest)
703     # genisoimage: Error: '/tmp/isolnx.V15903/casper/memtest' and '/tmp/ocs-iso.E15902/casper/memtest' have the same Rock Ridge name 'memtest'.
704     # Unable to sort directory /tmp/ocs-iso.E15902/casper
705     # since $DEBIAN_ISO_TMP/casper/memtest is read-only, we can not remove it. Later we will exclude that later by mkisofs.
706     if [ -e "$memtest86_file" ]; then
707     cp -af $memtest86_file $BOOT_ITEM_DIR/memtest
708     else
709     # This is run in Clonezilla live with casper or live mechanism
710     for i in $live_sys_files_dir_list; do
711     if [ -e "$LIVE_MEDIA/$i/memtest" ]; then
712     cp -af $LIVE_MEDIA/$i/memtest $BOOT_ITEM_DIR/memtest
713     break
714     fi
715     done
716     fi
717    
718     # Excluding list for mkisofs
719     for i in $live_sys_files_dir_list; do
720     if [ -e "$DEBIAN_ISO_TMP/$i/memtest" ]; then
721     mkiso_exclude_list="$mkiso_exclude_list $i/memtest"
722     break
723     fi
724     done
725     mkiso_exclude_opt=""
726     for i in $mkiso_exclude_list; do
727     mkiso_exclude_opt="$mkiso_exclude_opt -x $DEBIAN_ISO_TMP/$i"
728     done
729    
730     # Find the boot param $boot_param
731     get_live_boot_param $DEBIAN_ISO_TMP/isolinux
732    
733     #
734     if [ -n "$ocs_image" ]; then
735 sng 176 # Image is included
736 sng 59 # For isolinux
737 sng 176 ocs-live-boot-menu $ocs_live_boot_menu_option -l $lang_answer -f $VGA_MODE_DEF -b $bg_mode -k /$sys_files_dir/$krnfile -i /$sys_files_dir/$irdfile -m $ocs_logo_img_png $boot_menu_opt --boot-param "$boot_param $live_extra_boot_param $supp_boot_param_ocs_live_iso ocs_live_run=\"$ocs_live_run\" ocs_live_extra_param=\"$ocs_live_extra_param\" ocs_live_keymap=\"$ocs_live_keymap\" ocs_live_batch=\"$ocs_live_batch\" ocs_lang=\"$ocs_lang\"" --title "clonezilla live with img $ocs_image" isolinux $ISOSYSLNX_TMP/isolinux/
738 sng 59 # For syslinux
739 sng 176 ocs-live-boot-menu $ocs_live_boot_menu_option -l $lang_answer -f $VGA_MODE_DEF -b $bg_mode -k /$sys_files_dir/$krnfile -i /$sys_files_dir/$irdfile -m $ocs_logo_img_png $boot_menu_opt --boot-param "$boot_param $live_extra_boot_param $supp_boot_param_ocs_live_dev ocs_live_run=\"$ocs_live_run\" ocs_live_extra_param=\"$ocs_live_extra_param\" ocs_live_keymap=\"$ocs_live_keymap\" ocs_live_batch=\"$ocs_live_batch\" ocs_lang=\"$ocs_lang\"" --title "clonezilla live with img $ocs_image" syslinux $ISOSYSLNX_TMP/syslinux/
740     # For grub2 efi
741     if [ -e "$ISOSYSLNX_TMP/EFI/boot/bootia32.efi" -a -e "$ISOSYSLNX_TMP/EFI/boot/bootx64.efi" ]; then
742 sng 187 ocs-live-boot-menu $ocs_live_boot_menu_option -l $lang_answer -f $VGA_MODE_DEF -b $bg_mode -k /$sys_files_dir/$krnfile -i /$sys_files_dir/$irdfile -m $ocs_logo_grub2_img_png $boot_menu_opt --boot-param "$boot_param $live_extra_boot_param $supp_boot_param_ocs_live_dev ocs_live_run=\"$ocs_live_run\" ocs_live_extra_param=\"$ocs_live_extra_param\" ocs_live_keymap=\"$ocs_live_keymap\" ocs_live_batch=\"$ocs_live_batch\" ocs_lang=\"$ocs_lang\"" --title "clonezilla live with img $ocs_image" grub2-efi $ISOSYSLNX_TMP/EFI/boot/
743 sng 176 fi
744 sng 47 else
745 sng 176 # No image is included
746 sng 59 # For isolinux
747 sng 176 ocs-live-boot-menu $ocs_live_boot_menu_option -l $lang_answer -f $VGA_MODE_DEF -b $bg_mode -k /$sys_files_dir/$krnfile -i /$sys_files_dir/$irdfile -m $ocs_logo_img_png $boot_menu_opt --boot-param "$boot_param $live_extra_boot_param $supp_boot_param_ocs_live_iso ocs_live_run=\"$ocs_live_run\" ocs_live_extra_param=\"$ocs_live_extra_param\" ocs_live_keymap=\"$ocs_live_keymap\" ocs_live_batch=\"$ocs_live_batch\" ocs_lang=\"$ocs_lang\"" isolinux $ISOSYSLNX_TMP/isolinux/
748 sng 59 # For syslinux
749 sng 176 ocs-live-boot-menu $ocs_live_boot_menu_option -l $lang_answer -f $VGA_MODE_DEF -b $bg_mode -k /$sys_files_dir/$krnfile -i /$sys_files_dir/$irdfile -m $ocs_logo_img_png $boot_menu_opt --boot-param "$boot_param $live_extra_boot_param $supp_boot_param_ocs_live_dev ocs_live_run=\"$ocs_live_run\" ocs_live_extra_param=\"$ocs_live_extra_param\" ocs_live_keymap=\"$ocs_live_keymap\" ocs_live_batch=\"$ocs_live_batch\" ocs_lang=\"$ocs_lang\"" syslinux $ISOSYSLNX_TMP/syslinux/
750     # For grub2 efi
751     if [ -e "$ISOSYSLNX_TMP/EFI/boot/bootia32.efi" -a -e "$ISOSYSLNX_TMP/EFI/boot/bootx64.efi" ]; then
752 sng 187 ocs-live-boot-menu $ocs_live_boot_menu_option -l $lang_answer -f $VGA_MODE_DEF -b $bg_mode -k /$sys_files_dir/$krnfile -i /$sys_files_dir/$irdfile -m $ocs_logo_grub2_img_png $boot_menu_opt --boot-param "$boot_param $live_extra_boot_param $supp_boot_param_ocs_live_dev ocs_live_run=\"$ocs_live_run\" ocs_live_extra_param=\"$ocs_live_extra_param\" ocs_live_keymap=\"$ocs_live_keymap\" ocs_live_batch=\"$ocs_live_batch\" ocs_lang=\"$ocs_lang\"" grub2-efi $ISOSYSLNX_TMP/EFI/boot/
753 sng 176 fi
754 sng 47 fi
755    
756     #
757 sng 93 echo "Preparing syslinux, syslinux.exe, makeboot.sh, and makeboot.bat in dir utils... "
758 sng 47 # If it's in Clonezilla live environment, we have those files
759     if [ -e "$LIVE_MEDIA/utils/linux/syslinux" -a \
760     -e "$LIVE_MEDIA/utils/mbr/mbr.bin" -a \
761     -e "$LIVE_MEDIA/utils/win32/syslinux.exe" ]; then
762 sng 59 cp -rf $LIVE_MEDIA/utils $ISOSYSLNX_TMP
763 sng 47 else
764 sng 176 isolinux_ver="$(LC_ALL=C strings $ISOSYSLNX_TMP/isolinux/isolinux.bin | grep "^ISOLINUX" | awk -F" " '{print $2}')"
765     put_syslinux_makeboot_for_usb_flash $ISOSYSLNX_TMP $isolinux_ver
766 sng 47 fi
767 sng 59 if [ -d "$ISOSYSLNX_TMP/utils" ]; then
768     utils_files_dir_graft_point="/utils/=$ISOSYSLNX_TMP/utils/"
769 sng 47 fi
770    
771     # put version tag
772     # The content is like clonezilla-live-20070308
773 sng 59 echo "clonezilla-live-${iso_label_tag}" > $ISOSYSLNX_TMP/Clonezilla-Live-Version
774     echo "This Clonezilla live iso file was created by this command:" >> $ISOSYSLNX_TMP/Clonezilla-Live-Version
775     echo "$prog $prog_option" >> $ISOSYSLNX_TMP/Clonezilla-Live-Version
776 sng 47
777     # $sys_files_dir maybe /casper, /live or /isolinux. If it is isolinux, we can not list them twice otherwise mkisofs will go wrong.
778     if [ "$sys_files_dir" != "isolinux" ]; then
779 sng 59 sys_files_dir_graft_point="/isolinux/=$ISOSYSLNX_TMP/isolinux/ /syslinux/=$ISOSYSLNX_TMP/syslinux/ /$sys_files_dir/=$ISOSYSLNX_TMP/$sys_files_dir/"
780 sng 47 else
781 sng 59 sys_files_dir_graft_point="/isolinux/=$ISOSYSLNX_TMP/isolinux/ /syslinux/=$ISOSYSLNX_TMP/syslinux/"
782 sng 47 fi
783    
784 sng 176 #
785     if [ -d "$ISOSYSLNX_TMP/EFI" ]; then
786     sys_files_dir_graft_point="$sys_files_dir_graft_point /EFI/=$ISOSYSLNX_TMP/EFI"
787     fi
788    
789 sng 47 # If template_mode="from-booting-live-media", then there is /COPYING and /Clonezilla-Live-Version, then we should not assign that.
790     doc_insert_in_root=""
791 sng 93 if [ -e "$DEBIAN_ISO_TMP/COPYING" ]; then
792     doc_insert_in_root="/COPYING=$DEBIAN_ISO_TMP/COPYING"
793     else
794 sng 47 doc_insert_in_root="/COPYING=$DRBL_SCRIPT_PATH/doc/COPYING"
795     fi
796 sng 93 if [ -e "$DEBIAN_ISO_TMP/Clonezilla-Live-Version" ]; then
797     doc_insert_in_root="$doc_insert_in_root /Clonezilla-Live-Version=$DEBIAN_ISO_TMP/Clonezilla-Live-Version"
798     else
799 sng 59 doc_insert_in_root="$doc_insert_in_root /Clonezilla-Live-Version=$ISOSYSLNX_TMP/Clonezilla-Live-Version"
800 sng 47 fi
801    
802     #
803     allow_limited_size_opt=""
804     if [ "$allow_limited_size_flag" = "yes" ]; then
805     [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
806     echo "Since there is at least one file larger than ${iso9660_file_size_limit}B in the image file, we turn on the option -allow-limited-size for genisoimage. This also implies enabling UDF format instead of iso9660."
807     [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
808     allow_limited_size_opt="-allow-limited-size"
809     fi
810    
811 sng 190 # Remove the existing iso
812     [ -e "$target_iso" ] && rm -f $target_iso
813 sng 47
814 sng 190 # Build the EFI boot image. This is especially for iso file. Not for USB stick.
815     efi_img_opt=""
816     if [ "$enabled_EFI" = "true" ]; then
817     # The following codes are referred from Fedora
818     EFI_BOOTIMG_TMP="$(mktemp -d /tmp/efi-boot.XXXXXX)"
819     EFI_BOOTTREE="$DEBIAN_ISO_TMP/EFI"
820     EFI_IMGTREE="$ISOSYSLNX_TMP/EFI-imgs"
821     EFI_IMG="$EFI_IMGTREE/efiboot.img"
822     mkdir -p $EFI_IMGTREE
823     rm -rf $ISOSYSLNX_TMP/.disk
824     rm -f $EFI_IMG
825    
826     BOOTDISKSIZE="$(LC_ALL=C du -kcs $EFI_BOOTTREE | tail -n1 | awk '{print $1}')"
827     BOOTDISKSIZE="$(LC_ALL=C expr $BOOTDISKSIZE + 100)"
828     echo "The size of the $EFI_IMG is $BOOTDISKSIZE"
829     mkdosfs -n OCS-EFI -C $EFI_IMG $BOOTDISKSIZE >/dev/null
830     mount -o loop,shortname=winnt,umask=0077 -t vfat $EFI_IMG $EFI_BOOTIMG_TMP
831     mkdir -p $EFI_BOOTIMG_TMP/EFI/
832     cp -R $EFI_BOOTTREE/* $EFI_BOOTIMG_TMP/EFI/
833     umount $EFI_BOOTIMG_TMP
834     if [ -d "$EFI_BOOTIMG_TMP" -a -n \
835     "$(echo $EFI_BOOTIMG_TMP | grep -e "efi-boot")" ]; then
836     rm -rf $EFI_BOOTIMG_TMP
837     fi
838    
839     # Create an info file for grub2 to autodetect the cd root
840     # Ref: http://www.sysresccd.org/forums/viewtopic.php?f=5&t=4410
841     mkdir $ISOSYSLNX_TMP/.disk
842     echo -n "[Clonezilla]" > $ISOSYSLNX_TMP/.disk/info
843    
844     efi_img_opt="-eltorito-alt-boot -efi-boot EFI-imgs/efiboot.img -no-emul-boot"
845     efi_img_graft_opt="/EFI-imgs/=$EFI_IMG /.disk/=$ISOSYSLNX_TMP/.disk"
846     fi
847    
848 sng 95 ############################################################################
849     #
850     # Section added by S. Georgaras <sng@hellug.gr>
851     # Just for debugging...
852     #
853     ############################################################################
854     # echo "genisoimage \
855     # -A "Clonezilla live CD" \
856     # -V "$iso_label_tag" \
857     # -publisher "DRBL/Clonezilla http://drbl.name http://clonezilla.org" \
858     # -f -r -J -l $allow_limited_size_opt \
859     # -b isolinux/isolinux.bin -c isolinux/boot.cat \
860     # -no-emul-boot -boot-load-size 4 -boot-info-table \
861     # $mkiso_exclude_opt \
862     # -graft-points \
863     # $sys_files_dir_graft_point \
864     # $utils_files_dir_graft_point \
865     # $doc_insert_in_root \
866     # $ocs_imgs_with_abs_path \
867     # $custom_ocs_opt \
868     # $include_dir_graft_point
869     # "
870     #
871     # echo "DEBIAN_ISO_TMP=$DEBIAN_ISO_TMP"
872     # echo "mkiso_exclude_opt = $mkiso_exclude_opt"
873     # echo "allow_limited_size_opt = $allow_limited_size_opt"
874     # echo "sys_files_dir_graft_point = $sys_files_dir_graft_point"
875     # echo "utils_files_dir_graft_point = $utils_files_dir_graft_point"
876     # echo "doc_insert_in_root = $doc_insert_in_root"
877     # echo "ocs_imgs_with_abs_path = $ocs_imgs_with_abs_path"
878     # echo "custom_ocs_opt = $custom_ocs_opt"
879     # echo "include_dir_graft_point = $include_dir_graft_point"
880     # echo
881     # echo "ocs_image=$ocs_image"
882     # echo "image_path=$image_path"
883     #
884     # read
885     ############################################################################
886 sng 47
887    
888 sng 95
889 sng 93 # if [ -z "$ORIGINAL_INSERT_MODE" ];then
890     # A_LINE=`grep 'append initrd=/live/initrd.img'/tmp/ocs_isos*/isolinux/isolinux.cfg | sed '2,$d'`
891     # PARAM=`echo "$A_LINE" | sed 's/.*ocs_live_extra_param="\([^"]*\)".*/\1/'`
892     # KEYMAP=`echo "$A_LINE" | sed 's/.*ocs_live_keymap="\([^"]*\)".*/\1/'`
893     # LANG=`echo "$A_LINE" | sed 's/.*ocs_lang="\([^"]*\)".*/\1/'`
894     # if [ -z "$going2RAM" ];then
895     # #cp /restorecd/isolinux-restore-cd.cfg /tmp/ocs_isos*/isolinux/isolinux.cfg
896     # cfg_orig=/restorecd/isolinux-restore-cd.cfg
897     # else
898     # #cp /restorecd/isolinux-restore-cd-ram.cfg /tmp/ocs_isos*/isolinux/isolinux.cfg
899     # cfg_orig=/restorecd/isolinux-restore-cd-ram.cfg
900     # fi
901     # # replace with current values
902     # sed "s|ocs_live_extra_param=\"[^\"]*\"|ocs_live_extra_param=\"$PARAM\"|
903     # s|ocs_live_keymap=\"[^\"]*\"|ocs_live_keymap=\"$KEYMAP\"|
904     # s|ocs_lang=\"[^\"]*\"|ocs_lang=\"$LANG\"|
905     # " "$cfg_orig" > /tmp/ocs_isos*/isolinux/isolinux.cfg
906 sng 47
907 sng 94 # cust-menu -publisher "DRBL/Clonezilla http://drbl.name http://clonezilla.org" -V "$iso_label_tag" "$ORIGINAL_INSERT_MODE" "$going2RAM"
908     cust-menu -publisher "DRBL/Clonezilla http://drbl.name http://clonezilla.org" -V "$iso_label_tag" "$ORIGINAL_INSERT_MODE"
909 sng 93 # fi
910 sng 47
911 sng 93 # Fix missing "boot=live"
912     for n in /tmp/ocs_isos*/isolinux/isolinux.cfg /tmp/ocs_isos*/syslinux/syslinux.cfg;do
913     if [ -e "$n" ];then
914     sed 's/boot=[^ ]* //
915     s{initrd=/live/initrd.img{initrd=/live/initrd.img boot=live {' "$n" > "$n".tmp && mv "$n".tmp "$n"
916     fi
917     done
918    
919 sng 94 # if [ -n "$going2RAM" ];then
920     # ocs_imgs_with_abs_path=''
921     # fi
922 sng 47
923     if [ -e /tmp/isodata ];then
924     iso_label_tag=`sed '2d' /tmp/isodata`
925     isoPublisher=`sed '1d' /tmp/isodata`
926     rm /tmp/isodata 2>/dev/null
927     fi
928    
929 sng 176
930 sng 47 # make iso file
931     genisoimage \
932     -A "Clonezilla live CD" \
933     -V "$iso_label_tag" \
934     -publisher "$isoPublisher" \
935     -f -r -J -l $allow_limited_size_opt \
936     -b isolinux/isolinux.bin -c isolinux/boot.cat \
937     -no-emul-boot -boot-load-size 4 -boot-info-table \
938 sng 190 $mkiso_exclude_opt $efi_img_opt \
939 sng 93 -graft-points \
940 sng 47 $sys_files_dir_graft_point \
941     $utils_files_dir_graft_point \
942     $doc_insert_in_root \
943     $ocs_imgs_with_abs_path \
944 sng 190 $efi_img_graft_opt \
945 sng 47 $custom_ocs_opt \
946     $include_dir_graft_point \
947     | \
948     (
949     case "$output_mode" in
950     "cdwriter")
951     wodim dev=$output_dev -data -eject -v -
952     ;;
953     *)
954     # use /dev/stdout as the bridge
955     cat - > $target_iso
956     ;;
957     esac
958     )
959    
960     rc=$?
961     if [ "$rc" -gt 0 ]; then
962     [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
963     echo "Something went wrong!"
964     [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
965 sng 59 clean_tmp_dir
966 sng 47 [ -n "$target_iso" -a -f "$target_iso" ] && rm -fv $target_iso
967     echo "$msg_program_stop"
968     exit 1
969     fi
970    
971     # unmount all iso file
972     umount $DEBIAN_ISO_TMP &>/dev/null
973    
974     # Clean the tmp working directory
975     echo "Cleaning tmp dirs..."
976 sng 59 clean_tmp_dir
977 sng 47
978     #
979     if [ -e "$target_iso" ]; then
980     if type isohybrid &>/dev/null; then
981     echo -n "Isohybriding $target_iso... "
982     isohybrid $target_iso
983     echo "done!"
984     fi
985     [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
986     echo "$msg_burn_clonezilla_img_iso: $target_iso"
987     [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
988     fi

Properties

Name Value
svn:executable *

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26