summaryrefslogtreecommitdiff
path: root/beagle/setup_sdcard.sh
diff options
context:
space:
mode:
authorManuel Traut <manut@mecka.net>2011-04-01 12:28:01 +0200
committerManuel Traut <manut@mecka.net>2011-04-01 12:28:01 +0200
commit93715d4bb274cd25ace083f054d4a791689557b6 (patch)
tree5619de56cb4b7fd948e5623cf7dcdbc148b9aaaa /beagle/setup_sdcard.sh
parentabece04a6ff072dcbfb4ecfad760b9ee1d9a19ab (diff)
added beagle datasheets
Signed-off-by: Manuel Traut <manut@mecka.net>
Diffstat (limited to 'beagle/setup_sdcard.sh')
-rwxr-xr-xbeagle/setup_sdcard.sh657
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