1*1800ed4dSAndrew Jeffery#!/bin/sh 2*1800ed4dSAndrew Jeffery 3*1800ed4dSAndrew Jefferyset -eu 4*1800ed4dSAndrew Jeffery 5*1800ed4dSAndrew Jefferyprint_help() { 6*1800ed4dSAndrew Jeffery script_name=$(basename $0) 7*1800ed4dSAndrew Jeffery echo NAME 8*1800ed4dSAndrew Jeffery echo '\t'$script_name: Assemble an OpenBMC eMMC image that can be booted under QEMU 9*1800ed4dSAndrew Jeffery echo 10*1800ed4dSAndrew Jeffery echo SYNOPSYS 11*1800ed4dSAndrew Jeffery echo '\t'$script_name '<TARGET>' '<BUILDDIR>' '[IMAGESIZE]' 12*1800ed4dSAndrew Jeffery echo 13*1800ed4dSAndrew Jeffery echo DESCRIPTION 14*1800ed4dSAndrew Jeffery echo '\t''TARGET':'\t\t'The name of the target machine, used to locate the required images. 15*1800ed4dSAndrew Jeffery echo '\t''BUILDDIR':'\t'The path to the OpenBMC build directory. 16*1800ed4dSAndrew Jeffery echo '\t''IMAGESIZE':'\t'The output image size, may be specified with units. Defaults to 16G. 17*1800ed4dSAndrew Jeffery echo 18*1800ed4dSAndrew Jeffery echo EXAMPLE: 19*1800ed4dSAndrew Jeffery echo '\t'$script_name 'p10bmc' '~/src/openbmc/openbmc/build/p10bmc' 20*1800ed4dSAndrew Jeffery} 21*1800ed4dSAndrew Jeffery 22*1800ed4dSAndrew Jefferyif [ $# -eq 0 ] 23*1800ed4dSAndrew Jefferythen 24*1800ed4dSAndrew Jeffery print_help 25*1800ed4dSAndrew Jeffery exit 1 26*1800ed4dSAndrew Jefferyfi 27*1800ed4dSAndrew Jeffery 28*1800ed4dSAndrew Jefferyif [ "$1" = "-h" -o "$1" = "--help" ] 29*1800ed4dSAndrew Jefferythen 30*1800ed4dSAndrew Jeffery print_help 31*1800ed4dSAndrew Jeffery exit 0 32*1800ed4dSAndrew Jefferyfi 33*1800ed4dSAndrew Jeffery 34*1800ed4dSAndrew Jefferyif [ $# -lt 2 ] 35*1800ed4dSAndrew Jefferythen 36*1800ed4dSAndrew Jeffery print_help 37*1800ed4dSAndrew Jeffery exit 1 38*1800ed4dSAndrew Jefferyfi 39*1800ed4dSAndrew Jeffery 40*1800ed4dSAndrew Jefferyset -x 41*1800ed4dSAndrew Jeffery 42*1800ed4dSAndrew Jefferytarget="$1" 43*1800ed4dSAndrew Jefferybuild_dir="$2" 44*1800ed4dSAndrew Jefferyimage_size=${3:-16G} 45*1800ed4dSAndrew Jeffery 46*1800ed4dSAndrew Jefferyfw_dir=${build_dir}/tmp/deploy/images/${target} 47*1800ed4dSAndrew Jefferywicxz="${fw_dir}/obmc-phosphor-image-${target}.wic.xz" 48*1800ed4dSAndrew Jefferymmc="mmc-${target}.img" 49*1800ed4dSAndrew Jeffery 50*1800ed4dSAndrew Jefferydd of=$mmc if=/dev/zero bs=1M count=128 51*1800ed4dSAndrew Jefferydd of=$mmc if=${fw_dir}/u-boot-spl.bin conv=notrunc 52*1800ed4dSAndrew Jefferydd of=$mmc if=${fw_dir}/u-boot.bin conv=notrunc bs=1K seek=64 53*1800ed4dSAndrew Jefferyxzdec $wicxz | dd of=$mmc conv=notrunc bs=1M seek=2 54*1800ed4dSAndrew Jefferytruncate --size ${image_size} $mmc 55*1800ed4dSAndrew Jeffery 56*1800ed4dSAndrew Jefferyset +x 57*1800ed4dSAndrew Jeffery 58*1800ed4dSAndrew Jefferyecho 59*1800ed4dSAndrew Jefferyecho For an AST2600-based machine, invoke QEMU with the following parameters: 60*1800ed4dSAndrew Jefferyecho 61*1800ed4dSAndrew Jefferyecho '\t'-drive file=$(realpath ${mmc}),if=sd,format=raw,index=2 62