| 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 | 
|---|