c92822e712
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
72 lines
2.4 KiB
Bash
Executable File
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
|