12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #!/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
- . /lib/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-mikrotik-vmlinux-lzma.elf
- url_rootfs=$url/openwrt-ar71xx-mikrotik-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"
|