1175984Sraj#!/bin/sh 2175984Sraj# 3175984Sraj# Copyright (C) 2008 The FreeBSD Project. All rights reserved. 4175984Sraj# 5175984Sraj# Redistribution and use in source and binary forms, with or without 6175984Sraj# modification, are permitted provided that the following conditions 7175984Sraj# are met: 8175984Sraj# 1. Redistributions of source code must retain the above copyright 9175984Sraj# notice, this list of conditions and the following disclaimer. 10175984Sraj# 2. Redistributions in binary form must reproduce the above copyright 11175984Sraj# notice, this list of conditions and the following disclaimer in the 12175984Sraj# documentation and/or other materials provided with the distribution. 13175984Sraj# 14175984Sraj# THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15175984Sraj# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16175984Sraj# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17175984Sraj# ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE 18175984Sraj# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19175984Sraj# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20175984Sraj# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21175984Sraj# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22175984Sraj# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23175984Sraj# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24175984Sraj# SUCH DAMAGE. 25175984Sraj# 26175984Sraj# $FreeBSD: releng/11.0/sys/tools/embed_mfs.sh 295137 2016-02-02 07:02:51Z adrian $ 27175984Sraj# 28175984Sraj# Embed the MFS image into the kernel body (expects space reserved via 29175984Sraj# MD_ROOT_SIZE) 30175984Sraj# 31175984Sraj# $1: kernel filename 32175984Sraj# $2: MFS image filename 33175984Sraj# 34175984Sraj 35295137Sadrianmfs_size=`stat -f '%z' $2 2> /dev/null` 36295137Sadrian# If we can't determine MFS image size - bail. 37295137Sadrian[ -z ${mfs_size} ] && echo "Can't determine MFS image size" && exit 1 38175984Sraj 39295137Sadriansec_info=`objdump -h $1 2> /dev/null | grep " oldmfs "` 40295137Sadrian# If we can't find the mfs section within the given kernel - bail. 41295137Sadrian[ -z "${sec_info}" ] && echo "Can't locate mfs section within kernel" && exit 1 42295137Sadrian 43295137Sadriansec_size=`echo ${sec_info} | awk '{printf("%d", "0x" $3)}' 2> /dev/null` 44295137Sadriansec_start=`echo ${sec_info} | awk '{printf("%d", "0x" $6)}' 2> /dev/null` 45295137Sadrian 46295137Sadrian# If the mfs section size is smaller than the mfs image - bail. 47295137Sadrian[ ${sec_size} -lt ${mfs_size} ] && echo "MFS image too large" && exit 1 48295137Sadrian 49295137Sadrian# Dump the mfs image into the mfs section 50295137Sadriandd if=$2 ibs=8192 of=$1 obs=${sec_start} oseek=1 conv=notrunc 2> /dev/null && \ 51295137Sadrian echo "MFS image embedded into kernel" && exit 0 52