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:
		
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -8,6 +8,8 @@
 | 
			
		||||
dist
 | 
			
		||||
*.qcow2
 | 
			
		||||
*.raw
 | 
			
		||||
*.initrd
 | 
			
		||||
*.vmlinuz
 | 
			
		||||
build
 | 
			
		||||
AUTHORS
 | 
			
		||||
ChangeLog
 | 
			
		||||
 
 | 
			
		||||
@@ -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.
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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
 | 
			
		||||
		Reference in New Issue
	
	Block a user