Create a new baremetal element

Rather than using a script to mount the image using nbd to extract the
kernel and ramdisk, make a new element called baremetal, which contains
a cleanup.d script that will copy them out to <image name>.{vmlinuz,initrd}.

Closes-Bug: 1224669
Change-Id: I8f3569aa12148d18b1c8242b6fbbd8857894b26f
This commit is contained in:
Steve Kowalik 2014-01-20 23:00:21 +11:00
parent ed8264c9d9
commit 58c755cf4c
5 changed files with 70 additions and 2 deletions

2
.gitignore vendored
View File

@ -8,6 +8,8 @@
dist
*.qcow2
*.raw
*.initrd
*.vmlinuz
build
AUTHORS
ChangeLog

View File

@ -31,8 +31,9 @@ What tools are there?
ramdisk-image-create -o deploy.ramdisk deploy
* disk-image-get-kernel filename : Extract the appropriate kernel and ramdisk
to use when doing PXE boot using filename as the image for a machine.
* disk-image-get-kernel filename : **DEPRECATED** Extract the appropriate
kernel and ramdisk to use when doing PXE boot using filename as the image
for a machine. Consider using the `baremetal` element, rather than this tool.
* elements can be found in the top level elements directory.

View File

@ -41,6 +41,9 @@ function show_options () {
exit 0
}
echo 'DEPRECATED: Please consider using the `baremetal` element.'
echo
TEMP=`getopt -o hd:i:o:x -n $SCRIPTNAME -- "$@"`
if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi

View File

@ -0,0 +1,4 @@
This is the baremetal (IE: real hardware) element.
Currently, this element will extract out the kernel and initial ramdisk of
the built image.

View File

@ -0,0 +1,58 @@
#!/bin/bash
#
# Copyright 2014 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.
set -e
[ -n "$TARGET_ROOT" ]
# Dig up the initrd and kernel to use.
BOOTDIR="$TARGET_ROOT/boot"
KERNEL=
RAMDISK=
if [ -f $TARGET_ROOT/etc/redhat-release ]; then
# Prioritize PAE if present
KERNEL=$(ls -1rv $BOOTDIR/vmlinuz* | grep PAE | grep -v debug | head -1)
if [ ! $KERNEL ]; then
KERNEL=$(ls -1rv $BOOTDIR/vmlinuz* | grep -v debug | head -1)
if [ ! $KERNEL ]; then
echo "No suitable kernel found."
exit 1
fi
fi
KERNEL=$(basename $KERNEL)
KERNEL_VERSION=`echo $KERNEL | sed 's/vmlinuz-//g'`
RAMDISK=$(basename `ls $BOOTDIR/initramfs-$KERNEL_VERSION.img`)
if [ ! $RAMDISK ]; then
echo "Can't find an initramfs for the $KERNEL_VERSION version of the kernel."
exit 1
fi
elif [ -f $TARGET_ROOT/etc/debian_version ]; then
KERNEL=$(basename `ls -1rv $BOOTDIR/vmlinuz*generic | head -1`)
RAMDISK=$(basename `ls -1rv $BOOTDIR/initrd*generic | head -1`)
else
echo "ERROR: Unable to detect operating system"
exit 1
fi
sudo cp $BOOTDIR/$KERNEL ${IMAGE_NAME}.vmlinuz
sudo cp $BOOTDIR/$RAMDISK ${IMAGE_NAME}.initrd
sudo chmod a+r ${IMAGE_NAME}.vmlinuz
sudo chmod a+r ${IMAGE_NAME}.initrd