ar71xx: convert mikrotik routerboard support to UBI

Remove the wget2nand script, drop the need for manual installation,
use sysupgrade instead.

There are now two different NAND images, one for 64 MiB flashes, the
other for >= 128 MiB

Signed-off-by: Felix Fietkau <nbd@nbd.name>
owl
Felix Fietkau 2017-01-08 14:27:38 +01:00
parent 0e547400fb
commit 9db9072d67
13 changed files with 80 additions and 114 deletions

View File

@ -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)

View File

@ -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"

View File

@ -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,
},

View File

@ -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,
},

View File

@ -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,
},

View File

@ -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,
},

View File

@ -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,
},

View File

@ -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,
},

View File

@ -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,
},

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.