| 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 |  | 
|---|
| 666 |  | 
|---|
| 667 |   DISTRO=$(lsb_release -c | awk '{ print $2 }') | 
|---|
| 668 |  | 
|---|
| 669 |   # prepare cloudera hadoop source list | 
|---|
| 670 |   cat << AddHadoopRepository > config/chroot_sources/hadoop.chroot | 
|---|
| 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 |  | 
|---|
| 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 | 
|---|