1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-11-28 11:32:29 +02:00
openwrt-xburst/target/linux/ar71xx/base-files/sbin/wget2nand
juhosg 0ba3851aa6 ar71xx: Make wget2nand fail if copying the kernel fails and use the correct file extension for the rootfs image
wget2nand didnt check the exit status after copying the kernel, if the
copying failed for some reason ( for example not enougs space on the
kernel partition) it simply continued extracting the rootfs.
I also changed the filename, which wget2nand trys to download (
.tar.gz instead of .tgz ).

Signed-off-by: Marko Foerster <mrkfoerster@googlemail.com>


git-svn-id: svn://svn.openwrt.org/openwrt/trunk@21444 3c298f89-4303-0410-b956-a3cf2f4a3e73
2010-05-14 08:38:39 +00:00

86 lines
2.2 KiB
Bash
Executable File

#!/bin/sh
# wget2nand
# This script can be used to download a TGZ file from your build system which
# contains the files to be installed on the NAND flash on your RB1xx card.
# The one parameter is the URL of the TGZ file to be downloaded.
# Licence GPL V2
# Author david.goodenough@linkchoose.co.uk
# Based on cf2nand from RB532 support
. /etc/functions.sh
wget2nand_dir=/tmp/wget2nand
mnt_kernel=$wget2nand_dir/mnt_kernel
mnt_rootfs=$wget2nand_dir/mnt_rootfs
src_rootfs=$wget2nand_dir/rootfs.tgz
src_kernel=$wget2nand_dir/kernel
[ -d "$wget2nand_dir" ] && {
echo "$wget2nand_dir already exists"
exit 1
}
# need to find the wget server from the command line
url=$1
[ -z "$url" ] && {
echo "No URL specified for image TGZ"
echo "Usage : $0 URL"
exit 1
}
url_kernel=$url/openwrt-ar71xx-vmlinux.elf
url_rootfs=$url/openwrt-ar71xx-rootfs.tar.gz
mtd_kernel="$(find_mtd_part 'kernel')"
mtd_rootfs="$(find_mtd_part 'rootfs')"
[ -z "$mtd_kernel" -o -z "$mtd_rootfs" ] && {
echo "Cannot find NAND Flash partitions"
exit 1
}
mkdir "$wget2nand_dir"
wget $url_kernel -O "$src_kernel" || {
echo "Unable to download $url_kernel"
exit 1
}
wget $url_rootfs -O "$src_rootfs" || {
echo "Unable to download $url_rootfs"
exit 1
}
echo "Erasing filesystem..."
mtd erase kernel 2>/dev/null >/dev/null
mtd erase rootfs 2>/dev/null >/dev/null
echo "Mounting $mtd_rootfs as new root and $mtd_kernel as kernel partition"
mkdir "$mnt_kernel"
mkdir "$mnt_rootfs"
mount -t yaffs2 "$mtd_kernel" "$mnt_kernel"
mount -t yaffs2 "$mtd_rootfs" "$mnt_rootfs"
echo "Copying kernel..."
cp $src_kernel $mnt_kernel/kernel || {
echo "Error occured while copying the kernel"
exit 1
}
chmod +x $mnt_kernel/kernel
echo "Preparing filesystem..."
( cd "$mnt_rootfs"; tar xvz -f "$src_rootfs" )
# make sure everything is written before we unmount the partitions
echo "chmod ugo+x /" > $mnt_rootfs/etc/uci-defaults/set_root_permission
sync
ls $mnt_kernel >/dev/null
ls $mnt_rootfs >/dev/null
echo "Cleaning up..."
# unmount the partitions and remove the directories into which they were mounted
umount $mnt_kernel
umount $mnt_rootfs
rm -rf $wget2nand_dir
# all done
echo "Image written, you can now reboot. Remember to change the boot source to Boot from Nand"