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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 59 - (show annotations)
Tue May 25 13:31:38 2010 UTC (13 years, 10 months ago) by sng
File size: 37058 byte(s)
changes for clonezilla 1.2.5-17
1 #!/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 mkiso_exclude_list_1="isolinux syslinux md5sum.txt doc live etc pkg ocs-live.d utils"
27 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
30 #
31 prog="$(basename $0)"
32 prog_option="$*"
33
34 # functions
35 USAGE() {
36 echo "Usage:"
37 echo "To put clonezilla image into live CD:"
38 echo "$prog [OPTION] CLONEZILLA_IMAGE_NAME"
39 echo "OPTION:"
40 language_help_prompt_by_idx_no
41 echo "-a, --file-name-prefix NAME Assign the output file name as NAME.iso. $0 will auto append '.iso' in the end of filename."
42 echo "-b, --bg-mode [text|graphic] Assign the background of boot menu. Default is graphic"
43 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."
44 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."
45 echo "-g, --ocs-live-language LANGUAGE Assign the language when using clonezilla live, available languages are en_US.UTF-8, zh_TW.UTF-8 "
46 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."
47 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."
48 echo "-i, --assign-version-no NO Assign the version no as NO instead of date. This only works when using with option -s."
49 echo "-j, --debian-iso ISO_FILE Assign Debian live template iso file name as ISO_FILE to be used to create Clonezilla live."
50 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."
51 echo "-p, --image-path Assign the clonezilla image path where CLONEZILLA_IMAGE_NAME exists. Default = $ocsroot"
52 echo "-s, --skip-image Do not include any clonezilla image. The is used to created a live CD with DRBL/Clonezilla programs only."
53 echo "-f, --on-the-fly DEV Write the output to CD/DVD writer DEV (such as /dev/hdc) instead of creating an ISO file."
54 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."
55 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."
56 echo "-u, --include-dir DIR Include a dir in the target iso file."
57 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."
58 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."
59 echo "NOTE! Due to the limitation in mkisofs, this program does not work in clonezilla image file larger than $FILE_LIMIT MB."
60 echo "Ex:"
61 echo "To put clonezilla image sarge-ocs (located in /home/partimag in clonezilla server) to Live CD, you can run:"
62 echo " $prog sarge-ocs"
63 echo "To put more images, just append them, such as:"
64 echo " $prog sarge-ocs etch-ocs"
65 echo "To create a Live CD with DRBL/Clonezilla programs:"
66 echo " $prog -s"
67 echo "To specify the Debian live template iso, run like this:"
68 echo " $prog -j debian-live-for-ocs-1.0.1-3.iso -n http://localhost/clonezilla-live/template-iso/testing -s"
69 echo "To put clonezilla image sarge-ocs, etch-ocs to to Live CD, and write it to cd writer /dev/hdc, you can run:"
70 echo " $prog -f /dev/hdc sarge-ocs etch-ocs"
71 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:"
72 echo " $prog -g en_US.UTF-8 -t -k NONE -e \"-b -c restoredisk sarge-r5 hda\" sarge-r5"
73 echo "To create an iso file to run your own custom-ocs program:"
74 echo " $prog -g en_US.UTF-8 -k NONE -s -m ./custom-ocs"
75 }
76 #
77 check_file_size_in_ocs_image() {
78 local img_path="$1"
79 local size_t
80 for ifile in $img_path/*; do
81 size_t="$(du -Lms $ifile | awk -F" " '{print $1}')"
82 if [ "$size_t" -gt "$FILE_LIMIT" ]; then
83 ################################################################################
84 # Section edited by S. Georgaras <sng@hellug.gr>
85
86 # [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
87 # echo "$ifile size ($size_t MB) is too large! $msg_mkisofs_unable_process_that"
88 # echo "$msg_unable_to_create_clonezilla_img_iso"
89 # [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
90 # exit 1
91 whiptail --backtitle Clonezilla-SysRescCD --title ' Excessive Image Size ' --yesno "The image file \"$(basename ${ifile%/})\" is too large ($size_t MB) and cannot be processed!!!
92
93 Do you want to create a 8GB DVD instead?" 0 60
94 if [ $? -eq 1 ];then
95 exit 1
96 fi
97 going2RAM="prog_only"
98 break
99 ################################################################################
100 fi
101 done
102 }
103
104 #
105 clean_tmp_dir() {
106 [ -d "$ISOSYSLNX_TMP" -a -n "$(echo $ISOSYSLNX_TMP | grep "ocs_isosyslnx")" ] && rm -rf $ISOSYSLNX_TMP
107 [ -d "$WD_TMP" -a -n "$(echo $WD_TMP | grep "ocs_iso_wd")" ] && rm -rf $WD_TMP
108 [ -d "$DEBIAN_ISO_TMP" ] && umount $DEBIAN_ISO_TMP &>/dev/null && rmdir $DEBIAN_ISO_TMP
109 } # End of clean_tmp_dir
110
111 #
112 check_if_root
113
114 # default settings:
115 ocs_live_batch="no"
116 custom_ocs=""
117 normal_menu_with_insert_image="no"
118 template_mode=""
119
120 # Parse command-line options
121 while [ $# -gt 0 ]; do
122 case "$1" in
123 -a|--file-name-prefix)
124 shift
125 if [ -z "$(echo $1 |grep ^-.)" ]; then
126 # skip the -xx option, in case
127 target_iso_prefix="$1"
128 shift
129 fi
130 [ -z "$target_iso_prefix" ] && USAGE && exit 1
131 ;;
132 -l|--language)
133 shift
134 if [ -z "$(echo $1 |grep ^-.)" ]; then
135 # skip the -xx option, in case
136 specified_lang="$1"
137 shift
138 fi
139 [ -z "$specified_lang" ] && USAGE && exit 1
140 ;;
141 -b|--bg-mode)
142 shift
143 if [ -z "$(echo $1 |grep ^-.)" ]; then
144 # skip the -xx option, in case
145 bg_mode="$1"
146 shift
147 fi
148 [ -z "$bg_mode" ] && USAGE && exit 1
149 ;;
150 -m|--custom-ocs)
151 shift
152 if [ -z "$(echo $1 |grep ^-.)" ]; then
153 # skip the -xx option, in case
154 custom_ocs="$1"
155 shift
156 fi
157 [ -z "$custom_ocs" ] && USAGE && exit 1
158 ;;
159 -e|--extra-param)
160 shift
161 # extra param might begin with -, i.e. Ex. -b -p true. Therefore we should not skip this.
162 ocs_live_extra_param="$1"
163 shift
164 [ -z "$ocs_live_extra_param" ] && USAGE && exit 1
165 ;;
166 -i|--assign-version-no)
167 shift
168 if [ -z "$(echo $1 |grep ^-.)" ]; then
169 # skip the -xx option, in case
170 version_no="$1"
171 shift
172 fi
173 [ -z "$version_no" ] && USAGE && exit 1
174 ;;
175 -g|--ocs-live-language)
176 shift
177 if [ -z "$(echo $1 |grep ^-.)" ]; then
178 # skip the -xx option, in case
179 ocs_lang="$1"
180 shift
181 fi
182 [ -z "$ocs_lang" ] && USAGE && exit 1
183 ;;
184 -k|--ocs-live-keymap)
185 shift
186 if [ -z "$(echo $1 |grep ^-.)" ]; then
187 # skip the -xx option, in case
188 ocs_live_keymap="$1"
189 shift
190 fi
191 [ -z "$ocs_live_keymap" ] && USAGE && exit 1
192 ;;
193 -p|--image-path)
194 shift
195 if [ -z "$(echo $1 |grep ^-.)" ]; then
196 # skip the -xx option, in case
197 image_path="$1"
198 shift
199 fi
200 [ -z "$image_path" ] && USAGE && exit 1
201 ;;
202 -s|--skip-image)
203 insert_mode="prog_only"
204 shift ;;
205 -t|--ocs-live-batch)
206 ocs_live_batch="yes"
207 shift ;;
208 -o|--normal-menu)
209 normal_menu_with_insert_image="yes"
210 shift ;;
211 -f|--on-the-fly)
212 shift
213 output_mode="cdwriter"
214 if [ -z "$(echo $1 |grep ^-.)" ]; then
215 # skip the -xx option, in case
216 output_dev="$1"
217 shift
218 fi
219 [ -z "$output_dev" ] && USAGE && exit 1
220 ;;
221 -j|--debian-iso)
222 shift
223 if [ -z "$(echo $1 |grep ^-.)" ]; then
224 # skip the -xx option, in case
225 DEBIAN_ISO="$1"
226 template_mode="from-download-live-media"
227 shift
228 fi
229 [ -z "$DEBIAN_ISO" ] && USAGE && exit 1
230 ;;
231 -n|--debian-iso-etc-url-path)
232 shift
233 if [ -z "$(echo $1 |grep ^-.)" ]; then
234 # skip the -xx option, in case
235 DEBIAN_ISO_ETC_PATH="$1"
236 shift
237 fi
238 [ -z "$DEBIAN_ISO_ETC_PATH" ] && USAGE && exit 1
239 ;;
240 -x|--extra-boot-param)
241 shift
242 if [ -z "$(echo $1 |grep ^-.)" ]; then
243 # skip the -xx option, in case
244 live_extra_boot_param="$1"
245 shift
246 fi
247 [ -z "$live_extra_boot_param" ] && USAGE && exit 1
248 ;;
249 --ocs-live-boot-menu-option)
250 shift
251 if [ -z "$(echo $1 |grep ^-.)" ]; then
252 # skip the -xx option, in case
253 ocs_live_boot_menu_option="$1"
254 shift
255 fi
256 [ -z "$ocs_live_boot_menu_option" ] && USAGE && exit 1
257 ;;
258 -u|--include-dir)
259 shift
260 if [ -z "$(echo $1 |grep ^-.)" ]; then
261 # skip the -xx option, in case
262 include_dir="$1"
263 include_dir_graft_point="$include_dir=$include_dir"
264 shift
265 fi
266 [ -z "$include_dir" ] && USAGE && exit 1
267 ;;
268 -*) echo "${0}: ${1}: invalid option" >&2
269 USAGE >& 2
270 exit 2 ;;
271 *) break ;;
272 esac
273 done
274 ocs_image="$*"
275 # strip the / to avoid problem
276 ocs_image="$(echo $ocs_image | sed -e "s|/||g")"
277
278 [ -z "$ocs_image" -a "$insert_mode" = "prog_and_img" ] && USAGE && exit 1
279 [ -z "$image_path" ] && image_path=$ocsroot
280 [ -z "$bg_mode" ] && bg_mode="$BG_MODE_DEF"
281 [ -z "$DEBIAN_ISO_ETC_PATH" ] && DEBIAN_ISO_ETC_PATH="$DEBIAN_ISO_ETC_PATH_DEF"
282 [ -z "$DEBIAN_ISO" ] && DEBIAN_ISO="$DEBIAN_ISO_DEF"
283 [ -n "$ocs_live_boot_menu_option" ] && ocs_live_boot_menu_option="-$ocs_live_boot_menu_option"
284 DEBIAN_ISO_URL="$DEBIAN_ISO_ETC_PATH/$DEBIAN_ISO"
285 md5_file_url="$DEBIAN_ISO_ETC_PATH/$md5_file"
286
287 #
288 ask_and_load_lang_set $specified_lang
289
290 #
291 if ! type genisoimage &>/dev/null; then
292 [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
293 echo "Program genisoimage not found!"
294 [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
295 echo "$msg_program_stop"
296 exit 1
297 fi
298
299 if [ "$output_mode" = "cdwriter" -a type wodim &>/dev/null ]; then
300 [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
301 echo "Program wodim is not aviailable! You have to install it."
302 [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
303 echo "$msg_program_stop"
304 exit 1
305 fi
306
307 if [ -n "$custom_ocs" -a ! -e "$custom_ocs" ]; then
308 [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
309 echo "File $custom_ocs not found!"
310 [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
311 echo "$msg_program_stop"
312 exit 1
313 fi
314
315 # Format the lang variable. This is for clonezilla live running, not for ocs-iso.
316 case "$ocs_lang" in
317 zh_TW.BIG5|zh_TW.big5|tw.BIG5)
318 [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
319 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."
320 [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
321 ocs_lang="zh_TW.UTF-8" ;;
322 zh_TW.UTF-8|zh_TW.utf8|tw.UTF-8|tw.utf8)
323 ocs_lang="zh_TW.UTF-8" ;;
324 esac
325
326 # Decide where is the $LIVE_MEDIA
327 get_live_media_mnt_point &>/dev/null
328
329 # Some temp dirs
330 # 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.
331 #if [ -w ./ ]; then
332 # ISOSYSLNX_TMP="$(mktemp -d ./isolnx.XXXXXX)"
333 # WD_TMP="$(mktemp -d ./iso_wd.XXXXXX)"
334 #else
335 # ISOSYSLNX_TMP="$(mktemp -d /tmp/isolnx.XXXXXX)"
336 # WD_TMP="$(mktemp -d /tmp/iso_wd.XXXXXX)"
337 #fi
338 ISOSYSLNX_TMP="$(mktemp -d /tmp/ocs_isosyslnx.XXXXXX)"
339 WD_TMP="$(mktemp -d /tmp/ocs_iso_wd.XXXXXX)"
340
341 #
342 trap clean_tmp_dir HUP INT QUIT TERM EXIT
343
344 # Try to find if it is running on live cd/usb already
345 if [ -z "$template_mode" ]; then
346 if [ -n "$LIVE_MEDIA" ]; then
347 # It's running from Clonezilla live media, use the existing resource
348 template_mode="from-booting-live-media"
349 [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
350 echo "Found a Clonezilla live media... Will use that as a template..."
351 [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
352 else
353 template_mode="from-downloaded-live-media"
354 [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
355 echo "No Clonezilla live media was found... Will use the downloaded template from Clonezilla repository..."
356 [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
357 fi
358 fi
359
360 if [ "$template_mode" = "from-downloaded-live-media" ]; then
361 if [ ! -f "$DEBIAN_ISO" ]; then
362 echo "We need Debian live CD for Clonnezilla to create clonezilla cd."
363 echo "Downloadling the iso file from $DEBIAN_ISO_URL..."
364 wget $DEBIAN_ISO_URL
365 get_iso_rc=$?
366 # validate it
367 if [ "$get_iso_rc" -eq 0 ]; then
368 echo -n "Validating $DEBIAN_ISO... "
369 md5_tmp="$(mktemp -d /tmp/isomd5.XXXXX)"
370 # wget http://opensource.nchc.org.tw/drbl-core/iso/MD5SUMS
371 echo -n "Downloading $md5_file_url... "
372 wget $wget_opt -P "$md5_tmp" $md5_file_url
373 if ! grep -w "$DEBIAN_ISO" $md5_tmp/MD5SUMS | md5sum -c; then
374 [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
375 echo "$DEBIAN_ISO is broken! Something went wrong! Try to remove $DEBIAN_ISO and run this program again."
376 [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
377 echo "$msg_program_stop"
378 exit 1
379 fi
380 else
381 [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
382 echo "Unable to download $DEBIAN_ISO_URL!"
383 [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
384 echo "$msg_program_stop"
385 exit 1
386 fi
387 else
388 echo "A template iso ($DEBIAN_ISO) was found!"
389 fi
390 fi
391
392 allow_limited_size_flag=""
393 if [ "$insert_mode" = "prog_and_img" ]; then
394 # 2 cases:
395 # (1) normal_menu_with_insert_image=no, i.e. only restore menu. ocs-live-restore is the main program.
396 # 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:
397 # ocs-sr -l $ocs_lang -p true -x --restore-only -b restoredisk sarge_image
398 # (2) normal_menu_with_insert_image=yes, i.e. normal menu. ocs-live-general is the main program. Threfore no extra param.
399 if [ "$ocs_live_batch" = "no" ]; then
400 case "$normal_menu_with_insert_image" in
401 no) ocs_live_extra_param="-x --restore-only $ocs_live_extra_param" ;;
402 yes) ocs_live_extra_param="" ;;
403 esac
404 fi
405
406 echo "Creating clonezilla ISO with image(s) $ocs_image from $image_path..."
407 # 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.
408 # use the 1st image name as iso filename
409 iso_label_tag="$(echo $ocs_image | awk -F" " '{print $1}')"
410 # mkisofs only allow 32 characters for volume ID
411 iso_label_tag="${iso_label_tag:0:31}"
412 ocs_imgs_with_abs_path=""
413 for im in $ocs_image; do
414 if [ ! -d "$image_path/$im" ]; then
415 [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
416 echo "$image_path/$im $msg_NOT_found!"
417 [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
418 echo "$msg_program_stop"
419 exit 1
420 fi
421 if [ -z "$allow_limited_size_flag" ]; then
422 if [ -n "$(find $image_path/$im -size +${iso9660_file_size_limit} -print)" ]; then
423 allow_limited_size_flag="yes"
424 fi
425 fi
426 # we will put all the images in $ocsroot/ inside ISO file.
427 # Since we will always use /home/partimag as the image root in Clonezilla live, here the path in the created iso is /home/partimag/
428 ocs_imgs_with_abs_path="$ocs_imgs_with_abs_path /home/partimag/$im/=$image_path/$im/"
429 convert_ocs_format_from_1.5_to_2.0_or_newer $image_path/$im/
430 check_file_size_in_ocs_image $image_path/$im/
431 img_size="$(du -ms $image_path/$im/ | awk -F" " '{print $1}')" # unit: MB
432 img_size_sum="$((img_size_sum+img_size))"
433 done
434 else
435 echo "Creating clonezilla Live CD ISO file..."
436 # if version_no is not set, use date (Ex. 20070409)
437 [ -z "$version_no" ] && version_no="$(date +%Y%m%d)"
438 iso_label_tag="${version_no}"
439 fi
440 boot_menu_opt="--version-no $iso_label_tag"
441
442 if [ -n "$target_iso_prefix" ]; then
443 target_iso="${target_iso_prefix}.iso"
444 else
445 target_iso="clonezilla-live-${iso_label_tag}.iso"
446 fi
447 echo "The output file name is: $target_iso."
448
449 if [ "$template_mode" = "from-booting-live-media" ]; then
450 DEBIAN_ISO_TMP="$LIVE_MEDIA"
451 else
452 DEBIAN_ISO_TMP="$(mktemp -d /tmp/ocs-iso.XXXXXX)"
453 mount -o loop,ro $DEBIAN_ISO $DEBIAN_ISO_TMP
454 fi
455
456 #
457 if [ "$template_mode" = "from-booting-live-media" ]; then
458 # From boot media, DEBIAN_ISO_TMP is LIVE_MEDIA
459 # Here we use -Lks to make it more accurate.
460 template_iso_size="$(LC_ALL=C du -Lks $LIVE_MEDIA | awk -F" " '{print $1}')"
461 # Exclude those dirs
462 exclude_dir_size="0"
463 for i in $mkiso_exclude_list_2; do
464 [ ! -d "$LIVE_MEDIA/$i" ] && continue
465 exclude_dir_size="$(($exclude_dir_size + $(LC_ALL=C du -Lks "$LIVE_MEDIA/$i" | awk -F" " '{print $1}')))"
466 done
467 template_iso_size="$(LC_ALL=C echo "scale=0; ($template_iso_size - $exclude_dir_size)/1024" | bc -l)" # converted as MB.
468 else
469 # From iso file
470 # Here we use -Lks to make it more accurate.
471 template_iso_size="$(LC_ALL=C du -Lks $DEBIAN_ISO | awk -F" " '{print $1}')"
472 # Exclude those dirs
473 exclude_dir_size="0"
474 for i in $mkiso_exclude_list_2; do
475 [ ! -d "$DEBIAN_ISO/$i" ] && continue
476 exclude_dir_size="$(($exclude_dir_size + $(LC_ALL=C du -Lks "$DEBIAN_ISO/$i" | awk -F" " '{print $1}')))"
477 done
478 template_iso_size="$(LC_ALL=C echo "scale=0; ($template_iso_size - $exclude_dir_size)/1024" | bc -l)" # converted as MB.
479 fi
480 target_iso_size="$(($template_iso_size + $img_size_sum))"
481
482 #
483 # Possible kernel/initrd paths are /casper (created by casper) or /live (created by live-initramfs)
484 # Find the kernel and initrd in $DEBIAN_ISO_TMP/casper or $DEBIAN_ISO_TMP/live
485 # Ex: $DEBIAN_ISO_TMP/casper/vmlinuz1, /$DEBIAN_ISO_TMP/casper/initrd1.img
486 # $live_sys_files_dir_list is from drbl-ocs.conf.
487 # Possible kernel/initrd paths are /casper (created by casper) or /live (created by live-initramfs)
488 sys_files_dir=""
489 for i in $live_sys_files_dir_list; do
490 krnfile_full_path="$(find $DEBIAN_ISO_TMP/$i/ -maxdepth 1 -name "vmlinuz*" -print 2>/dev/null)"
491 if [ -n "$krnfile_full_path" ]; then
492 krnfile="$(basename $krnfile_full_path)"
493 sys_files_dir="$i"
494 irdfile_full_path="$(find $DEBIAN_ISO_TMP/$i/ -maxdepth 1 -name "initrd*" -print)"
495 irdfile="$(basename $irdfile_full_path)"
496 break
497 fi
498 done
499
500 #
501 if [ -z "$sys_files_dir" ]; then
502 [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
503 echo "No system files from template live iso are found! Something went wrong!"
504 [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
505 echo "$msg_program_stop"
506 exit 1
507 fi
508
509 if [ -z "$krnfile" -o -z "$irdfile" ]; then
510 [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
511 echo "Kernel and initrd files NOT found in path $DEBIAN_ISO_TMP/$sys_files_dir/!"
512 echo "$msg_program_stop"
513 [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
514 exit 1
515 fi
516
517 #
518 BOOT_ITEM_DIR=$ISOSYSLNX_TMP/$sys_files_dir
519 [ ! -d $BOOT_ITEM_DIR ] && mkdir $BOOT_ITEM_DIR
520 echo -n "Copying the system files to working dir... This might take a few minutes... "
521 cp -af $DEBIAN_ISO_TMP/$sys_files_dir $ISOSYSLNX_TMP/
522 RC=$?
523 if [ "$RC" -ne 0 ]; then
524 [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
525 echo "Failed to copy system files to working dir..."
526 echo "$msg_program_stop"
527 [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
528 exit 1
529 fi
530 echo "done!"
531
532 ################################################################################
533 # Section edited by S. Georgaras <sng@hellug.gr>
534 #
535 # echo "Estimated target ISO file \"$target_iso\" size: $target_iso_size MB"
536 # if [ "$target_iso_size" -gt "$FILE_LIMIT" ]; then
537 # [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
538 # echo "$msg_ocs_iso_too_big_for_DVD"
539 # [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
540 # echo "$msg_are_u_sure_u_want_to_continue"
541 # echo -n "[y/N] "
542 # read cont_ans
543 # case "$cont_ans" in
544 # y|Y|[yY][eE][sS])
545 # echo $msg_ok_let_do_it
546 # ;;
547 # *)
548 # echo "Abort!"
549 # exit 2
550 # esac
551 # elif [ "$target_iso_size" -gt "$CD_FILE_LIMIT" ]; then
552 # [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
553 # echo "$msg_ocs_iso_too_big_for_CD"
554 # [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
555 # echo "$msg_are_u_sure_u_want_to_continue"
556 # echo -n "[y/N] "
557 # read cont_ans
558 # case "$cont_ans" in
559 # y|Y|[yY][eE][sS])
560 # echo $msg_ok_let_do_it
561 # ;;
562 # *)
563 # echo "Abort!"
564 # exit 2
565 # esac
566 # fi
567
568 ################################################################################
569
570 # output setting for clonezilla live
571 mkdir -p $WD_TMP/etc/ocs
572
573 # Decide ocs_live_run
574 # $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
575 if [ -n "$custom_ocs" ]; then
576 custom_ocs_opt="/pkg/custom-ocs=$custom_ocs"
577 ocs_live_run="custom-ocs"
578 else
579 if [ "$insert_mode" = "prog_and_img" ]; then
580 case "$normal_menu_with_insert_image" in
581 no) ocs_live_run="ocs-live-restore" ;;
582 yes) ocs_live_run="ocs-live-general" ;;
583 esac
584 else # prog_only mode
585 ocs_live_run="ocs-live-general"
586 fi
587 fi
588
589 # Create the iso image file
590 # isolinux should be rw, so we have to copy it, and exclude the one in iso image.
591 mkdir -p $ISOSYSLNX_TMP/isolinux/ $ISOSYSLNX_TMP/syslinux/
592 # 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/
593 # we have to overwrite isolinux.bin since vesamenu.c32 should be same version with that.
594 # For isolinux
595 cp -af $isolinux_file $pxelinux_simple_vesamenu $pxelinux_simple_menu $pxelinux_memdisk_file $pxelinux_bg_img $ocs_logo_img_syslinux $pxelinux_chain_file $ISOSYSLNX_TMP/isolinux/
596 # For syslinux
597 cp -af $pxelinux_simple_vesamenu $pxelinux_simple_menu $pxelinux_memdisk_file $pxelinux_bg_img $ocs_logo_img_syslinux $pxelinux_chain_file $ISOSYSLNX_TMP/syslinux/
598
599 etherboot_zlilo="$($query_pkglist_cmd drbl-etherboot 2>/dev/null | grep -E "eb-.*-etherboot-pci.zlilo$")"
600 # 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.
601 # ref: http://syslinux.zytor.com/archives/2006-October/007440.html
602 # "-" will be regards as "_" if you want to use "-" for isolinux.
603 # In syslinux on vfat, etherboot.zlilo is too long, make it ever shorter as eb.zli
604 if [ -n "$etherboot_zlilo" ]; then
605 # This is run in DRBL server
606 cp -af $etherboot_zlilo $BOOT_ITEM_DIR/eb.zli
607 else
608 # This is run in Clonezilla live with casper or live mechanism
609 for i in $live_sys_files_dir_list; do
610 if [ -e "$LIVE_MEDIA/$i/eb.zli" ]; then
611 cp -af $LIVE_MEDIA/$i/eb.zli $BOOT_ITEM_DIR/eb.zli
612 break
613 fi
614 done
615 fi
616 # same reason, we have to use different name in isolinux
617 gpxe_lkn="$($query_pkglist_cmd gpxe 2>/dev/null | grep -E "gpxe.lkrn$")"
618 if [ -n "$gpxe_lkn" ]; then
619 # This is run in DRBL server
620 cp -af $gpxe_lkn $BOOT_ITEM_DIR/gpxe.lkn
621 else
622 # This is run in Clonezilla live with casper or live mechanism
623 for i in $live_sys_files_dir_list; do
624 if [ -e "$LIVE_MEDIA/$i/gpxe.lkn" ]; then
625 cp -af $LIVE_MEDIA/$i/gpxe.lkn $BOOT_ITEM_DIR/gpxe.lkn
626 break
627 fi
628 done
629 fi
630 # same reason, we have to use different name in isolinux
631 if [ -e "$fdos_img_src" ] ; then
632 cp -af $fdos_img_src $BOOT_ITEM_DIR/freedos.img
633 else
634 # This is run in Clonezilla live with casper or live mechanism
635 for i in $live_sys_files_dir_list; do
636 if [ -e "$LIVE_MEDIA/$i/freedos.img" ]; then
637 cp -af $LIVE_MEDIA/$i/freedos.img $BOOT_ITEM_DIR/freedos.img
638 break
639 fi
640 done
641 fi
642 # $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.
643 # Since live helper will put memtest in casper, we can choose to copy it or not.
644 # 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:
645 # Using MEMTEST000.;1 for /tmp/ocs-iso.E15902/casper/memtest (memtest)
646 # genisoimage: Error: '/tmp/isolnx.V15903/casper/memtest' and '/tmp/ocs-iso.E15902/casper/memtest' have the same Rock Ridge name 'memtest'.
647 # Unable to sort directory /tmp/ocs-iso.E15902/casper
648 # since $DEBIAN_ISO_TMP/casper/memtest is read-only, we can not remove it. Later we will exclude that later by mkisofs.
649 if [ -e "$memtest86_file" ]; then
650 cp -af $memtest86_file $BOOT_ITEM_DIR/memtest
651 else
652 # This is run in Clonezilla live with casper or live mechanism
653 for i in $live_sys_files_dir_list; do
654 if [ -e "$LIVE_MEDIA/$i/memtest" ]; then
655 cp -af $LIVE_MEDIA/$i/memtest $BOOT_ITEM_DIR/memtest
656 break
657 fi
658 done
659 fi
660
661 # Excluding list for mkisofs
662 for i in $live_sys_files_dir_list; do
663 if [ -e "$DEBIAN_ISO_TMP/$i/memtest" ]; then
664 mkiso_exclude_list="$mkiso_exclude_list $i/memtest"
665 break
666 fi
667 done
668 mkiso_exclude_opt=""
669 for i in $mkiso_exclude_list; do
670 mkiso_exclude_opt="$mkiso_exclude_opt -x $DEBIAN_ISO_TMP/$i"
671 done
672
673 # Find the boot param $boot_param
674 get_live_boot_param $DEBIAN_ISO_TMP/isolinux
675
676 #
677 if [ -n "$ocs_image" ]; then
678 # For isolinux
679 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_syslinux $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/
680 # For syslinux
681 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_syslinux $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/
682 else
683 # For isolinux
684 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_syslinux $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/
685 # For syslinux
686 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_syslinux $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/
687 fi
688
689 #
690 echo "Preparing syslinux.exe, syslinux, makeboot.bat and makeboot.sh in dir utils... "
691 # If it's in Clonezilla live environment, we have those files
692 if [ -e "$LIVE_MEDIA/utils/linux/syslinux" -a \
693 -e "$LIVE_MEDIA/utils/mbr/mbr.bin" -a \
694 -e "$LIVE_MEDIA/utils/win32/syslinux.exe" ]; then
695 cp -rf $LIVE_MEDIA/utils $ISOSYSLNX_TMP
696 else
697 put_syslinux_makeboot_for_usb_flash $ISOSYSLNX_TMP
698 fi
699 if [ -d "$ISOSYSLNX_TMP/utils" ]; then
700 utils_files_dir_graft_point="/utils/=$ISOSYSLNX_TMP/utils/"
701 fi
702
703 # put version tag
704 # The content is like clonezilla-live-20070308
705 echo "clonezilla-live-${iso_label_tag}" > $ISOSYSLNX_TMP/Clonezilla-Live-Version
706 echo "This Clonezilla live iso file was created by this command:" >> $ISOSYSLNX_TMP/Clonezilla-Live-Version
707 echo "$prog $prog_option" >> $ISOSYSLNX_TMP/Clonezilla-Live-Version
708
709 # $sys_files_dir maybe /casper, /live or /isolinux. If it is isolinux, we can not list them twice otherwise mkisofs will go wrong.
710 if [ "$sys_files_dir" != "isolinux" ]; then
711 sys_files_dir_graft_point="/isolinux/=$ISOSYSLNX_TMP/isolinux/ /syslinux/=$ISOSYSLNX_TMP/syslinux/ /$sys_files_dir/=$ISOSYSLNX_TMP/$sys_files_dir/"
712 else
713 sys_files_dir_graft_point="/isolinux/=$ISOSYSLNX_TMP/isolinux/ /syslinux/=$ISOSYSLNX_TMP/syslinux/"
714 fi
715
716 # If template_mode="from-booting-live-media", then there is /COPYING and /Clonezilla-Live-Version, then we should not assign that.
717 doc_insert_in_root=""
718 if [ ! -e "$DEBIAN_ISO_TMP/COPYING" ]; then
719 doc_insert_in_root="/COPYING=$DRBL_SCRIPT_PATH/doc/COPYING"
720 fi
721 if [ ! -e "$DEBIAN_ISO_TMP/Clonezilla-Live-Version" ]; then
722 doc_insert_in_root="$doc_insert_in_root /Clonezilla-Live-Version=$ISOSYSLNX_TMP/Clonezilla-Live-Version"
723 fi
724
725 #
726 allow_limited_size_opt=""
727 if [ "$allow_limited_size_flag" = "yes" ]; then
728 [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
729 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."
730 [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
731 allow_limited_size_opt="-allow-limited-size"
732 fi
733
734 echo "genisoimage \
735 -A "Clonezilla live CD" \
736 -V "$iso_label_tag" \
737 -publisher "DRBL/Clonezilla http://drbl.name http://clonezilla.org" \
738 -f -r -J -l $allow_limited_size_opt \
739 -b isolinux/isolinux.bin -c isolinux/boot.cat \
740 -no-emul-boot -boot-load-size 4 -boot-info-table \
741 $mkiso_exclude_opt \
742 -graft-points $DEBIAN_ISO_TMP \
743 $sys_files_dir_graft_point \
744 $utils_files_dir_graft_point \
745 $doc_insert_in_root \
746 $ocs_imgs_with_abs_path \
747 $custom_ocs_opt \
748 $include_dir_graft_point
749 "
750
751 echo "DEBIAN_ISO_TMP=$DEBIAN_ISO_TMP"
752 echo "sys_files_dir_graft_point=$sys_files_dir_graft_point"
753 echo "utils_files_dir_graft_point=$utils_files_dir_graft_point"
754 echo "doc_insert_in_root=$doc_insert_in_root"
755 echo "ocs_imgs_with_abs_path=$ocs_imgs_with_abs_path"
756 echo "custom_ocs_opt=$custom_ocs_opt"
757 echo "include_dir_graft_point=$include_dir_graft_point"
758 echo
759 echo "ocs_image=$ocs_image"
760 echo "image_path=$image_path"
761
762 #read
763
764 cust-menu -publisher "DRBL/Clonezilla http://drbl.name http://clonezilla.org" -V "$iso_label_tag" "$going2RAM"
765
766
767 if [ -n "$going2RAM" ];then
768 ocs_imgs_with_abs_path=''
769 fi
770
771 if [ -e /tmp/isodata ];then
772 iso_label_tag=`sed '2d' /tmp/isodata`
773 isoPublisher=`sed '1d' /tmp/isodata`
774 rm /tmp/isodata 2>/dev/null
775 fi
776
777 # make iso file
778 genisoimage \
779 -A "Clonezilla live CD" \
780 -V "$iso_label_tag" \
781 -publisher "$isoPublisher" \
782 -f -r -J -l $allow_limited_size_opt \
783 -b isolinux/isolinux.bin -c isolinux/boot.cat \
784 -no-emul-boot -boot-load-size 4 -boot-info-table \
785 $mkiso_exclude_opt \
786 -graft-points $DEBIAN_ISO_TMP \
787 $sys_files_dir_graft_point \
788 $utils_files_dir_graft_point \
789 $doc_insert_in_root \
790 $ocs_imgs_with_abs_path \
791 $custom_ocs_opt \
792 $include_dir_graft_point \
793 | \
794 (
795 case "$output_mode" in
796 "cdwriter")
797 wodim dev=$output_dev -data -eject -v -
798 ;;
799 *)
800 # use /dev/stdout as the bridge
801 cat - > $target_iso
802 ;;
803 esac
804 )
805
806 rc=$?
807 if [ "$rc" -gt 0 ]; then
808 [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
809 echo "Something went wrong!"
810 [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
811 clean_tmp_dir
812 [ -n "$target_iso" -a -f "$target_iso" ] && rm -fv $target_iso
813 [ -n "$ISOLNX_TMP" -a -d "$ISOLNX_TMP" ] && rm -rf $ISOLNX_TMP
814 [ -n "$WD_TMP" -a -d "$WD_TMP" ] && rm -rf $WD_TMP
815 echo "$msg_program_stop"
816 exit 1
817 fi
818
819 # unmount all iso file
820 umount $DEBIAN_ISO_TMP &>/dev/null
821
822 # Clean the tmp working directory
823 echo "Cleaning tmp dirs..."
824 clean_tmp_dir
825
826 #
827 if [ -e "$target_iso" ]; then
828 if type isohybrid &>/dev/null; then
829 echo -n "Isohybriding $target_iso... "
830 isohybrid $target_iso
831 echo "done!"
832 fi
833 [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
834 echo "$msg_burn_clonezilla_img_iso: $target_iso"
835 [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
836 fi
837
838
839 ################################################################################
840 # Section edited by S. Georgaras <sng@hellug.gr>
841 ifile1=`dirname "$ifile"`
842 if [ "$going2RAM" = "prog_only" ];then
843 whiptail --backtitle Clonezilla-SysRescCD --title ' Info ' --msgbox "The ISO file has been saved as $target_iso
844
845 This ISO file contains the program and settings to restore your image
846 ($(basename ${ifile%/})), but not the image itself. Now you have to burn
847 the ISO file to a 8GB DVD and then add the image file to it.
848
849 These are the commands to execute:
850 cd /home/partimag
851 growisofs -Z \$(what-cd -dwb)=$target_iso
852 eject \$(what-cd -dwb)
853 growisofs -M \$(what-cd -dwb) -R -J \\
854 -V \"$iso_label_tag\" --publisher \"$isoPublisher\" \\
855 -graft-points /$(basename ${ifile%/})/=${ifile%/}
856
857 Alternatively, you can excute the file /tmp/burnISO
858
859 NOTE: \$(what-cd -dwb) will use your first DVD-writer. In case you want
860 to use another device, you have to replace \$(what-cd -dwb) with
861 that device name e.g. /dev/hdd
862 " 0 0
863 fi
864
865 echo "#!/bin/bash" > /tmp/burnISO
866 echo "eject \$(what-cd -dwb)" >> /tmp/burnISO
867 echo "echo -n \"Place an empty DVD in the DVD-writer and press ENTER \"" >> /tmp/burnISO
868 echo "read" >> /tmp/burnISO
869 echo "cd /home/partimag" >> /tmp/burnISO
870 echo "growisofs -Z \$(what-cd -dwb)=$target_iso" >> /tmp/burnISO
871 echo "eject \$(what-cd -dwb)" >> /tmp/burnISO
872 echo "echo \"The medium must now be ejected and reinserted into\"" >> /tmp/burnISO
873 echo "echo \"the DVD-writer for the burning process to continue\"" >> /tmp/burnISO
874 echo "echo -n \"Place reload the DVD in the DVD-writer and press ENTER \"" >> /tmp/burnISO
875 echo "read" >> /tmp/burnISO
876 echo "growisofs -M \$(what-cd -dwb) -R -J \\" >> /tmp/burnISO
877 echo "-V \"$iso_label_tag\" --publisher \"$isoPublisher\" \\" >> /tmp/burnISO
878 echo "-graft-points /$(basename ${ifile%/})/=${ifile%/}" >> /tmp/burnISO
879 chmod +x /tmp/burnISO
880
881 ################################################################################

Properties

Name Value
svn:executable *

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26