6df7039ba1
When using custom-built kernels, their filenames may not necessarily follow the standard naming conventions for the stock systems in question. This patch permits the specification of an alternative pattern to use when looking for the correct kernel to construct the PXE images from. Example: export DIB_BAREMETAL_KERNEL_PATTERN="kernel*jang" export DIB_BAREMETAL_INITRD_PATTERN="initrd*jang" Change-Id: I86e5254051addd5e89dd4e363e9bba117e65353d
65 lines
2.2 KiB
Bash
Executable File
65 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Copyright 2014 Hewlett-Packard Development Company, L.P.
|
|
#
|
|
# 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 -eu
|
|
set -o pipefail
|
|
|
|
[ -n "$TARGET_ROOT" ]
|
|
|
|
# Dig up the initrd and kernel to use.
|
|
BOOTDIR="$TARGET_ROOT/boot"
|
|
KERNEL=
|
|
RAMDISK=
|
|
if [ -n "${DIB_BAREMETAL_KERNEL_PATTERN:-}" -a -n "${DIB_BAREMETAL_INITRD_PATTERN:-}" ]; then
|
|
KERNEL=$(basename `eval ls -1rv "$BOOTDIR/${DIB_BAREMETAL_KERNEL_PATTERN}" | head -1`)
|
|
RAMDISK=$(basename `eval ls -1rv "$BOOTDIR/${DIB_BAREMETAL_INITRD_PATTERN}" | head -1`)
|
|
elif [ -f $TARGET_ROOT/etc/redhat-release ]; then
|
|
|
|
# Prioritize PAE if present
|
|
KERNEL=$(ls -1rv $BOOTDIR/vmlinuz* | grep PAE | grep -v debug | head -1 || echo "")
|
|
if [ ! $KERNEL ]; then
|
|
KERNEL=$(ls -1rv $BOOTDIR/vmlinuz* | grep -v debug | head -1 || echo "")
|
|
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` || echo "")
|
|
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`)
|
|
elif [ -f $TARGET_ROOT/etc/SuSE-release ]; then
|
|
KERNEL=$(basename `ls -1rv $BOOTDIR/vmlinuz`)
|
|
RAMDISK=$(basename `ls -1rv $BOOTDIR/initrd`)
|
|
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
|