blob: 147a7606e2ff79add39665330deabab1d699ed1d [file] [log] [blame] [edit]
#!/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 "${1}" <<EOF
unit: sectors
disk1 : start= $start_esp, size= $num_esp_sectors, Id= c, bootable
disk2 : start= 1, size= 1, Id= ee
EOF
}
install_raspberrypi_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 efi_dir=$(mktemp -d)
local git_url="https://github.com/raspberrypi/firmware/raw/master"
sudo mount -o loop,offset=${efi_offset},sizelimit=${efi_size} "$1" \
"${efi_dir}"
info "Downloading/installing firmware"
sudo wget "${git_url}/boot/arm240_start.elf" -O "${efi_dir}/start.elf"
sudo wget "${git_url}/boot/loader.bin" -O "${efi_dir}/loader.bin"
sudo wget "${git_url}/boot/bootcode.bin" -O "${efi_dir}/bootcode.bin"
info "Creating boot configuration files"
sudo cp "${ROOT}/boot/cmdline.txt" "${efi_dir}/"
sudo cp "${ROOT}/boot/config.txt" "${efi_dir}/"
sudo umount "${efi_dir}"
rmdir "${efi_dir}"
}
board_setup() {
install_raspberrypi_bootloader "$1"
install_hybrid_mbr "$1"
}