Recover iso-image-create script
This script was removed from IPA with CoreOS support, but it seems to be quite generic. Recover and document it. Change-Id: I014ada4509e60541bf12ef2bce9915afd8858d54
This commit is contained in:
parent
d768c3becd
commit
6a07f96f2f
@ -68,6 +68,20 @@ To use a specific branch of ironic-python-agent, use:
|
|||||||
|
|
||||||
export DIB_REPOREF_ironic_python_agent=origin/stable/queens
|
export DIB_REPOREF_ironic_python_agent=origin/stable/queens
|
||||||
|
|
||||||
|
ISO Images
|
||||||
|
~~~~~~~~~~
|
||||||
|
|
||||||
|
Additionally, the IPA ramdisk can be packaged inside of an ISO for use with
|
||||||
|
some virtual media drivers. Use the ``iso-image-create`` utility, passing it
|
||||||
|
the initrd and the kernel, for example:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
./tools/iso-image-create -o /path/to/output.iso -i /path/to/ipa.initrd -k /path/to/ipa.kernel
|
||||||
|
|
||||||
|
This is a generic tool that can be used to combine any initrd and kernel into
|
||||||
|
a suitable ISO for booting, and so should work against any IPA ramdisk.
|
||||||
|
|
||||||
Advanced options
|
Advanced options
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
|
168
tools/iso-image-create
Executable file
168
tools/iso-image-create
Executable file
@ -0,0 +1,168 @@
|
|||||||
|
#!/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"
|
||||||
|
|
||||||
|
elif [ -f /usr/lib/ISOLINUX/isolinux.bin ]
|
||||||
|
then
|
||||||
|
cp /usr/lib/ISOLINUX/isolinux.bin "$TMP_IMAGE_DIR/isolinux"
|
||||||
|
|
||||||
|
else
|
||||||
|
err_print "Could not find isolinux.bin. Install syslinux or isolinux?"
|
||||||
|
cleanup
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Copy ldlinux.c32 to the isolinux directory
|
||||||
|
v_print "Copying ldlinux.c32"
|
||||||
|
if [ -f /usr/share/syslinux/ldlinux.c32 ]
|
||||||
|
then
|
||||||
|
cp /usr/share/syslinux/ldlinux.c32 "$TMP_IMAGE_DIR/isolinux"
|
||||||
|
elif [ -f /usr/lib/syslinux/modules/bios/ldlinux.c32 ]
|
||||||
|
then
|
||||||
|
cp /usr/lib/syslinux/modules/bios/ldlinux.c32 "$TMP_IMAGE_DIR/isolinux"
|
||||||
|
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 --
|
||||||
|
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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user