diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh index 6341a31791..82ed041d66 100755 --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh @@ -7,6 +7,7 @@ PART_NAME=firmware RAMFS_COPY_DATA=/lib/ar71xx.sh +[ -x /usr/sbin/nandwrite ] && RAMFS_COPY_BIN=/usr/sbin/nandwrite CI_BLKSZ=65536 CI_LDADR=0x80060000 @@ -164,6 +165,15 @@ alfa_check_image() { return 0 } +platform_nand_board_name() { + local board=$(ar71xx_board_name) + + case "$board" in + rb*) echo "routerboard";; + *) echo "$board";; + esac +} + platform_check_image() { local board=$(ar71xx_board_name) local magic="$(get_magic_word "$1")" @@ -443,6 +453,10 @@ platform_check_image() { tew-673gru) dir825b_check_image "$1" && return 0 ;; + rb*) + nand_do_platform_check routerboard $1 + return $? + ;; c-60|\ nbg6716|\ r6100|\ @@ -570,6 +584,7 @@ platform_pre_upgrade() { local board=$(ar71xx_board_name) case "$board" in + rb*|\ c-60|\ nbg6716|\ r6100|\ @@ -584,6 +599,21 @@ platform_pre_upgrade() { esac } +platform_nand_pre_upgrade() { + local board=$(ar71xx_board_name) + + case "$board" in + rb*) + CI_KERNPART=none + local fw_mtd=$(find_mtd_part kernel) + fw_mtd="${fw_mtd/block/}" + [ -n "$fw_mtd" ] || return + mtd erase kernel + tar xf "$1" sysupgrade-routerboard/kernel -O | nandwrite -o "$fw_mtd" - + ;; + esac +} + platform_do_upgrade() { local board=$(ar71xx_board_name) diff --git a/target/linux/ar71xx/base-files/sbin/wget2nand b/target/linux/ar71xx/base-files/sbin/wget2nand deleted file mode 100755 index c80e21ccc7..0000000000 --- a/target/linux/ar71xx/base-files/sbin/wget2nand +++ /dev/null @@ -1,85 +0,0 @@ -#!/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/lede-ar71xx-mikrotik-vmlinux-lzma.elf -url_rootfs=$url/lede-ar71xx-mikrotik-defaultnowifi-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" diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-rb2011.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-rb2011.c index afd56085c7..0db359c9a1 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/mach-rb2011.c +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-rb2011.c @@ -94,7 +94,7 @@ static struct mtd_partition rb2011_nand_partitions[] = { .size = (4 * 1024 * 1024) - (256 * 1024), }, { - .name = "rootfs", + .name = "ubi", .offset = MTDPART_OFS_NXTBLK, .size = MTDPART_SIZ_FULL, }, diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-rb922.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-rb922.c index c88c522b80..0c5373c365 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/mach-rb922.c +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-rb922.c @@ -167,7 +167,7 @@ static struct mtd_partition rb922gs_nand_partitions[] = { .size = (4 * 1024 * 1024) - (256 * 1024), }, { - .name = "rootfs", + .name = "ubi", .offset = MTDPART_OFS_NXTBLK, .size = MTDPART_SIZ_FULL, }, diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-rb95x.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-rb95x.c index c2261ab9f1..05e15e77e1 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/mach-rb95x.c +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-rb95x.c @@ -53,7 +53,7 @@ static struct mtd_partition rb95x_nand_partitions[] = { .size = (4 * 1024 * 1024) - (256 * 1024), }, { - .name = "rootfs", + .name = "ubi", .offset = MTDPART_OFS_NXTBLK, .size = MTDPART_SIZ_FULL, }, diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-rbsxtlite.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-rbsxtlite.c index 94e0b4483e..129195dde6 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/mach-rbsxtlite.c +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-rbsxtlite.c @@ -69,7 +69,7 @@ static struct mtd_partition rbsxtlite_nand_partitions[] = { .size = (4 * 1024 * 1024) - (256 * 1024), }, { - .name = "rootfs", + .name = "ubi", .offset = MTDPART_OFS_NXTBLK, .size = MTDPART_SIZ_FULL, }, diff --git a/target/linux/ar71xx/files/drivers/mtd/nand/rb4xx_nand.c b/target/linux/ar71xx/files/drivers/mtd/nand/rb4xx_nand.c index f2b430ec4b..96ec5dd1e5 100644 --- a/target/linux/ar71xx/files/drivers/mtd/nand/rb4xx_nand.c +++ b/target/linux/ar71xx/files/drivers/mtd/nand/rb4xx_nand.c @@ -65,7 +65,7 @@ static struct mtd_partition rb4xx_nand_partitions[] = { .size = (4 * 1024 * 1024) - (256 * 1024), }, { - .name = "rootfs", + .name = "ubi", .offset = MTDPART_OFS_NXTBLK, .size = MTDPART_SIZ_FULL, }, diff --git a/target/linux/ar71xx/files/drivers/mtd/nand/rb750_nand.c b/target/linux/ar71xx/files/drivers/mtd/nand/rb750_nand.c index a9b287be10..0604c5a235 100644 --- a/target/linux/ar71xx/files/drivers/mtd/nand/rb750_nand.c +++ b/target/linux/ar71xx/files/drivers/mtd/nand/rb750_nand.c @@ -71,7 +71,7 @@ static struct mtd_partition rb750_nand_partitions[] = { .offset = (256 * 1024), .size = (4 * 1024 * 1024) - (256 * 1024), }, { - .name = "rootfs", + .name = "ubi", .offset = MTDPART_OFS_NXTBLK, .size = MTDPART_SIZ_FULL, }, diff --git a/target/linux/ar71xx/files/drivers/mtd/nand/rb91x_nand.c b/target/linux/ar71xx/files/drivers/mtd/nand/rb91x_nand.c index bfc5d4dca0..1308e18ba6 100644 --- a/target/linux/ar71xx/files/drivers/mtd/nand/rb91x_nand.c +++ b/target/linux/ar71xx/files/drivers/mtd/nand/rb91x_nand.c @@ -78,7 +78,7 @@ static struct mtd_partition rb91x_nand_partitions[] = { .offset = (256 * 1024), .size = (4 * 1024 * 1024) - (256 * 1024), }, { - .name = "rootfs", + .name = "ubi", .offset = MTDPART_OFS_NXTBLK, .size = MTDPART_SIZ_FULL, }, diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile index b9c3fc350f..8eac5fc997 100644 --- a/target/linux/ar71xx/image/Makefile +++ b/target/linux/ar71xx/image/Makefile @@ -21,6 +21,9 @@ endif ifeq ($(SUBTARGET),nand) include ./nand.mk endif +ifeq ($(SUBTARGET),mikrotik) +include ./mikrotik.mk +endif include ./legacy.mk define Build/netgear-squashfs diff --git a/target/linux/ar71xx/image/mikrotik.mk b/target/linux/ar71xx/image/mikrotik.mk new file mode 100644 index 0000000000..000253b622 --- /dev/null +++ b/target/linux/ar71xx/image/mikrotik.mk @@ -0,0 +1,22 @@ +define Device/mikrotik + PROFILES := Default + BOARD_NAME := routerboard + KERNEL_INITRAMFS := + KERNEL_NAME := loader-generic.elf + KERNEL := kernel-bin | kernel2minor -s 2048 -e -c + FILESYSTEMS := squashfs + IMAGES := sysupgrade.bin + IMAGE/sysupgrade.bin := sysupgrade-tar +endef + +define Device/nand-64m +$(Device/mikrotik) + KERNEL := kernel-bin | kernel2minor -s 512 -e -c +endef + +define Device/nand-large +$(Device/mikrotik) + KERNEL := kernel-bin | kernel2minor -s 2048 -e -c +endef + +TARGET_DEVICES += nand-64m nand-large diff --git a/target/linux/ar71xx/mikrotik/config-default b/target/linux/ar71xx/mikrotik/config-default index 3e7cfd5f27..328e17632b 100644 --- a/target/linux/ar71xx/mikrotik/config-default +++ b/target/linux/ar71xx/mikrotik/config-default @@ -100,8 +100,8 @@ CONFIG_ATH79_MACH_RBSXTLITE=y # CONFIG_ATH79_MACH_TL_WR841N_V1 is not set # CONFIG_ATH79_MACH_TL_WR841N_V8 is not set # CONFIG_ATH79_MACH_TL_WR841N_V9 is not set -# CONFIG_ATH79_MACH_TL_WR941ND is not set # CONFIG_ATH79_MACH_TL_WR940N_V4 is not set +# CONFIG_ATH79_MACH_TL_WR941ND is not set # CONFIG_ATH79_MACH_TUBE2H is not set # CONFIG_ATH79_MACH_UBNT is not set # CONFIG_ATH79_MACH_UBNT_UNIFIAC is not set @@ -130,18 +130,18 @@ CONFIG_ATH79_MACH_RBSXTLITE=y # CONFIG_ATH79_MACH_WZR_HP_G300NH2 is not set # CONFIG_ATH79_MACH_WZR_HP_G450H is not set # CONFIG_ATH79_MACH_ZCN_1523H is not set -# CONFIG_ATH79_NVRAM is not set CONFIG_ATH79_ROUTERBOOT=y -CONFIG_CMDLINE="rootfstype=yaffs noinitrd" +CONFIG_CMDLINE="rootfstype=squashfs noinitrd" +CONFIG_CRC16=y +CONFIG_CRYPTO_DEFLATE=y CONFIG_GPIO_74X164=y CONFIG_GPIO_LATCH=y # CONFIG_JFFS2_FS is not set CONFIG_LEDS_RB750=y CONFIG_LZO_DECOMPRESS=y -CONFIG_MDIO_BITBANG=y -CONFIG_MDIO_GPIO=y # CONFIG_MTD_CFI is not set CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CYBERTAN_PARTS is not set CONFIG_MTD_MAP_BANK_WIDTH_1=y CONFIG_MTD_MAP_BANK_WIDTH_4=y # CONFIG_MTD_MYLOADER_PARTS is not set @@ -154,22 +154,18 @@ CONFIG_MTD_NAND_RB91X=y # CONFIG_MTD_REDBOOT_PARTS is not set CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y # CONFIG_MTD_TPLINK_PARTS is not set -# CONFIG_OVERLAY_FS is not set +CONFIG_MTD_UBI=y +CONFIG_MTD_UBI_BEB_LIMIT=20 +CONFIG_MTD_UBI_BLOCK=y +# CONFIG_MTD_UBI_FASTMAP is not set +# CONFIG_MTD_UBI_GLUEBI is not set +CONFIG_MTD_UBI_WL_THRESHOLD=4096 CONFIG_RLE_DECOMPRESS=y -# CONFIG_SOC_AR913X is not set -# CONFIG_SOC_AR933X is not set -# CONFIG_SOC_QCA953X is not set CONFIG_SPI_RB4XX=y CONFIG_SPI_RB4XX_CPLD=y -# CONFIG_SQUASHFS is not set -CONFIG_YAFFS_9BYTE_TAGS=y -CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED=y -CONFIG_YAFFS_AUTO_YAFFS2=y -# CONFIG_YAFFS_DISABLE_BACKGROUND is not set -# CONFIG_YAFFS_DISABLE_BLOCK_REFRESHING is not set -# CONFIG_YAFFS_DISABLE_TAGS_ECC is not set -# CONFIG_YAFFS_EMPTY_LOST_AND_FOUND is not set -CONFIG_YAFFS_FS=y -CONFIG_YAFFS_XATTR=y -CONFIG_YAFFS_YAFFS1=y -CONFIG_YAFFS_YAFFS2=y +CONFIG_UBIFS_FS=y +CONFIG_UBIFS_FS_ADVANCED_COMPR=y +# CONFIG_UBIFS_FS_LZO is not set +CONFIG_UBIFS_FS_ZLIB=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_ZLIB_INFLATE=y diff --git a/target/linux/ar71xx/mikrotik/target.mk b/target/linux/ar71xx/mikrotik/target.mk index cb2447aee8..90ef51e41b 100644 --- a/target/linux/ar71xx/mikrotik/target.mk +++ b/target/linux/ar71xx/mikrotik/target.mk @@ -1,5 +1,5 @@ BOARDNAME:=Mikrotik devices with NAND/NOR flash -FEATURES += targz ramdisk minor +FEATURES += squashfs ramdisk minor nand define Target/Description Build firmware images for Atheros AR71xx/AR913x based Mikrotik boards.