diff options
| author | Manuel Traut <manut@mecka.net> | 2011-04-01 12:28:01 +0200 |
|---|---|---|
| committer | Manuel Traut <manut@mecka.net> | 2011-04-01 12:28:01 +0200 |
| commit | 93715d4bb274cd25ace083f054d4a791689557b6 (patch) | |
| tree | 5619de56cb4b7fd948e5623cf7dcdbc148b9aaaa /beagle/setup_sdcard.sh | |
| parent | abece04a6ff072dcbfb4ecfad760b9ee1d9a19ab (diff) | |
added beagle datasheets
Signed-off-by: Manuel Traut <manut@mecka.net>
Diffstat (limited to 'beagle/setup_sdcard.sh')
| -rwxr-xr-x | beagle/setup_sdcard.sh | 657 |
1 files changed, 657 insertions, 0 deletions
diff --git a/beagle/setup_sdcard.sh b/beagle/setup_sdcard.sh new file mode 100755 index 0000000..bbeb6b6 --- /dev/null +++ b/beagle/setup_sdcard.sh @@ -0,0 +1,657 @@ +#!/bin/bash -e +# +# Copyright (c) 2009-2010 Robert Nelson <robertcnelson@gmail.com> +# Copyright (c) 2010 Mario Di Francesco <mdf-code@digitalexile.it> +# Copyright (c) 2010 Till Harbaum <till@harbaum.org> +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +# Latest can be found at: +# http://github.com/RobertCNelson/omap-image-builder/blob/master/tools/setup_sdcard.sh + +#Notes: need to check for: parted, fdisk, wget, mkfs.*, mkimage, md5sum + +#Debug Tips +#oem-config username/password +#add: "debug-oem-config" to bootargs + +unset MMC +unset SWAP_BOOT_USER +unset DEFAULT_USER +unset DEBUG + +#Defaults +RFS=ext3 +BOOT_LABEL=BOOT +RFS_LABEL=ROOT +PARTITION_PREFIX="" +UBOOT_TYPE=beagle +SWAPSIZE=512 + +if [ "$TYPE" == "" ]; then + TYPE=handset +fi + +RELEASE=latest +ARCH=armv7l + +DIR=$PWD + +function detect_software { + +#Currently only Ubuntu and Debian.. +#Working on Fedora... +unset PACKAGE +unset APT + +if [ ! $(which mkimage) ];then +echo "Missing uboot-mkimage" + PACKAGE="uboot-mkimage " + APT=1 +fi + +if [ ! $(which wget) ];then +echo "Missing wget" + PACKAGE+="wget " + APT=1 +fi + +if [ ! $(which pv) ];then +echo "Missing pv" + PACKAGE+="pv " + APT=1 +fi + +if [ "${APT}" ];then +echo "Installing Dependencies" + sudo aptitude install $PACKAGE +fi +} + +function beagle_boot_scripts { + +cat > /tmp/boot.cmd <<beagle_boot_cmd +echo "Booting MeeGo Community Image" +if test "\${beaglerev}" = "xMA"; then +echo "Kernel is not ready for 1Ghz limiting to 800Mhz" +setenv mpurate 800 +fi +if test "\${beaglerev}" = "xMB"; then +echo "Kernel is not ready for 1Ghz limiting to 800Mhz" +setenv mpurate 800 +fi +setenv dvimode 800x480-16@60 +setenv vram 0:2M,1:2M,2:2M +setenv bootcmd 'mmc init; fatload mmc 0:1 0x80300000 uImage; bootm 0x80300000' +#setenv bootargs console=ttyO2,115200n8 console=tty0 root=/dev/mmcblk0p2 rootwait ro omapfb.vram=\${vram} omapfb.mode=dvi:\${dvimode} fixrtc mpurate=\${mpurate} +setenv bootargs console=ttyO2,115200n8 console=tty0 root=/dev/mmcblk0p2 rootwait ro omapfb.mode=dvi:\${dvimode} fixrtc mpurate=\${mpurate} +boot + +beagle_boot_cmd + +} + +function touchbook_boot_scripts { + +cat > /tmp/boot.cmd <<touchbook_boot_cmd +setenv dvimode 1024x600MR-16@60 +setenv vram 12MB +setenv bootcmd 'mmc init; fatload mmc 0:1 0x80300000 uImage; fatload mmc 0:1 0x81600000 uInitrd; bootm 0x80300000 0x81600000' +setenv bootargs console=tty1 root=/dev/mmcblk0p2 rootwait ro vram=\${vram} omapfb.mode=dvi:\${dvimode} fixrtc mpurate=600 +boot + +touchbook_boot_cmd + +} + +function panda_boot_scripts { + +cat > /tmp/boot.cmd <<panda_boot_cmd +setenv dvimode 1024x600MR-16@60 +setenv vram 16MB +setenv bootcmd 'mmc init; fatload mmc 0:1 0x80300000 uImage; fatload mmc 0:1 0x81600000 uInitrd; bootm 0x80300000 0x81600000' +setenv bootargs console=ttyO2,115200n8 console=tty0 root=/dev/mmcblk0p2 rootwait ro vram=\${vram} omapfb.mode=dvi:\${dvimode} fixrtc mpurate=600 +boot + +panda_boot_cmd + +} +function dl_xload_uboot { +# sudo rm -rfd ${DIR}/downloads/ || true +#mkdir -p ${DIR}/downloads/ + +case "$SYSTEM" in + beagle) + +beagle_boot_scripts + + #beagle + MIRROR="http://rcn-ee.net/deb/" + + echo "" + echo "1 / 7: Downloading X-loader and Uboot" + echo "" + + rm -f ${DIR}/downloads/bootloader || true + wget -c --directory-prefix=${DIR}/downloads/ ${MIRROR}tools/latest/bootloader + + MLO=$(cat ${DIR}/downloads/bootloader | grep "ABI:1:MLO" | awk '{print $2}') + UBOOT=$(cat ${DIR}/downloads/bootloader | grep "ABI:1:UBOOT" | awk '{print $2}') + + #wget -c --no-verbose --directory-prefix=${DIR}/downloads/ ${MLO} + #wget -c --no-verbose --directory-prefix=${DIR}/downloads/ ${UBOOT} + + MLO=${MLO##*/} + UBOOT=${UBOOT##*/} + + ;; + igepv2) + + #MLO=${MLO##*/} + #UBOOT=${UBOOT##*/} + MLO=NA + UBOOT=NA + ;; + touchbook) + +touchbook_boot_scripts + + MIRROR="http://rcn-ee.net/deb/" + + echo "" + echo "1 / 7: Downloading X-loader and Uboot" + echo "" + + rm -f ${DIR}/downloads/bootloader || true +wget -c --no-verbose --directory-prefix=${DIR}/downloads/ ${MIRROR}tools/latest/bootloader + + MLO=$(cat ${DIR}/downloads/bootloader | grep "ABI:5:MLO" | awk '{print $2}') + UBOOT=$(cat ${DIR}/downloads/bootloader | grep "ABI:5:UBOOT" | awk '{print $2}') + + wget -c --no-verbose --directory-prefix=${DIR}/downloads/ ${MLO} + wget -c --no-verbose --directory-prefix=${DIR}/downloads/ ${UBOOT} + + MLO=${MLO##*/} + UBOOT=${UBOOT##*/} + + ;; + panda) + +panda_boot_scripts + + MIRROR="http://rcn-ee.net/deb/" + + echo "" + echo "1 / 7: Downloading X-loader and Uboot" + echo "" + + rm -f ${DIR}/downloads/bootloader || true +wget -c --no-verbose --directory-prefix=${DIR}/downloads/ ${MIRROR}tools/latest/bootloader + + MLO=$(cat ${DIR}/downloads/bootloader | grep "ABI:2:MLO" | awk '{print $2}') + UBOOT=$(cat ${DIR}/downloads/bootloader | grep "ABI:2:UBOOT" | awk '{print $2}') + + wget -c --no-verbose --directory-prefix=${DIR}/downloads/ ${MLO} + wget -c --no-verbose --directory-prefix=${DIR}/downloads/ ${UBOOT} + + MLO=${MLO##*/} + UBOOT=${UBOOT##*/} + + ;; +esac + +} + +function cleanup_sd { + + echo "" + echo "2 / 7: Unmountting Partitions" + echo "" + + NUM_MOUNTS=$(mount | grep -v none | grep "$MMC" | wc -l) + + for (( c=1; c<=$NUM_MOUNTS; c++ )) + do +DRIVE=$(mount | grep -v none | grep "$MMC" | tail -1 | awk '{print $1}') + sudo umount ${DRIVE} &> /dev/null || true +done + +sudo parted -s ${MMC} mklabel msdos +} + +function create_partitions { + +sudo fdisk -H 255 -S 63 ${MMC} << END +n +p +1 +1 ++64M +a +1 +t +e +p +w +END + +echo "" +echo "3 / 7: Formatting Boot Partition" +echo "" + +sudo mkfs.vfat -F 16 ${MMC}${PARTITION_PREFIX}1 -n ${BOOT_LABEL} + +sudo rm -rfd ${DIR}/disk || true + +mkdir ${DIR}/disk +sudo mount ${MMC}${PARTITION_PREFIX}1 ${DIR}/disk + +if [ "$DO_UBOOT" ];then +if ls ${DIR}/downloads/${MLO} >/dev/null 2>&1;then + sudo cp -v ${DIR}/downloads/${MLO} ${DIR}/disk/MLO +fi + +if ls ${DIR}/downloads/${UBOOT} >/dev/null 2>&1;then + sudo cp -v ${DIR}/downloads/${UBOOT} ${DIR}/disk/u-boot.bin +fi +fi + +cd ${DIR}/disk +sync +cd ${DIR}/ +sudo umount ${DIR}/disk || true +echo "done" + +SIZE=`sudo fdisk -s ${MMC}` +SIZE=$(( (SIZE/1024)-64-SWAPSIZE )) +echo "rootfs size = ${SIZE}" + +sudo fdisk ${MMC} << ROOTFS +n +p +2 + ++${SIZE}M +p +w +ROOTFS + +echo "" +echo "4 / 7: Formating ${RFS} Partition" +echo "" +sudo mkfs.${RFS} ${MMC}${PARTITION_PREFIX}2 -L ${RFS_LABEL} + +sudo fdisk ${MMC} << SWAP +n +p +3 + + +t +3 +82 +p +w +SWAP + +echo "" +echo "4a / 7: Creating Swap Partition" +echo "" +sudo mkswap ${MMC}${PARTITION_PREFIX}3 +echo "done" + +} + +function populate_boot { + echo "" + echo "5 / 7: Populating Boot Partition" + echo "" + sudo mount ${MMC}${PARTITION_PREFIX}1 ${DIR}/disk + + sudo cp ${LATEST_UIMAGE} ${DIR}/disk/uImage + +if [ "$DO_UBOOT" ];then + +if ls /tmp/boot.cmd >/dev/null 2>&1;then + sudo mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Boot Script" -d /tmp/boot.cmd ${DIR}/disk/boot.scr + sudo cp /tmp/boot.cmd ${DIR}/disk/boot.cmd + rm -f /tmp/boot.cmd || true +fi + + + + #for igepv2 users +# if ls ${DIR}/disk/boot.scr >/dev/null 2>&1;then +# sudo cp -v ${DIR}/disk/boot.scr ${DIR}/disk/boot.ini +# fi + +fi + + cd ${DIR}/disk/ + sync + sync + cd ${DIR}/ + + sudo umount ${DIR}/disk || true +} + +function populate_rootfs { + echo "" + echo "6 / 7: Populating rootfs Partition" + echo "Be patient, this may take a few minutes" + echo "" + sudo mount ${MMC}${PARTITION_PREFIX}2 ${DIR}/disk + + mkdir image + sudo mount -o loop ./${RELEASE}/images/meego-${TYPE}-${ARCH}-beagle/meego-${TYPE}-${ARCH}-beagle-${RELEASE}.img ./image + sudo rsync -aHx --delete ./image/* ${DIR}/disk/ + + # add SGX and kernel modules + INSTALL_ROOT=${DIR}/disk/ + + # check if module tarball exists and install modules + if [ -d ./$KERNEL_VERSION-devel/deploy ]; then + echo "Installing kernel modules for $KERNEL_VERSION" + # find latest module package + LATEST_MODULES=`ls -t1 ./$KERNEL_VERSION-devel/deploy/$KERNEL_VERSION-*-modules.tar.gz | head -n1` + sudo tar xfz $LATEST_MODULES -C $INSTALL_ROOT + else + echo "WARNING: kernel module path ./$KERNEL_VERSION-devel/deploy not found!" + fi + + sudo umount ./image + rmdir ./image + +cd ${DIR}/disk/ + sync + sync + cd ${DIR}/ + + sudo umount ${DIR}/disk || true + +echo "" + echo "7 / 7: setup_sdcard.sh script complete" + echo "" +} + +function check_mmc { + FDISK=$(sudo LC_ALL=C sfdisk -l 2>/dev/null | grep "[Disk] ${MMC}" | awk '{print $2}') + + if test "-$FDISK-" = "-$MMC:-" + then +echo "" + echo "I see..." + echo "sudo sfdisk -l:" + sudo LC_ALL=C sfdisk -l 2>/dev/null | grep "[Disk] /dev/" --color=never + echo "" + echo "mount:" + mount | grep -v none | grep "/dev/" --color=never + echo "" + read -p "Are you 100% sure, on selecting [${MMC}] (y/n)? " + [ "$REPLY" == "y" ] || exit +echo "" + else +echo "" + echo "Are you sure? I Don't see [${MMC}], here is what I do see..." + echo "" + echo "sudo sfdisk -l:" + sudo LC_ALL=C sfdisk -l 2>/dev/null | grep "[Disk] /dev/" --color=never + echo "" + echo "mount:" + mount | grep -v none | grep "/dev/" --color=never + echo "" + exit +fi +} + +function check_uboot_type { + IN_VALID_UBOOT=1 + unset DO_UBOOT + +case "$UBOOT_TYPE" in + beagle) + + SYSTEM=beagle + unset IN_VALID_UBOOT + DO_UBOOT=1 + + ;; + beagle-proto) +#hidden: proto button bug + + SYSTEM=beagle + SWAP_BOOT_USER=1 + unset IN_VALID_UBOOT + DO_UBOOT=1 + + ;; + igepv2) + + SYSTEM=igepv2 + unset IN_VALID_UBOOT + DO_UBOOT=1 + + ;; + touchbook) + + SYSTEM=touchbook + unset IN_VALID_UBOOT + DO_UBOOT=1 + + ;; + panda) + + SYSTEM=panda + unset IN_VALID_UBOOT + DO_UBOOT=1 + + ;; +esac + +if [ "$IN_VALID_UBOOT" ] ; then +usage + fi +} + +function check_addon_type { + IN_VALID_ADDON=1 + + if test "-$ADDON_TYPE-" = "-pico-" + then +ADDON=pico + unset IN_VALID_ADDON + fi + +if [ "$IN_VALID_ADDON" ] ; then +usage + fi +} + + +function check_fs_type { + IN_VALID_FS=1 + +case "$FS_TYPE" in + ext2) + + RFS=ext2 + unset IN_VALID_FS + + ;; + ext3) + + RFS=ext3 + unset IN_VALID_FS + + ;; + ext4) + + RFS=ext4 + unset IN_VALID_FS + + ;; + btrfs) + + if [ ! $(which mkfs.btrfs) ];then +echo "Missing btrfs tools" + sudo aptitude install btrfs-tools + fi + +RFS=btrfs + unset IN_VALID_FS + + ;; +esac + +if [ "$IN_VALID_FS" ] ; then +usage + fi +} + +function check_contents { + + # determine name of latest kernel built + KERNEL_VERSION=2.6.38 + if [ -d ./$KERNEL_VERSION-devel/deploy ]; then + echo "Installing kernel modules for $KERNEL_VERSION" + # find latest module package + LATEST_UIMAGE=`ls -t1 ./$KERNEL_VERSION-devel/deploy/$KERNEL_VERSION-*.uImage | head -n1` + else + echo "No kernel image found in ./$KERNEL_VERSION-devel/deploy!" + exit -1 + fi + + if [ ! -f ./${RELEASE}/images/meego-${TYPE}-${ARCH}-beagle/meego-${TYPE}-${ARCH}-beagle-${RELEASE}.img ]; then + echo "No meego image found at ./${RELEASE}/images/meego-${TYPE}-${ARCH}-beagle/meego-${TYPE}-${ARCH}-beagle-${RELEASE}.img" + echo "Please run ./build_image.sh first" + exit -1 + fi +} + +function usage { + echo "usage: $(basename $0) --mmc /dev/sdX" +cat <<EOF + +required options: +--mmc </dev/sdX> +Unformated MMC Card + +Additional/Optional options: +-h --help +this help + +--uboot <dev board> +beagle - <Bx, C2/C3/C4, xMA, xMB> +igepv2 - <no u-boot or MLO yet> +panda - <A1> + +--use-default-user +(useful for serial only modes and when oem-config is broken) + +--rootfs <fs_type> +ext3 +ext4 - <set as default> +btrfs + +--boot_label <boot_label> +boot partition label + +--rfs_label <rfs_label> +rootfs partition label + +--debug +enable all debug options for troubleshooting + +EOF +exit +} + +function checkparm { + if [ "$(echo $1|grep ^'\-')" ];then +echo "E: Need an argument" + usage + fi +} + +# parse commandline options +while [ ! -z "$1" ]; do +case $1 in + -h|--help) + usage + MMC=1 + ;; + --mmc) + checkparm $2 + MMC="$2" +if [[ "${MMC}" =~ "mmcblk" ]] + then +PARTITION_PREFIX="p" + fi +check_mmc + ;; + --uboot) + checkparm $2 + UBOOT_TYPE="$2" + check_uboot_type + ;; + --addon) + checkparm $2 + ADDON_TYPE="$2" + check_addon_type + ;; + --rootfs) + checkparm $2 + FS_TYPE="$2" + check_fs_type + ;; + --use-default-user) + DEFAULT_USER=1 + ;; + --boot_label) + checkparm $2 + BOOT_LABEL="$2" + ;; + --rfs_label) + checkparm $2 + RFS_LABEL="$2" + ;; + --debug) + DEBUG=1 + ;; + esac +shift +done + +if [ ! "${MMC}" ];then + usage +fi + +check_contents +check_uboot_type + +detect_software + +if [ "$DO_UBOOT" ];then + dl_xload_uboot +fi + +cleanup_sd +create_partitions +populate_boot +populate_rootfs |
