blob: 13d9dab58e9faa8cba5ea7b89e85e95b1b275b44 [file] [log] [blame]
#!/bin/bash
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Creates a hybrid MBR which points the MBR partition 1 to GPT
# partition 12 (ESP).
install_hybrid_mbr() {
info "Creating hybrid MBR"
locate_gpt
local start_esp=$(partoffset "$1" 12)
local num_esp_sectors=$(partsize "$1" 12)
sudo sfdisk -X dos "$1" <<EOF
unit: sectors
disk1 : start= ${start_esp}, size= ${num_esp_sectors}, Id= c, bootable
disk2 : start= 1, size= 1, Id= ee
EOF
}
# Downloads and installs the MLO and copies u-boot to the ESP.
# This is used combined with a hybrid MBR to allow booting
# a Beaglebone from microSD only.
install_beaglebone_bootloader() {
local efi_offset_sectors=$(partoffset "$1" 12)
local efi_size_sectors=$(partsize "$1" 12)
local efi_offset=$(( efi_offset_sectors * 512 ))
local efi_size=$(( efi_size_sectors * 512 ))
local mount_opts=loop,offset=${efi_offset},sizelimit=${efi_size}
local efi_dir=$(mktemp -d)
sudo mount -o "${mount_opts}" "$1" "${efi_dir}"
sudo cp "${BOARD_ROOT}/firmware/u-boot.img" "${efi_dir}/"
sudo cp "${BOARD_ROOT}/firmware/MLO" "${efi_dir}/"
sudo cp "${BOARD_ROOT}/firmware/uEnv.txt" "${efi_dir}/"
sudo umount "${efi_dir}"
rmdir "${efi_dir}"
}
board_setup() {
install_beaglebone_bootloader "$1"
install_hybrid_mbr "$1"
}
skip_blacklist_check=1
skip_test_image_content=1