tripleo-image-elements/elements/localboot/os-refresh-config/configure.d/01-bootable
lokesh c92822e712 adding local boot support for uboot arm arch
Once pxe image is booted. The boot.scr file should be
able to boot from local file system. kernel and ramdisk
address are provided by environment variables set on
arm board.

Change-Id: I4ad523f85baf488e50a9bc64a926830d4d749195
2014-10-24 15:22:38 +05:30

72 lines
2.4 KiB
Bash
Executable File

#!/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 -eu
set -o pipefail
echo Installing Boot Loader
if [[ "aarch64 armhf" =~ "$(uname -m)" ]]; then
KERNEL_RELEASE="$(uname -r)"
KERNEL="/boot/vmlinuz-$KERNEL_RELEASE"
RAMDISK="/boot/initrd.img-$KERNEL_RELEASE"
FILE="/boot/boot.cmd"
#this file will contain script with boot parameters like ramdisk and kernel
#address and console parameters. This varies from arm board to board, User
#will provide boot script.
if [ -f "$FILE" ] ; then
#boot.scr file is created by below command which requires u-boot-tools package.
mkimage -C none -A arm -T script -d "$FILE" /boot/boot.scr
else
echo "$FILE file not found to generate boot.scr"
fi
else
grub_bin=$(which grub)
if [ -n "$grub_bin" ] ; then
grub_ver="$($grub_bin --version | grep 0\.97)"
if [ -n "$grub_ver" ] ; then
echo "Legacy grub 0.97 found"
$grub_bin --batch << EOF
root (hd0,0)
setup (hd0)
EOF
else
echo "unknown legacy grub version"
fi
else
# Some distros have grub2 binaries named as grub2-install, grub2-mkconfig, etc.
# Others have grub-install, grub-mkconfig, etc..
grub_bin_prefix="grub"
grub_bin="$(which ${grub_bin_prefix}-mkconfig)"
if [ -n "${grub_bin}" ] ; then
grub_bin_prefix="grub2"
grub_bin="$(which ${grub_bin_prefix}-mkconfig)"
fi
if [ -n "$grub_bin" ] ; then
grub_ver="$($grub_bin --version | grep 2\...)"
if [ -n "$grub_ver" ] ; then
echo "GRUB 2.xx found"
${grub_bin_prefix}-mkconfig -o /boot/${grub_bin_prefix}/grub.cfg
${grub_bin_prefix}-install --force /dev/sda
else
echo "unknown grub version"
fi
fi
fi
fi