X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=work%2Fiso-image-create;fp=work%2Fiso-image-create;h=879e72a71d3afc2f317b6c60a6ba80a3029d7e3c;hb=ffee968ccc39318c855aa9ac2b161c06681a6b5a;hp=0000000000000000000000000000000000000000;hpb=6e5eddd9cf62a88c185572465393f7d5dd7d0e11;p=ta%2Fipa-deployer.git diff --git a/work/iso-image-create b/work/iso-image-create new file mode 100755 index 0000000..879e72a --- /dev/null +++ b/work/iso-image-create @@ -0,0 +1,154 @@ +#!/bin/bash +# +# Copyright 2012 Hewlett-Packard Development Company, L.P. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# This script generates iso image from the given kernel and ramdisk + +SCRIPTNAME=`basename $0` +TMP_BUILD_DIR="/tmp/$SCRIPTNAME.$$" +QEMU_IMG="/usr/bin/qemu-img" +MKISOFS="/usr/bin/mkisofs" + + +function show_options() { + + echo "Usage: ${SCRIPTNAME} [options]" + echo + echo "Options:" + + echo " -o output filename " + echo " -i initrd " + echo " -k kernel " +} + +function cleanup() { + + v_print "Cleaning up.." + rm -rf $TMP_BUILD_DIR +} + +function err_print() { + echo "ERROR: $@" 1>&2; +} + +function v_print() { + + echo "$*" +} + + +# Parse command line options +ARGS=`getopt -o "o:i:k:" -l "output,initrd,kernel:" \ + -n "$SCRIPTNAME" -- "$@"` +if [ $? -ne 0 ]; +then + exit 1 +fi + +eval set -- "$ARGS" + +while true ; do + case "$1" in + -o) OUTPUT_FILENAME=$2; shift 2 ;; + -i) INITRD=$2; shift 2 ;; + -k) KERNEL=$2; shift 2 ;; + # *) show_options ; exit 1 ;; + --) shift; break ;; + esac +done + +# Verify whether kernel, initrd, and the image file is present +if [ -z "$OUTPUT_FILENAME" ]; then + err_print "Output filename not provided." + show_options + exit 1 +fi + +if [ -z "$INITRD" ]; then + err_print "Initrd not provided." + show_options + exit 1 +fi + +if [ -z "$KERNEL" ]; then + err_print "Kernel not provided." + show_options + exit 1 +fi + +# Create a temporary build directory for holiding the contents of iso +TMP_IMAGE_DIR="$TMP_BUILD_DIR/image" +v_print "Creating temporary directory $TMP_IMAGE_DIR" +mkdir -p "$TMP_IMAGE_DIR" + +# Copy isolinux bin to the isolinux directory +mkdir -p "$TMP_IMAGE_DIR/isolinux" +v_print "Copying isolinux.bin" +if [ -f /usr/share/syslinux/isolinux.bin ] +then + cp /usr/share/syslinux/isolinux.bin "$TMP_IMAGE_DIR/isolinux" + +elif [ -f /usr/lib/syslinux/isolinux.bin ] +then + cp /usr/lib/syslinux/isolinux.bin "$TMP_IMAGE_DIR/isolinux" +else + err_print "Could not find isolinux.bin. Install syslinux?" + cleanup + exit 1 +fi + + +# Copy initrd, kernel +v_print "Copying kernel to $TMP_IMAGE_DIR/vmlinuz" +cp $KERNEL "$TMP_IMAGE_DIR/vmlinuz" +if [ $? -ne 0 ]; then + err_print "Failed to copy $KERNEL to $TMP_IMAGE_DIR" + cleanup + exit 1 +fi + +v_print "Copying initrd to $TMP_IMAGE_DIR/initrd" +cp $INITRD "$TMP_IMAGE_DIR/initrd" +if [ $? -ne 0 ]; then + err_print "Failed to copy $INITRD to $TMP_IMAGE_DIR" + cleanup + exit 1 +fi + +# Generate isolinux.cfg for default booting +v_print "Generating isolinux.cfg" +echo "\ +DEFAULT install +LABEL install + menu label "Install image" + kernel /vmlinuz + append initrd=/initrd boot_method=vmedia console=tty0 console=ttyS1,115200 selinux=0 -- +TIMEOUT 5 +PROMPT 0 " > "$TMP_IMAGE_DIR/isolinux/isolinux.cfg" + +# Convert relative path output filename to absolute path +echo $OUTPUT_FILENAME | grep -q '^/' +if [ $? -ne 0 ]; then + OUTPUT_FILENAME="$PWD/$OUTPUT_FILENAME" +fi + +# Create the ISO +v_print "Generating the ISO" +cd $TMP_IMAGE_DIR && $MKISOFS -r -V "INSTALL_IMAGE" -cache-inodes -J -l -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -o $OUTPUT_FILENAME . + +# Cleanup +cleanup +