aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/create_img.sh
diff options
context:
space:
mode:
authorFlorin Sarbu <florin.sarbu@windriver.com>2012-04-20 19:22:45 +0300
committerFlorin Sarbu <florin.sarbu@windriver.com>2012-04-20 19:22:45 +0300
commitbfab733d45aeb83f040ce4e2b7f42f96c582cc84 (patch)
tree1962a80441d8a8e0d7c6894c177b2c78c6736a75 /scripts/create_img.sh
parent95fa1c48fa2457bb2406b7c3534384349b35f188 (diff)
downloadmeta-ivi-bfab733d45aeb83f040ce4e2b7f42f96c582cc84.tar.gz
meta-ivi-bfab733d45aeb83f040ce4e2b7f42f96c582cc84.tar.bz2
meta-ivi-bfab733d45aeb83f040ce4e2b7f42f96c582cc84.zip
Redo initial population
Signed-off-by: Florin Sarbu <florin.sarbu@windriver.com>
Diffstat (limited to 'scripts/create_img.sh')
-rwxr-xr-xscripts/create_img.sh147
1 files changed, 147 insertions, 0 deletions
diff --git a/scripts/create_img.sh b/scripts/create_img.sh
new file mode 100755
index 0000000..395015e
--- /dev/null
+++ b/scripts/create_img.sh
@@ -0,0 +1,147 @@
+#!/bin/bash
+
+# This script generates SD card disk images suitable for use with QEMU.
+#
+# Copyright (C) 2011 Ash Charles
+# Based on:
+# Narcissus - Online image builder for the angstrom distribution
+# Copyright (C) 2008 - 2011 Koen Kooi
+# Copyright (C) 2010 Denys Dmytriyenko
+# and
+# Linaro Images Tools.
+# Author: Guilherme Salgado <guilherme.salgado@linaro.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+LC_ALL=C
+set -e
+
+function usage()
+{
+ echo "This utility generates SD card images suitable for use with QEMU."
+ echo "Usage:"
+ echo " $0 <output name> <mlo> <u-boot> <kernel> <rootfs>"
+ echo "Example:"
+ echo " $0 sd.img ~/MLO ~/u-boot.bin ~/uImage ~/rootfs.tar.bz2"
+}
+
+function check_args()
+{
+ if [ $# -ne 9 ]; then
+ usage
+ exit 1
+ fi
+ OUTFILE=$1
+ MLO=$2
+ UBOOT=$3
+ KERNEL=$4
+ ROOTFS=$5
+ QEMU_IMG=$6
+ UENVTXT=$7
+ BOOTTXT=$8
+ BOOTSCR=$9
+
+ if ! [[ -e ${MLO} ]]; then
+ echo "MLO not found at ${MLO}! Quitting..."
+ exit 1
+ fi
+ if ! [[ -e ${UBOOT} ]]; then
+ echo "U-boot not found at ${UBOOT}! Quitting..."
+ exit 1
+ fi
+ if ! [[ -e ${KERNEL} ]]; then
+ echo "Kernel not found at ${KERNEL}! Quitting..."
+ exit 1
+ fi
+ if ! [[ -e ${ROOTFS} ]]; then
+ echo "Rootfs not found at ${ROOTFS}! Quitting..."
+ exit 1
+ fi
+ if ! [[ -e ${QEMU_IMG} ]]; then
+ echo "Qemu-img not found at ${QEMU_IMG}! Quitting..."
+ exit 1
+ fi
+ if ! [[ -e ${UENVTXT} ]]; then
+ echo "UENVTXT not found at ${UENVTXT}! Quitting..."
+ exit 1
+ fi
+ if ! [[ -e ${BOOTTXT} ]]; then
+ echo "BOOTTXT not found at ${BOOTTXT}! Quitting..."
+ exit 1
+ fi
+ if ! [[ -e ${BOOTSCR} ]]; then
+ echo "BOOTSCR not found at ${BOOTSCR}! Quitting..."
+ exit 1
+ fi
+}
+
+SIZE=1073741824 # 1G by default
+
+function make_image()
+{
+ $QEMU_IMG create -f raw ${OUTFILE} ${SIZE}
+
+ CYLINDERS=`echo ${SIZE}/255/63/512 | bc`
+ {
+ echo ,9,0x0C,*
+ echo ,,,-
+ } | sfdisk -D -H 255 -S 63 -C ${CYLINDERS} ${OUTFILE} &> /dev/null
+
+ # Reverse-engineer the partition setup
+ BYTES_PER_SECTOR="$(/sbin/fdisk -l -u ${OUTFILE} | grep Units | awk '{print $9}')"
+ VFAT_SECTOR_OFFSET="$(/sbin/fdisk -l -u ${OUTFILE} | grep FAT32 | awk '{print $3}')"
+ EXT3_SECTOR_OFFSET="$(/sbin/fdisk -l -u ${OUTFILE} | grep Linux | awk '{print $2}')"
+}
+
+
+
+function populate_image()
+{
+ LOOP_DEV="/dev/loop1"
+ LOOP_DEV_FS="/dev/loop2"
+
+ echo "[ Format vfat partition ]"
+ sudo /sbin/losetup -v -o $(expr ${BYTES_PER_SECTOR} "*" ${VFAT_SECTOR_OFFSET}) ${LOOP_DEV} ${OUTFILE}
+ sudo mkfs.vfat -F 32 -n "boot" ${LOOP_DEV}
+
+ echo "[ Format ext3 partition ]"
+ sudo /sbin/losetup -v -o $(expr ${BYTES_PER_SECTOR} "*" ${EXT3_SECTOR_OFFSET}) ${LOOP_DEV_FS} ${OUTFILE}
+ sudo /sbin/mkfs.ext3 -L rootfs ${LOOP_DEV_FS}
+
+ echo "[ Copying files to vfat ]"
+ sudo mount ${LOOP_DEV} /mnt
+ sudo cp -v ${MLO} /mnt/MLO
+ sudo cp -v ${UBOOT} /mnt/u-boot.bin
+ sudo cp -v ${KERNEL} /mnt/uImage
+ sudo cp -v ${UENVTXT} /mnt/uEnv.txt
+ sudo cp -v ${BOOTTXT} /mnt/boot.txt
+ sudo cp -v ${BOOTSCR} /mnt/boot.scr
+ sudo sync
+ sudo umount ${LOOP_DEV}
+
+ echo "[ Copying file system ]"
+ sudo mount ${LOOP_DEV_FS} /mnt
+ sudo tar xaf ${ROOTFS} -C /mnt
+ sudo sync
+ sudo umount ${LOOP_DEV_FS}
+
+ echo "[ Clean up ]"
+ sudo /sbin/losetup -d ${LOOP_DEV}
+ sudo /sbin/losetup -d ${LOOP_DEV_FS}
+}
+
+ARGS=$*
+check_args $ARGS
+make_image
+populate_image