[152] | 1 | #!/bin/bash |
---|
| 2 | # Author: Steven Shiau <steven _at_ nchc org tw> |
---|
| 3 | # License: GPL |
---|
| 4 | # Description: This script will create a DRBL live CD/USB flash drive iso/zip |
---|
| 5 | # This script works with live helper 1.0~a42-2 or later (Patched by DRBL team) |
---|
| 6 | |
---|
| 7 | # |
---|
| 8 | set -e |
---|
| 9 | |
---|
| 10 | # |
---|
| 11 | DRBL_SCRIPT_PATH="${DRBL_SCRIPT_PATH:-/opt/drbl/}" |
---|
| 12 | |
---|
| 13 | . $DRBL_SCRIPT_PATH/sbin/drbl-conf-functions |
---|
| 14 | . $DRBL_SCRIPT_PATH/conf/drbl-ocs.conf |
---|
| 15 | . $DRBL_SCRIPT_PATH/sbin/ocs-functions |
---|
| 16 | |
---|
| 17 | # debian_mirror_url_def, debian_mirror_security_url_def, DRBL_REPOSITORY_URL_def and DRBL_GPG_KEY_URL are loaded from drbl-ocs.conf |
---|
| 18 | |
---|
| 19 | # debian_type can be minimal (about 67 MB for Etch)/minimal-net (about 85 MB for Etch). |
---|
| 20 | # We have to use standard, since if using minimal, it will ignore apt key from DRBL. |
---|
| 21 | #debian_type="minimal" |
---|
| 22 | debian_type="standard" |
---|
| 23 | DEBIAN_DIST_DEF="lenny" |
---|
| 24 | pkgs="$PKG_FROM_DBN_WHICH_OCS_LIVE_NEED drbl $PKG_FROM_DBN $PKG_TO_QUERY $PKG_FROM_DRBL" |
---|
| 25 | categories_default="main non-free" |
---|
| 26 | cpu_flavor_default="486" |
---|
| 27 | bootstrap_default="cdebootstrap" |
---|
| 28 | |
---|
| 29 | # The files in dir $ocs_live_script_dir/ will be copied to the dir live-hook-dir in dir chroot. The file "drbl-live-hook" is in $ocs_live_script_dir |
---|
| 30 | ocs_live_script_dir="$DRBL_SCRIPT_PATH/setup/files/ocs/live-hook" |
---|
| 31 | # The script inside $ocs_live_script_dir/ will be run when chroot. There are many files in $$ocs_live_script_dir/, we will just run one here. |
---|
| 32 | run_hook_script="hadoop-live-hook" |
---|
| 33 | |
---|
| 34 | # |
---|
| 35 | check_if_root |
---|
| 36 | # |
---|
| 37 | prog="$(basename $0)" |
---|
| 38 | full_cmd="$prog $*" |
---|
| 39 | |
---|
| 40 | # functions |
---|
| 41 | USAGE() { |
---|
| 42 | echo "Usage:" |
---|
| 43 | echo "To create a Debian live CD which is used a template for Clonezilla live:" |
---|
| 44 | echo "$prog [OPTION]" |
---|
| 45 | echo "OPTION:" |
---|
| 46 | language_help_prompt_by_idx_no |
---|
| 47 | echo "-b, --branch [s|stable|t|testing|u|unstable] Specify the DRBL branch to be used in Live CD. Default is stable." |
---|
| 48 | echo "-bt, --bootstrap BOOTSTRAP Specify the bootsrap type as BOOTSTRAP (cdebootstrap or debootstrap). If not specified, $bootstrap_default will be used." |
---|
| 49 | echo "-c, --categories CAT Sepcify the category, e.g. 'main', 'main non-free', default is \'$categories_default\' if not specified." |
---|
| 50 | echo "-d, --debian-dist [stable|testing|unstable|lenny|squeeze|sid...] Assign Debian dist, the default is $DEBIAN_DIST_DEF if not assigned." |
---|
| 51 | echo "-f, --arch-flavor ARCH Assign the CPU architecture flavor as ARCH, e.g. 486 or 686. If it's not assigned, $cpu_flavor will be used." |
---|
| 52 | echo "-g, --drbl-repo-url URL Assign the DRBL repository URL instead of default one $DRBL_REPOSITORY_URL_def." |
---|
| 53 | echo "-n, --live-kernel-pkg KERNEL_VER Assign kernel version as KERNEL_VER (KERNEL VER package must exist in repository. Ex. if KERNEL_VER is 2.6.20-1-486, then linux-image-2.6.20-1-486, squashfs-modules-2.6.20-1-486, and unionfs-modules-2.6.20-1-486 will be used." |
---|
| 54 | echo "-i, --assign-version-no NO Assign the version no as NO instead of date." |
---|
| 55 | echo "-e, --drbl-live-branch [s|stable|t|testing|u|unstable|e|experimental] specifies the DRBL live branch to be used in Live CD. Default is stable." |
---|
| 56 | echo "-k, --package FILE Specify package FILE to be installed in Live CD." |
---|
| 57 | echo "-p, --packages-list FILE specifies an external package list file (such as xfce, gnome, kde...), one package for each line" |
---|
| 58 | echo "-m, --mirror-url URL Assign the Debian repository URL instead of default one $debian_mirror_url_def. " |
---|
| 59 | echo "-r, --rm-tmp-iso Remove the first stage temp iso file" |
---|
| 60 | echo "-s, --mirror-security-url URL Assign the Debian security repository URL instead of default one $debian_mirror_security_url_def." |
---|
| 61 | echo "-t, --target-media-file [cd|iso|usb|zip|b|both] Assign the target media file as CD (cd or iso), USB flash drive (usb or zip) or both of them (b or both). Default is both" |
---|
| 62 | echo "-u, --use-existing-tmp-iso Use the existing first stage temp iso file" |
---|
| 63 | echo "-x, --extra-boot-param EXTRA_PARAM Assign extra boot parameter EXTRA_PARAM for the 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." |
---|
| 64 | echo "-v, --verbose Run lh helper in verbose mode" |
---|
| 65 | echo "Ex: $0 -l en -d etch -p xfce -b u -k \"iceweasel-l10n-zh-tw x-ttcidfont-conf ttf-arphic-newsung gparted scim-chewing scim-tables-zh im-switch mlterm mlterm-im-scim discover1 xresprobe mdetect\" -e e -n 2.6.24-etchnhalf.1 -i 0.9.11-7" |
---|
| 66 | } |
---|
| 67 | # |
---|
| 68 | clean_tmp_dirs_files() { |
---|
| 69 | [ -d "$stage1_iso_TMP" -a -n "$(echo $stage1_iso_TMP | grep "ocs-iso-tmp")" ] && rm -rf $stage1_iso_TMP |
---|
| 70 | [ -d "$ISOSYSLNX_TMP" -a -n "$(echo $ISOSYSLNX_TMP | grep "isolnx-tmp")" ] && rm -rf $ISOSYSLNX_TMP |
---|
| 71 | [ -d "$USB_TMP" -a -n "$(echo $USB_TMP | grep "ocs-usb-dev")" ] && rm -rf $USB_TMP |
---|
| 72 | # clean the tmp iso. |
---|
| 73 | [ "$rm_tmp_iso" = "yes" -a -f "$stage1_target_iso" ] && rm -f $stage1_target_iso |
---|
| 74 | } # end of clean_tmp_dirs_files |
---|
| 75 | # |
---|
| 76 | create_version_tag_in_live() { |
---|
| 77 | local tag_file_in_abs_path="$1" |
---|
| 78 | local ver_tag_="$2" |
---|
| 79 | local drbl_v clonezilla_v |
---|
| 80 | drbl_v="$(dpkg -l drbl | tail -n 1 | awk -F" " '{print $3}')" |
---|
| 81 | clonezilla_v="$(dpkg -l clonezilla | tail -n 1 | awk -F" " '{print $3}')" |
---|
| 82 | cat <<-TAG_END > $tag_file_in_abs_path |
---|
| 83 | $ver_tag_ |
---|
| 84 | DRBL: $drbl_v |
---|
| 85 | Clonezilla: $clonezilla_v |
---|
| 86 | This DRBL live was created by: |
---|
| 87 | $full_cmd |
---|
| 88 | TAG_END |
---|
| 89 | } |
---|
| 90 | # |
---|
| 91 | create_drbl_live_iso(){ |
---|
| 92 | echo "$msg_delimiter_star_line" |
---|
| 93 | echo "Creating DRBL server iso file..." |
---|
| 94 | echo "$msg_delimiter_star_line" |
---|
| 95 | # |
---|
| 96 | # Possible kernel/initrd paths are /casper (created by casper) or /live (created by live-initramfs) |
---|
| 97 | # Find the kernel and initrd in $stage1_iso_TMP/casper or $stage1_iso_TMP/live |
---|
| 98 | # Ex: $stage1_iso_TMP/casper/vmlinuz1, /$stage1_iso_TMP/casper/initrd1.img |
---|
| 99 | # $live_sys_files_dir_list is from drbl-ocs.conf. |
---|
| 100 | # Possible kernel/initrd paths are /casper (created by casper) or /live (created by live-initramfs) |
---|
| 101 | sys_files_dir="" |
---|
| 102 | for i in $live_sys_files_dir_list; do |
---|
| 103 | krnfile="$(find $stage1_iso_TMP/$i/ -maxdepth 1 -name "vmlinuz*" -print 2>/dev/null)" |
---|
| 104 | if [ -n "$krnfile" ]; then |
---|
| 105 | krnfile="$(basename $krnfile)" |
---|
| 106 | sys_files_dir="$i" |
---|
| 107 | irdfile="$(find $stage1_iso_TMP/$i/ -maxdepth 1 -name "initrd*" -print)" |
---|
| 108 | irdfile="$(basename $irdfile)" |
---|
| 109 | break |
---|
| 110 | fi |
---|
| 111 | done |
---|
| 112 | BOOT_ITEM_DIR=$ISOSYSLNX_TMP/$sys_files_dir |
---|
| 113 | [ ! -d $BOOT_ITEM_DIR ] && mkdir $BOOT_ITEM_DIR |
---|
| 114 | |
---|
| 115 | if [ -z "$sys_files_dir" ]; then |
---|
| 116 | [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE |
---|
| 117 | echo "No system files from template live iso are found! Something went wrong!" |
---|
| 118 | [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL |
---|
| 119 | echo "$msg_program_stop" |
---|
| 120 | exit 1 |
---|
| 121 | fi |
---|
| 122 | |
---|
| 123 | if [ -z "$krnfile" -o -z "$irdfile" ]; then |
---|
| 124 | [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE |
---|
| 125 | echo "Kernel and initrd files NOT found in path $stage1_iso_TMP/$sys_files_dir/!" |
---|
| 126 | echo "$msg_program_stop" |
---|
| 127 | [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL |
---|
| 128 | exit 1 |
---|
| 129 | fi |
---|
| 130 | |
---|
| 131 | # Now we can insert the boot menu of isolinux |
---|
| 132 | mkdir -p $ISOSYSLNX_TMP/syslinux $ISOSYSLNX_TMP/isolinux |
---|
| 133 | # create isolinux menu |
---|
| 134 | # isolinux should be rw, so we have to copy it, and exclude the one in iso image. |
---|
| 135 | rsync -a --exclude f*.txt --exclude boot.cat --exclude isolinux.txt --exclude isolinux.bin --exclude splash.rle --exclude doc $stage1_iso_TMP/isolinux $ISOSYSLNX_TMP/ |
---|
| 136 | # We have to overwrite isolinux.bin since vesamenu.c32 should be same version with that. |
---|
| 137 | # For isolinux |
---|
| 138 | cp -af $isolinux_file $pxelinux_simple_vesamenu $pxelinux_simple_menu $pxelinux_memdisk_file $pxelinux_bg_img $pxelinux_chain_file $ISOSYSLNX_TMP/isolinux/ |
---|
| 139 | # For syslinux |
---|
| 140 | cp -af $pxelinux_simple_vesamenu $pxelinux_simple_menu $pxelinux_memdisk_file $pxelinux_bg_img $pxelinux_chain_file $ISOSYSLNX_TMP/syslinux/ |
---|
| 141 | |
---|
| 142 | etherboot_zlilo="$($query_pkglist_cmd drbl-etherboot | grep -E "eb-.*-etherboot-pci.zlilo$")" |
---|
| 143 | if [ -n "$etherboot_zlilo" ]; then |
---|
| 144 | # 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. |
---|
| 145 | # ref: http://syslinux.zytor.com/archives/2006-October/007440.html |
---|
| 146 | # "-" will be regards as "_" if you want to use "-" for isolinux. |
---|
| 147 | # In syslinux on vfat, etherboot.zlilo is too long, make it ever shorter as eb.zli |
---|
| 148 | cp -af $etherboot_zlilo $BOOT_ITEM_DIR/eb.zli |
---|
| 149 | fi |
---|
| 150 | # Same reason, we have to use different name in isolinux |
---|
| 151 | gpxe_lkn="$($query_pkglist_cmd gpxe 2>/dev/null | grep -E "gpxe.lkrn$")" |
---|
| 152 | if [ -n "$gpxe_lkn" ]; then |
---|
| 153 | # This is run in DRBL server |
---|
| 154 | cp -af $gpxe_lkn $BOOT_ITEM_DIR/gpxe.lkn |
---|
| 155 | fi |
---|
| 156 | # Same reason, we have to use different name in isolinux |
---|
| 157 | [ -e "$fdos_img_src" ] && cp -af $fdos_img_src $BOOT_ITEM_DIR/freedos.img |
---|
| 158 | [ -e "$memtest86_file" ] && cp -af $memtest86_file $BOOT_ITEM_DIR/memtest |
---|
| 159 | |
---|
| 160 | # Put the tag |
---|
| 161 | # The VER_TAG is like drbl-live-xfce-20070315 |
---|
| 162 | VER_TAG="$(echo $real_target_iso | sed -e "s/.iso$//g")" |
---|
| 163 | create_version_tag_in_live $ISOSYSLNX_TMP/DRBL-Live-Version "$VER_TAG" |
---|
| 164 | |
---|
| 165 | # Excluding list for mkisofs |
---|
| 166 | # We will create it like this: |
---|
| 167 | # -x $stage1_iso_TMP/isolinux -x $stage1_iso_TMP/md5sum.txt -x $stage1_iso_TMP/casper/memtest |
---|
| 168 | mkiso_exclude_list="isolinux syslinux md5sum.txt doc utils" |
---|
| 169 | for i in $live_sys_files_dir_list; do |
---|
| 170 | if [ -e "$stage1_iso_TMP/$i/memtest" ]; then |
---|
| 171 | mkiso_exclude_list="$mkiso_exclude_list $i/memtest" |
---|
| 172 | break |
---|
| 173 | fi |
---|
| 174 | done |
---|
| 175 | mkiso_exclude_opt="" |
---|
| 176 | for i in $mkiso_exclude_list; do |
---|
| 177 | mkiso_exclude_opt="$mkiso_exclude_opt -x $stage1_iso_TMP/$i" |
---|
| 178 | done |
---|
| 179 | |
---|
| 180 | # Find the boot param $boot_param |
---|
| 181 | get_live_boot_param $stage1_iso_TMP/isolinux |
---|
| 182 | # generate the menu |
---|
| 183 | # For isolinux |
---|
| 184 | ocs-live-boot-menu -s -l $lang_answer --title "DRBL Live" -f 785 -n "$version_no" -k /$sys_files_dir/$krnfile -i /$sys_files_dir/$irdfile -m $pxelinux_bg_img --boot-param "$boot_param $live_extra_boot_param" isolinux $ISOSYSLNX_TMP/isolinux/ |
---|
| 185 | # For syslinux |
---|
| 186 | ocs-live-boot-menu -s -l $lang_answer --title "DRBL Live" -f 785 -n "$version_no" -k /$sys_files_dir/$krnfile -i /$sys_files_dir/$irdfile -m $pxelinux_bg_img --boot-param "$boot_param $live_extra_boot_param" syslinux $ISOSYSLNX_TMP/syslinux/ |
---|
| 187 | |
---|
| 188 | echo "Preparing syslinux.exe, syslinux, makeboot.bat and makeboot.sh in dir utils... " |
---|
| 189 | put_syslinux_makeboot_for_usb_flash $ISOSYSLNX_TMP |
---|
| 190 | |
---|
| 191 | # $sys_files_dir maybe /casper, /live or /isolinux. If it is isolinux, we can not list them twice otherwise mkisofs will go wrong. |
---|
| 192 | if [ "$sys_files_dir" != "isolinux" ]; then |
---|
| 193 | sys_files_dir_graft_point="/isolinux/=$ISOSYSLNX_TMP/isolinux/ /syslinux/=$ISOSYSLNX_TMP/syslinux/ /$sys_files_dir/=$ISOSYSLNX_TMP/$sys_files_dir/" |
---|
| 194 | else |
---|
| 195 | sys_files_dir_graft_point="/isolinux/=$ISOSYSLNX_TMP/isolinux/ /syslinux/=$ISOSYSLNX_TMP/syslinux/" |
---|
| 196 | fi |
---|
| 197 | # create the iso file |
---|
| 198 | genisoimage \ |
---|
| 199 | -A "DRBL Live CD" \ |
---|
| 200 | -V "DRBL-live" \ |
---|
| 201 | -publisher "DRBL/Clonezilla http://drbl.name http://clonezilla.org" \ |
---|
| 202 | -r -J -l \ |
---|
| 203 | -b isolinux/isolinux.bin -c isolinux/boot.cat \ |
---|
| 204 | -no-emul-boot -boot-load-size 4 -boot-info-table \ |
---|
| 205 | -x $stage1_iso_TMP/isolinux \ |
---|
| 206 | -x $stage1_iso_TMP/md5sum.txt \ |
---|
| 207 | $mkiso_exclude_opt \ |
---|
| 208 | -graft-points $stage1_iso_TMP \ |
---|
| 209 | $sys_files_dir_graft_point \ |
---|
| 210 | /COPYING=$DRBL_SCRIPT_PATH/doc/COPYING \ |
---|
| 211 | /DRBL-Live-Version=$ISOSYSLNX_TMP/DRBL-Live-Version \ |
---|
| 212 | /utils=$ISOSYSLNX_TMP/utils \ |
---|
| 213 | > $real_target_iso |
---|
| 214 | RC_ISO=$? |
---|
| 215 | if [ "$RC_ISO" -eq 0 ]; then |
---|
| 216 | [ "$BOOTUP" = "color" ] && $SETCOLOR_SUCCESS |
---|
| 217 | echo "The $real_target_iso is created successfully!" |
---|
| 218 | [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL |
---|
| 219 | else |
---|
| 220 | [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE |
---|
| 221 | echo "The $real_target_iso is NOT created! Something went wrong!" |
---|
| 222 | [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL |
---|
| 223 | fi |
---|
| 224 | } # end of create_drbl_live_iso |
---|
| 225 | # |
---|
| 226 | create_drbl_live_zip() { |
---|
| 227 | # create temp dir for usb flash drive |
---|
| 228 | echo "$msg_delimiter_star_line" |
---|
| 229 | echo "Creating DRBL server zip file..." |
---|
| 230 | echo "$msg_delimiter_star_line" |
---|
| 231 | # |
---|
| 232 | # Possible kernel/initrd paths are /casper (created by casper) or /live (created by live-initramfs) |
---|
| 233 | # Find the kernel and initrd in $stage1_iso_TMP/casper or $stage1_iso_TMP/live |
---|
| 234 | # Ex: $stage1_iso_TMP/casper/vmlinuz1, /$stage1_iso_TMP/casper/initrd1.img |
---|
| 235 | # $live_sys_files_dir_list is from drbl-ocs.conf. |
---|
| 236 | # Possible kernel/initrd paths are /casper (created by casper) or /live (created by live-initramfs) |
---|
| 237 | sys_files_dir="" |
---|
| 238 | for i in $live_sys_files_dir_list; do |
---|
| 239 | krnfile="$(find $stage1_iso_TMP/$i/ -maxdepth 1 -name "vmlinuz*" -print 2>/dev/null)" |
---|
| 240 | if [ -n "$krnfile" ]; then |
---|
| 241 | krnfile="$(basename $krnfile)" |
---|
| 242 | sys_files_dir="$i" |
---|
| 243 | irdfile="$(find $stage1_iso_TMP/$i/ -maxdepth 1 -name "initrd*" -print)" |
---|
| 244 | irdfile="$(basename $irdfile)" |
---|
| 245 | break |
---|
| 246 | fi |
---|
| 247 | done |
---|
| 248 | |
---|
| 249 | if [ -z "$sys_files_dir" ]; then |
---|
| 250 | [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE |
---|
| 251 | echo "No system files from template live iso are found! Something went wrong!" |
---|
| 252 | [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL |
---|
| 253 | echo "$msg_program_stop" |
---|
| 254 | exit 1 |
---|
| 255 | fi |
---|
| 256 | |
---|
| 257 | if [ -z "$krnfile" -o -z "$irdfile" ]; then |
---|
| 258 | [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE |
---|
| 259 | echo "Kernel and initrd files NOT found in path $stage1_iso_TMP/$sys_files_dir/!" |
---|
| 260 | echo "$msg_program_stop" |
---|
| 261 | [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL |
---|
| 262 | exit 1 |
---|
| 263 | fi |
---|
| 264 | |
---|
| 265 | WD="$(pwd)" |
---|
| 266 | USB_TMP="$(mktemp -d /tmp/ocs-usb-dev.XXXXXX)" |
---|
| 267 | mkdir -p $USB_TMP/$sys_files_dir |
---|
| 268 | mkdir -p $USB_TMP/syslinux/ $USB_TMP/isolinux/ |
---|
| 269 | echo "Copying files to temp working directory... This might take some time..." |
---|
| 270 | rsync -av --exclude isolinux --exclude md5sum.txt --exclude doc $stage1_iso_TMP/* $USB_TMP/ |
---|
| 271 | cp -af $DRBL_SCRIPT_PATH/doc/COPYING $USB_TMP/ |
---|
| 272 | # For syslinux |
---|
| 273 | cp -af $pxelinux_simple_vesamenu $pxelinux_simple_menu $pxelinux_memdisk_file $pxelinux_bg_img $pxelinux_chain_file $USB_TMP/syslinux/ |
---|
| 274 | # For isolinux |
---|
| 275 | cp -af $isolinux_file $pxelinux_simple_vesamenu $pxelinux_simple_menu $pxelinux_memdisk_file $pxelinux_bg_img $pxelinux_chain_file $USB_TMP/isolinux/ |
---|
| 276 | # ref: http://syslinux.zytor.com/archives/2006-October/007440.html |
---|
| 277 | # "-" will be regards as "_" if you want to use "-" for isolinux. |
---|
| 278 | # In syslinux on vfat, etherboot.zlilo is too long, make it ever shorter as eb.zli |
---|
| 279 | etherboot_zlilo="$($query_pkglist_cmd drbl-etherboot | grep -E "eb-.*-etherboot-pci.zlilo$")" |
---|
| 280 | if [ -n "$etherboot_zlilo" ]; then |
---|
| 281 | # 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. |
---|
| 282 | # ref: http://syslinux.zytor.com/archives/2006-October/007440.html |
---|
| 283 | # "-" will be regards as "_" if you want to use "-" for isolinux. |
---|
| 284 | # In syslinux on vfat, etherboot.zlilo is too long, make it ever shorter as eb.zli |
---|
| 285 | cp -af $etherboot_zlilo $USB_TMP/$sys_files_dir/eb.zli |
---|
| 286 | fi |
---|
| 287 | [ -e "$fdos_img_src" ] && cp -af $fdos_img_src $USB_TMP/$sys_files_dir/freedos.img |
---|
| 288 | [ -e "$memtest86_file" ] && cp -af $memtest86_file $USB_TMP/$sys_files_dir/memtest |
---|
| 289 | cp -af $stage1_iso_TMP/$sys_files_dir/{$krnfile,$irdfile} $USB_TMP/$sys_files_dir/ |
---|
| 290 | # Put the tag |
---|
| 291 | # The VER_TAG is like drbl-live-xfce-20070315 |
---|
| 292 | VER_TAG="$(echo $real_target_zip | sed -e "s/.zip$//g")" |
---|
| 293 | create_version_tag_in_live $USB_TMP/DRBL-Live-Version "$VER_TAG" |
---|
| 294 | |
---|
| 295 | # Find the boot param $boot_param |
---|
| 296 | get_live_boot_param $stage1_iso_TMP/isolinux |
---|
| 297 | # generate the menu |
---|
| 298 | # For syslinux |
---|
| 299 | ocs-live-boot-menu -s -l $lang_answer --title "DRBL Live" -f 785 -n "$version_no" -k /$sys_files_dir/$krnfile -i /$sys_files_dir/$irdfile -m $pxelinux_bg_img --boot-param "$boot_param $live_extra_boot_param noprompt" syslinux $USB_TMP/syslinux/ |
---|
| 300 | # For isolinux |
---|
| 301 | ocs-live-boot-menu -s -l $lang_answer --title "DRBL Live" -f 785 -n "$version_no" -k /$sys_files_dir/$krnfile -i /$sys_files_dir/$irdfile -m $pxelinux_bg_img --boot-param "$boot_param $live_extra_boot_param noprompt" isolinux $USB_TMP/isolinux/ |
---|
| 302 | |
---|
| 303 | echo "Preparing syslinux.exe, syslinux, makeboot.bat and makeboot.sh in dir utils... " |
---|
| 304 | put_syslinux_makeboot_for_usb_flash $USB_TMP |
---|
| 305 | # just store it. since big files, like squash flie and opt_drbl.tgz are compressed, it's not necessary to compress it again. |
---|
| 306 | [ -e "$WD/$real_target_zip" ] && rm -f $WD/$real_target_zip |
---|
| 307 | (cd $USB_TMP; zip -0 -r $WD/$real_target_zip *) |
---|
| 308 | echo "The created release file is $real_target_zip. You can extract all the files into your pendrive, and run makeboot.bat from pendrive on MS windows." |
---|
| 309 | [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING |
---|
| 310 | echo "Warning: DO NOT RUN makeboot.bat from your local hard drive!! It is intended to be run from your USB device." |
---|
| 311 | [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL |
---|
| 312 | |
---|
| 313 | } # end of create_drbl_live_zip |
---|
| 314 | |
---|
| 315 | # default settings |
---|
| 316 | extra_pkgs="" |
---|
| 317 | pkg_list="" |
---|
| 318 | pkg_list_opt="" |
---|
| 319 | rm_tmp_iso="no" |
---|
| 320 | use_existing_stage1_iso="no" |
---|
| 321 | TARGET_MEDIA_FILE_DEF="both" |
---|
| 322 | # Parse command-line options |
---|
| 323 | while [ $# -gt 0 ]; do |
---|
| 324 | case "$1" in |
---|
| 325 | -l|--language) |
---|
| 326 | shift |
---|
| 327 | if [ -z "$(echo $1 |grep ^-.)" ]; then |
---|
| 328 | # skip the -xx option, in case |
---|
| 329 | specified_lang="$1" |
---|
| 330 | shift |
---|
| 331 | fi |
---|
| 332 | [ -z "$specified_lang" ] && USAGE && exit 1 |
---|
| 333 | ;; |
---|
| 334 | -b|--branch) |
---|
| 335 | shift |
---|
| 336 | if [ -z "$(echo $1 |grep ^-.)" ]; then |
---|
| 337 | # skip the -xx option, in case |
---|
| 338 | drbl_branch="$1" |
---|
| 339 | shift |
---|
| 340 | fi |
---|
| 341 | [ -z "$drbl_branch" ] && USAGE && exit 1 |
---|
| 342 | ;; |
---|
| 343 | -bt|--bootstrap) |
---|
| 344 | shift |
---|
| 345 | if [ -z "$(echo $1 |grep ^-.)" ]; then |
---|
| 346 | # skip the -xx option, in case |
---|
| 347 | bootstrap="$1" |
---|
| 348 | shift |
---|
| 349 | fi |
---|
| 350 | [ -z "$bootstrap" ] && USAGE && exit 1 |
---|
| 351 | ;; |
---|
| 352 | -c|--categories) |
---|
| 353 | shift |
---|
| 354 | if [ -z "$(echo $1 |grep ^-.)" ]; then |
---|
| 355 | # skip the -xx option, in case |
---|
| 356 | categories="$1" |
---|
| 357 | shift |
---|
| 358 | fi |
---|
| 359 | [ -z "$categories" ] && USAGE && exit 1 |
---|
| 360 | ;; |
---|
| 361 | -d|--debian-dist) |
---|
| 362 | shift |
---|
| 363 | if [ -z "$(echo $1 |grep ^-.)" ]; then |
---|
| 364 | # skip the -xx option, in case |
---|
| 365 | debian_dist="$1" |
---|
| 366 | shift |
---|
| 367 | fi |
---|
| 368 | [ -z "$debian_dist" ] && USAGE && exit 1 |
---|
| 369 | ;; |
---|
| 370 | -i|--assign-version-no) |
---|
| 371 | shift |
---|
| 372 | if [ -z "$(echo $1 |grep ^-.)" ]; then |
---|
| 373 | # skip the -xx option, in case |
---|
| 374 | version_no="$1" |
---|
| 375 | shift |
---|
| 376 | fi |
---|
| 377 | [ -z "$version_no" ] && USAGE && exit 1 |
---|
| 378 | ;; |
---|
| 379 | -k|--package) |
---|
| 380 | shift |
---|
| 381 | if [ -z "$(echo $1 |grep ^-.)" ]; then |
---|
| 382 | # skip the -xx option, in case |
---|
| 383 | extra_pkgs="$1" |
---|
| 384 | shift |
---|
| 385 | fi |
---|
| 386 | [ -z "$extra_pkgs" ] && USAGE && exit 1 |
---|
| 387 | ;; |
---|
| 388 | -n|--live-kernel-pkg) |
---|
| 389 | shift |
---|
| 390 | if [ -z "$(echo $1 |grep ^-.)" ]; then |
---|
| 391 | # skip the -xx option, in case |
---|
| 392 | live_kernel_ver="$1" |
---|
| 393 | shift |
---|
| 394 | fi |
---|
| 395 | [ -z "$live_kernel_ver" ] && USAGE && exit 1 |
---|
| 396 | ;; |
---|
| 397 | -e|--drbl-live-branch) |
---|
| 398 | shift |
---|
| 399 | if [ -z "$(echo $1 |grep ^-.)" ]; then |
---|
| 400 | # skip the -xx option, in case |
---|
| 401 | drbl_live_branch="$1" |
---|
| 402 | shift |
---|
| 403 | fi |
---|
| 404 | [ -z "$drbl_live_branch" ] && USAGE && exit 1 |
---|
| 405 | ;; |
---|
| 406 | -p|--packages-list) |
---|
| 407 | shift |
---|
| 408 | if [ -z "$(echo $1 |grep ^-.)" ]; then |
---|
| 409 | # skip the -xx option, in case |
---|
| 410 | pkg_list="$pkg_list $1" |
---|
| 411 | shift |
---|
| 412 | fi |
---|
| 413 | [ -z "$pkg_list" ] && USAGE && exit 1 |
---|
| 414 | ;; |
---|
| 415 | -f|--arch-flavor) |
---|
| 416 | shift |
---|
| 417 | if [ -z "$(echo $1 |grep ^-.)" ]; then |
---|
| 418 | # skip the -xx option, in case |
---|
| 419 | cpu_flavor="$1" |
---|
| 420 | shift |
---|
| 421 | fi |
---|
| 422 | [ -z "$cpu_flavor" ] && USAGE && exit 1 |
---|
| 423 | ;; |
---|
| 424 | -g|--drbl-repo-url) |
---|
| 425 | shift |
---|
| 426 | if [ -z "$(echo $1 |grep ^-.)" ]; then |
---|
| 427 | # skip the -xx option, in case |
---|
| 428 | DRBL_REPOSITORY_URL="$1" |
---|
| 429 | shift |
---|
| 430 | fi |
---|
| 431 | [ -z "$DRBL_REPOSITORY_URL" ] && USAGE && exit 1 |
---|
| 432 | ;; |
---|
| 433 | -m|--mirror-url) |
---|
| 434 | shift |
---|
| 435 | if [ -z "$(echo $1 |grep ^-.)" ]; then |
---|
| 436 | # skip the -xx option, in case |
---|
| 437 | mirror_url="$1" |
---|
| 438 | shift |
---|
| 439 | fi |
---|
| 440 | [ -z "$mirror_url" ] && USAGE && exit 1 |
---|
| 441 | ;; |
---|
| 442 | -s|--mirror-security-url) |
---|
| 443 | shift |
---|
| 444 | if [ -z "$(echo $1 |grep ^-.)" ]; then |
---|
| 445 | # skip the -xx option, in case |
---|
| 446 | mirror_security_url="$1" |
---|
| 447 | shift |
---|
| 448 | fi |
---|
| 449 | [ -z "$mirror_security_url" ] && USAGE && exit 1 |
---|
| 450 | ;; |
---|
| 451 | -t|--target-media-file) |
---|
| 452 | shift |
---|
| 453 | if [ -z "$(echo $1 |grep ^-.)" ]; then |
---|
| 454 | # skip the -xx option, in case |
---|
| 455 | target_media_file="$1" |
---|
| 456 | shift |
---|
| 457 | fi |
---|
| 458 | [ -z "$target_media_file" ] && USAGE && exit 1 |
---|
| 459 | ;; |
---|
| 460 | -r|--rm-tmp-iso) |
---|
| 461 | rm_tmp_iso="yes" |
---|
| 462 | shift ;; |
---|
| 463 | -u|--use-existing-tmp-iso) |
---|
| 464 | use_existing_stage1_iso="yes" |
---|
| 465 | shift ;; |
---|
| 466 | -v|--verbose) |
---|
| 467 | verbose="on" |
---|
| 468 | shift ;; |
---|
| 469 | -x|--extra-boot-param) |
---|
| 470 | shift |
---|
| 471 | if [ -z "$(echo $1 |grep ^-.)" ]; then |
---|
| 472 | # skip the -xx option, in case |
---|
| 473 | live_extra_boot_param="$1" |
---|
| 474 | shift |
---|
| 475 | fi |
---|
| 476 | shift |
---|
| 477 | [ -z "$live_extra_boot_param" ] && USAGE && exit 1 |
---|
| 478 | ;; |
---|
| 479 | -*) echo "${0}: ${1}: invalid option" >&2 |
---|
| 480 | USAGE >& 2 |
---|
| 481 | exit 2 ;; |
---|
| 482 | *) break ;; |
---|
| 483 | esac |
---|
| 484 | done |
---|
| 485 | |
---|
| 486 | # |
---|
| 487 | if [ "$use_existing_stage1_iso" = "no" ]; then |
---|
| 488 | # if we use existing stage 1 iso file, then we do not have to check if lh exists. Otherwise we need make-live to create the stage 1 iso file |
---|
| 489 | if ! type lh &>/dev/null; then |
---|
| 490 | [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE |
---|
| 491 | echo "This script only works in Debian Etch or later!" |
---|
| 492 | echo "If you are running Debian Etch or later, use 'apt-get install live-helper' to install the live-helper (version $lh_ver_required or later), then run $0 again." |
---|
| 493 | [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL |
---|
| 494 | exit 1 |
---|
| 495 | fi |
---|
| 496 | create_live_required_debian_based_prompt |
---|
| 497 | fi |
---|
| 498 | |
---|
| 499 | # we need zip to create the release file when target_mode is release_file |
---|
| 500 | if ! type zip &>/dev/null; then |
---|
| 501 | [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE |
---|
| 502 | echo "Command zip not found!" |
---|
| 503 | [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL |
---|
| 504 | echo "$msg_program_stop" |
---|
| 505 | exit 1 |
---|
| 506 | fi |
---|
| 507 | |
---|
| 508 | ask_and_load_lang_set $specified_lang |
---|
| 509 | |
---|
| 510 | [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING |
---|
| 511 | echo "Creating DRBL live..." |
---|
| 512 | [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL |
---|
| 513 | |
---|
| 514 | rm -rf debian-live/.stage/ |
---|
| 515 | |
---|
| 516 | # Apply default settings if not assigned |
---|
| 517 | [ -z "$debian_dist" ] && debian_dist="$DEBIAN_DIST_DEF" |
---|
| 518 | [ -z "$categories" ] && categories="$categories_default" |
---|
| 519 | [ -z "$DRBL_REPOSITORY_URL" ] && DRBL_REPOSITORY_URL="$DRBL_REPOSITORY_URL_def" |
---|
| 520 | [ -z "$mirror_url" ] && mirror_url="$debian_mirror_url_def" |
---|
| 521 | [ -z "$mirror_security_url" ] && mirror_security_url="$debian_mirror_security_url_def" |
---|
| 522 | [ -z "$cpu_flavor" ] && cpu_flavor="$cpu_flavor_default" |
---|
| 523 | [ -z "$bootstrap" ] && bootstrap=$bootstrap_default |
---|
| 524 | |
---|
| 525 | # Append the extra packages |
---|
| 526 | [ -n "$extra_pkgs" ] && pkgs="$pkgs $extra_pkgs" |
---|
| 527 | |
---|
| 528 | echo "The packages to be included in this live CD:" |
---|
| 529 | echo "$msg_delimiter_star_line" |
---|
| 530 | echo "$pkgs" |
---|
| 531 | echo "$msg_delimiter_star_line" |
---|
| 532 | if [ -n "$pkg_list" ]; then |
---|
| 533 | pkg_list_opt="$pkg_list_opt --packages-list $pkg_list" |
---|
| 534 | echo "The packages list to be included in this live CD:" |
---|
| 535 | echo "$msg_delimiter_star_line" |
---|
| 536 | echo "$pkg_list" |
---|
| 537 | echo "$msg_delimiter_star_line" |
---|
| 538 | fi |
---|
| 539 | |
---|
| 540 | # |
---|
| 541 | echo "Using Debian $debian_dist..." |
---|
| 542 | echo "Using Debian repository from: $mirror_url" |
---|
| 543 | echo "Using Debian security repository from: $mirror_security_url" |
---|
| 544 | echo "Using DRBL repository from: $DRBL_REPOSITORY_URL" |
---|
| 545 | |
---|
| 546 | # |
---|
| 547 | case "$drbl_branch" in |
---|
| 548 | t|testing) |
---|
| 549 | echo "Using DRBL testing branch..." |
---|
| 550 | LIVE_REPOSITORY_SECTIONS_drbl="stable testing" |
---|
| 551 | ;; |
---|
| 552 | u|unstable) |
---|
| 553 | echo "Using DRBL unstable branch..." |
---|
| 554 | LIVE_REPOSITORY_SECTIONS_drbl="stable testing unstable" |
---|
| 555 | ;; |
---|
| 556 | *) |
---|
| 557 | echo "Using DRBL stable branch..." |
---|
| 558 | LIVE_REPOSITORY_SECTIONS_drbl="stable live-stable" |
---|
| 559 | ;; |
---|
| 560 | esac |
---|
| 561 | case "$drbl_live_branch" in |
---|
| 562 | t|testing) |
---|
| 563 | echo "Using DRBL Live testing branch..." |
---|
| 564 | LIVE_REPOSITORY_SECTIONS_drbl="$LIVE_REPOSITORY_SECTIONS_drbl live-stable live-testing" |
---|
| 565 | ;; |
---|
| 566 | u|unstable) |
---|
| 567 | echo "Using DRBL Live unstable branch..." |
---|
| 568 | LIVE_REPOSITORY_SECTIONS_drbl="$LIVE_REPOSITORY_SECTIONS_drbl live-stable live-testing live-unstable" |
---|
| 569 | ;; |
---|
| 570 | e|experimental) |
---|
| 571 | echo "Using DRBL Live experimental branch..." |
---|
| 572 | LIVE_REPOSITORY_SECTIONS_drbl="$LIVE_REPOSITORY_SECTIONS_drbl live-stable live-testing live-unstable live-experimental" |
---|
| 573 | ;; |
---|
| 574 | *) |
---|
| 575 | echo "Using DRBL live stable branch..." |
---|
| 576 | LIVE_REPOSITORY_SECTIONS_drbl="$LIVE_REPOSITORY_SECTIONS_drbl live-stable" |
---|
| 577 | ;; |
---|
| 578 | esac |
---|
| 579 | |
---|
| 580 | if [ -z "$pkg_list" ]; then |
---|
| 581 | nametag="standard" |
---|
| 582 | else |
---|
| 583 | # choose the first one, and strip space. |
---|
| 584 | #nametag="$(echo $pkg_list | awk -F" " '{print $1}' | sed -e "s/ //g")" |
---|
| 585 | # strip the spaces in the beginning and end, replace other space with - |
---|
| 586 | nametag="$(echo $pkg_list | sed -e "s/^ *//g" -e "s/ *$//g" -e "s/ /-/g")" |
---|
| 587 | fi |
---|
| 588 | |
---|
| 589 | # if version_no is not assigned, use date (Ex. 20070409) |
---|
| 590 | [ -z "$version_no" ] && version_no="$(date +%Y%m%d)" |
---|
| 591 | stage1_target_iso="hadoop-live-${nametag}-stage1-${version_no}.iso" |
---|
| 592 | real_target_iso="hadoop-live-${nametag}-${version_no}.iso" |
---|
| 593 | real_target_zip="hadoop-live-${nametag}-${version_no}.zip" |
---|
| 594 | [ -z "$target_media_file" ] && target_media_file="$TARGET_MEDIA_FILE_DEF" |
---|
| 595 | echo "$msg_delimiter_star_line" |
---|
| 596 | |
---|
| 597 | if [ "$debian_dist" = "squeeze" -o "$debian_dist" = "sid" ]; then |
---|
| 598 | # From around Oct/2009, the dummy package name "grub" is actually grub-pc, therefore we force to use grub-legacy and assume that if grub2 boot loader is used in the restored GNU/Linux, grub2 is available in the restored GNU/Linux so therefore we can use chroot to run it. |
---|
| 599 | pkgs="$(LC_ALL=C echo $pkgs | sed -r -e "s/grub[[:space:]]+/grub-legacy /")" |
---|
| 600 | # Since with squeeze or sid, we can use uvesafb to replace vesafb, we need v86d. Check https://bugs.launchpad.net/ubuntu/+source/v86d/+bug/189621 for more details. |
---|
| 601 | fi |
---|
| 602 | |
---|
| 603 | if [ "$verbose" = "on" ]; then |
---|
| 604 | pref="bash -x" |
---|
| 605 | export CDEBOOTSTRAP_OPTIONS="$CDEBOOTSTRAP_OPTIONS -v --debug" |
---|
| 606 | fi |
---|
| 607 | |
---|
| 608 | if [ "$use_existing_stage1_iso" = "no" ]; then |
---|
| 609 | if [ -d "debian-live" ]; then |
---|
| 610 | echo "Found dir debian-live, clean stale debian-live files..." |
---|
| 611 | chroot debian-live/chroot umount /dev/pts &>/dev/null || true |
---|
| 612 | chroot debian-live/chroot umount /proc &>/dev/null || true |
---|
| 613 | chroot debian-live/chroot umount /sys &>/dev/null || true |
---|
| 614 | ( |
---|
| 615 | cd debian-live/ |
---|
| 616 | lh clean |
---|
| 617 | ) |
---|
| 618 | fi |
---|
| 619 | rm -rf debian-live |
---|
| 620 | mkdir debian-live |
---|
| 621 | ( |
---|
| 622 | cd debian-live |
---|
| 623 | |
---|
| 624 | $pref lh config --archive-areas "$categories" |
---|
| 625 | $pref lh config --mirror-binary $mirror_url --mirror-binary-security $mirror_security_url |
---|
| 626 | $pref lh config --mirror-bootstrap $mirror_url |
---|
| 627 | $pref lh config --mirror-chroot $mirror_url --mirror-chroot-security $mirror_security_url |
---|
| 628 | $pref lh config --bootstrap-flavour $debian_type --packages "$pkgs" $pkg_list_opt --bootappend ip=frommedia |
---|
| 629 | $pref lh config --apt aptitude --apt-recommends false --binary-indices false --bootstrap $bootstrap --tasksel none |
---|
| 630 | $pref lh config --volatile false |
---|
| 631 | $pref lh config --initramfs live-initramfs |
---|
| 632 | $pref lh config --username user --bootappend username=user |
---|
| 633 | # Enable cache-indices, by doing this, "apt-get upgrade" won't be run in lh chroot_sources after hook since we might assign older package version when building. |
---|
| 634 | $pref lh config --cache-indices true |
---|
| 635 | |
---|
| 636 | # This decide_live_kernel_related_pkgs_from_debian function will output "kernel_related_pkgs" and "export MKSQUASHFS_OPTIONS" |
---|
| 637 | decide_live_kernel_related_pkgs_from_debian |
---|
| 638 | $pref lh config --distribution $debian_dist --linux-packages "$kernel_related_pkgs" |
---|
| 639 | |
---|
| 640 | # We force to use the specific CPU kernel. |
---|
| 641 | $pref lh config --linux-flavours $cpu_flavor |
---|
| 642 | |
---|
| 643 | # No memtest from debian, we will use the one from drbl since it's newer. |
---|
| 644 | $pref lh config --memtest none |
---|
| 645 | |
---|
| 646 | # Put files to be included |
---|
| 647 | mkdir -p config/chroot_local-includes/live-hook-dir |
---|
| 648 | for i in $ocs_live_script_dir; do |
---|
| 649 | cp -pr $i/* config/chroot_local-includes/live-hook-dir/ |
---|
| 650 | done |
---|
| 651 | cp $DRBL_SCRIPT_PATH/conf/drbl*.conf config/chroot_local-includes/live-hook-dir/ |
---|
| 652 | |
---|
| 653 | # Put hook file to be run |
---|
| 654 | mkdir -p config/chroot_local-hooks |
---|
| 655 | cp $ocs_live_script_dir/$run_hook_script config/chroot_local-hooks/ |
---|
| 656 | |
---|
| 657 | |
---|
| 658 | # prepare drbl source list |
---|
| 659 | cat << AddDRBLRepository > config/chroot_sources/drbl.chroot |
---|
| 660 | deb $DRBL_REPOSITORY_URL drbl $LIVE_REPOSITORY_SECTIONS_drbl |
---|
| 661 | AddDRBLRepository |
---|
| 662 | |
---|
| 663 | # prepare drbl key |
---|
| 664 | LC_ALL=C wget -O config/chroot_sources/drbl.chroot.gpg $DRBL_GPG_KEY_URL |
---|
| 665 | |
---|
[153] | 666 | |
---|
[154] | 667 | DISTRO=$(lsb_release -c | awk '{ print $2 }') |
---|
[153] | 668 | |
---|
| 669 | # prepare cloudera hadoop source list |
---|
[154] | 670 | cat << AddHadoopRepository > config/chroot_sources/hadoop.chroot |
---|
[153] | 671 | deb http://archive.cloudera.com/debian $DISTRO-cdh2 contrib |
---|
| 672 | AddHadoopRepository |
---|
| 673 | |
---|
| 674 | # prepare cloudera key |
---|
| 675 | LC_ALL=C wget -O config/chroot_sources/hadoop.chroot.gpg http://archive.cloudera.com/debian/archive.key |
---|
| 676 | |
---|
[152] | 677 | $pref lh build |
---|
| 678 | ) |
---|
| 679 | mv -f debian-live/binary.iso $stage1_target_iso |
---|
| 680 | else |
---|
| 681 | echo "Use existing temp iso file: $stage1_target_iso" |
---|
| 682 | fi |
---|
| 683 | # clean the dir debian-live if $stage1_target_iso is already created |
---|
| 684 | if [ -f "$stage1_target_iso" -a -d "debian-live" ]; then |
---|
| 685 | echo "Removing working dir debian-live in background..." |
---|
| 686 | rm -rf debian-live & |
---|
| 687 | fi |
---|
| 688 | # |
---|
| 689 | [ ! -e "$stage1_target_iso" ] && echo "$stage1_target_iso does NOT exist!" && exit 1 |
---|
| 690 | |
---|
| 691 | # mount the stage 1 iso file |
---|
| 692 | stage1_iso_TMP="$(mktemp -d /tmp/ocs-iso-tmp.XXXXXX)" |
---|
| 693 | trap "[ -d "$stage1_iso_TMP" ] && umount $stage1_iso_TMP &>/dev/null && clean_tmp_dirs_files" HUP INT QUIT TERM EXIT |
---|
| 694 | ISOSYSLNX_TMP="$(mktemp -d /tmp/isolnx-tmp.XXXXXX)" |
---|
| 695 | mount -o loop $stage1_target_iso $stage1_iso_TMP |
---|
| 696 | |
---|
| 697 | # |
---|
| 698 | case "$target_media_file" in |
---|
| 699 | cd|CD|iso|ISO) |
---|
| 700 | create_drbl_live_iso |
---|
| 701 | ;; |
---|
| 702 | usb|zip) |
---|
| 703 | create_drbl_live_zip |
---|
| 704 | ;; |
---|
| 705 | b|both|BOTH) |
---|
| 706 | create_drbl_live_iso |
---|
| 707 | create_drbl_live_zip |
---|
| 708 | ;; |
---|
| 709 | esac |
---|
| 710 | |
---|
| 711 | # unmount all iso file |
---|
| 712 | umount $stage1_iso_TMP &>/dev/null |
---|
| 713 | # Clean the tmp working directory |
---|
| 714 | echo "Cleaning tmp dirs..." |
---|
| 715 | clean_tmp_dirs_files |
---|
| 716 | |
---|
| 717 | # |
---|
| 718 | if type isohybrid &>/dev/null; then |
---|
| 719 | if [ -e "$real_target_iso" ]; then |
---|
| 720 | echo -n "Isohybriding $real_target_iso... " |
---|
| 721 | isohybrid $real_target_iso |
---|
| 722 | echo "done!" |
---|
| 723 | fi |
---|
| 724 | fi |
---|
| 725 | # |
---|
| 726 | case "$target_media_file" in |
---|
| 727 | cd|CD|iso|ISO) |
---|
| 728 | [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING |
---|
| 729 | echo "$msg_burn_drbl_live_img_iso: $real_target_iso" |
---|
| 730 | [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL |
---|
| 731 | ;; |
---|
| 732 | usb|zip) |
---|
| 733 | [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING |
---|
| 734 | echo "$msg_burn_drbl_live_img_zip: $real_target_zip" |
---|
| 735 | [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL |
---|
| 736 | ;; |
---|
| 737 | b|both|BOTH) |
---|
| 738 | [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING |
---|
| 739 | echo "$msg_burn_drbl_live_img_iso: $real_target_iso" |
---|
| 740 | echo "$msg_burn_drbl_live_img_zip: $real_target_zip" |
---|
| 741 | [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL |
---|
| 742 | ;; |
---|
| 743 | esac |
---|