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:
parent
ed8264c9d9
commit
58c755cf4c
2
.gitignore
vendored
2
.gitignore
vendored
@ -8,6 +8,8 @@
|
|||||||
dist
|
dist
|
||||||
*.qcow2
|
*.qcow2
|
||||||
*.raw
|
*.raw
|
||||||
|
*.initrd
|
||||||
|
*.vmlinuz
|
||||||
build
|
build
|
||||||
AUTHORS
|
AUTHORS
|
||||||
ChangeLog
|
ChangeLog
|
||||||
|
@ -31,8 +31,9 @@ What tools are there?
|
|||||||
|
|
||||||
ramdisk-image-create -o deploy.ramdisk deploy
|
ramdisk-image-create -o deploy.ramdisk deploy
|
||||||
|
|
||||||
* disk-image-get-kernel filename : Extract the appropriate kernel and ramdisk
|
* disk-image-get-kernel filename : **DEPRECATED** Extract the appropriate
|
||||||
to use when doing PXE boot using filename as the image for a machine.
|
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.
|
* elements can be found in the top level elements directory.
|
||||||
|
|
||||||
|
@ -41,6 +41,9 @@ function show_options () {
|
|||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
echo 'DEPRECATED: Please consider using the `baremetal` element.'
|
||||||
|
echo
|
||||||
|
|
||||||
TEMP=`getopt -o hd:i:o:x -n $SCRIPTNAME -- "$@"`
|
TEMP=`getopt -o hd:i:o:x -n $SCRIPTNAME -- "$@"`
|
||||||
if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
|
if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
|
||||||
|
|
||||||
|
4
elements/baremetal/README.md
Normal file
4
elements/baremetal/README.md
Normal 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.
|
58
elements/baremetal/cleanup.d/99-extract-kernel-and-ramdisk
Executable file
58
elements/baremetal/cleanup.d/99-extract-kernel-and-ramdisk
Executable 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
|
Loading…
Reference in New Issue
Block a user