From 4fc48a8cf29bfc6997384c2aa4c72d0b9e6b3313 Mon Sep 17 00:00:00 2001 From: Christian Lamparter Date: Fri, 7 Oct 2016 20:29:03 +0200 Subject: [PATCH] apm821xx: replace recovery image for the MBL with initramfs The patch "images: bump default rootfs size to 256 MB" a1f83bad606411a561e8e60110c71232b1a28aa2 caused a crash during boot for the recovery images. This is because both variants of the MyBook Live only have 256MB of RAM and for the recovery option, the ext4 rootfs was simply stored in the RAMDISK. This patch replaces recovery image for the MBL with an initramfs kernel. In order to boot the initramfs (for recovery or development): 0. copy the initramfs and device tree into tftp's server directory # cp *-initramfs-kernel.bin to /tftp-server/mbl.bin # cp *-ext4-kernel.dtb to /tftp-server/fdt.bin 1. Connect the MyBook Live (Duo) serial port. (Warning! Use a 3.3v level shifter). 2. Hit Enter during u-boot and insert these three lines: # setenv serverip 192.168.1.254; setenv ipaddr 192.168.1.1; # tftp ${kernel_addr_r} mbl.bin; tftp ${fdt_addr_r} fdt.bin # run addtty addmisc; bootm ${kernel_addr_r} - ${fdt_addr_r} Where 192.168.1.254 is your TFTP server. Signed-off-by: Christian Lamparter --- target/linux/apm821xx/image/Makefile | 22 +---- .../apm821xx/image/mbl_gen_recovery_tar.sh | 92 ------------------- target/linux/apm821xx/sata/config-default | 5 - target/linux/apm821xx/sata/target.mk | 2 +- 4 files changed, 3 insertions(+), 118 deletions(-) delete mode 100644 target/linux/apm821xx/image/mbl_gen_recovery_tar.sh diff --git a/target/linux/apm821xx/image/Makefile b/target/linux/apm821xx/image/Makefile index 607df061f1..fb1705e93a 100644 --- a/target/linux/apm821xx/image/Makefile +++ b/target/linux/apm821xx/image/Makefile @@ -196,24 +196,6 @@ define Build/hdd-img $(if $(CONFIG_TARGET_IMAGES_GZIP),gzip -9n -c $@ > $(BIN_DIR)/$(notdir $@).gz) endef -define Build/uRamdisk - $(STAGING_DIR_HOST)/bin/mkimage \ - -A powerpc -T ramdisk -C gzip \ - -n "$(DEVICE_NAME) rootfs" \ - -d $@ $@.new - mv $@.new $@ -endef - -define Build/recovery-tar - sh ./mbl_gen_recovery_tar.sh \ - --profile $(DEVICE_PROFILE) \ - --dtb $(IMAGE_KERNEL).dtb \ - --dtbname $(DEVICE_DTB) \ - --kernel $(IMAGE_KERNEL) \ - --rootfs $@ \ - $@ -endef - define Build/export-dtb cp $(IMAGE_KERNEL).dtb $@ endef @@ -223,13 +205,13 @@ define Device/MyBookLiveDefault BLOCKSIZE := 1k DTB_SIZE := 16384 KERNEL := kernel-bin | dtb | gzip | uImage gzip + KERNEL_INITRAMFS := kernel-bin | dtb | gzip | uImage gzip BOOT_SIZE := 8 - IMAGES := rootfs.img recovery.tar kernel.dtb + IMAGES := rootfs.img kernel.dtb DEVICE_DTB := apollo3g.dtb FILESYSTEMS := ext4 IMAGE/kernel.dtb := export-dtb IMAGE/rootfs.img := boot-script | boot-img | hdd-img - IMAGE/recovery.tar := append-rootfs | gzip | uRamdisk | recovery-tar endef define Device/MyBookLiveSingle diff --git a/target/linux/apm821xx/image/mbl_gen_recovery_tar.sh b/target/linux/apm821xx/image/mbl_gen_recovery_tar.sh deleted file mode 100644 index f871aefd8c..0000000000 --- a/target/linux/apm821xx/image/mbl_gen_recovery_tar.sh +++ /dev/null @@ -1,92 +0,0 @@ -#!/bin/sh - -# based on scripts/sysupgrade-nand.sh - -profile="" -dtb="" -dtbname="" -kernel="" -rootfs="" -outfile="" -err="" - -while [ "$1" ]; do - case "$1" in - "--profile") - profile="$2" - shift - shift - continue - ;; - "--dtb") - dtb="$2" - shift - shift - continue - ;; - "--dtbname") - dtbname="$2" - shift - shift - continue - ;; - "--kernel") - kernel="$2" - shift - shift - continue - ;; - "--rootfs") - rootfs="$2" - shift - shift - continue - ;; - *) - if [ ! "$outfile" ]; then - outfile=$1 - shift - continue - else - shift - continue - fi - ;; - esac -done - -if [ -z "$profile" -o ! -r "$dtb" -o ! -r "$kernel" -o ! -r "$rootfs" -o ! "$outfile" ]; then - echo "syntax: $0 [--profile profilename] [--dtb dtbimage] [--dtbname dtbname] [--kernel kernelimage] [--rootfs rootfs] out" - exit 1 -fi - -tmpdir="$( mktemp -d 2> /dev/null )" -if [ -z "$tmpdir" ]; then - # try OSX signature - tmpdir="$( mktemp -t 'roottmp' -d )" -fi - -if [ -z "$tmpdir" ]; then - exit 1 -fi - -mkdir -p "${tmpdir}/${profile}" -[ -z "${dtb}" ] || cp "${dtb}" "${tmpdir}/${profile}/${dtbname}" -[ -z "${rootfs}" ] || cp "${rootfs}" "${tmpdir}/${profile}/uRamdisk" -[ -z "${kernel}" ] || cp "${kernel}" "${tmpdir}/${profile}/uImage" - -mtime="" -if [ -n "$SOURCE_DATE_EPOCH" ]; then - mtime="--mtime=@${SOURCE_DATE_EPOCH}" -fi - -(cd "$tmpdir"; tar cvf ${profile}.tar ${profile} ${mtime}) -err="$?" -if [ -e "$tmpdir/${profile}.tar" ]; then - cp "$tmpdir/${profile}.tar" "$outfile" -else - err=2 -fi -rm -rf "$tmpdir" - -exit $err diff --git a/target/linux/apm821xx/sata/config-default b/target/linux/apm821xx/sata/config-default index 5abc105350..b8342de049 100644 --- a/target/linux/apm821xx/sata/config-default +++ b/target/linux/apm821xx/sata/config-default @@ -17,7 +17,6 @@ CONFIG_SATA_DWC=y CONFIG_EXT4_FS=y CONFIG_SCSI=y CONFIG_BLK_DEV_SD=y -CONFIG_BLK_DEV_RAM=y CONFIG_GPIOLIB=y CONFIG_GPIO_GENERIC=y CONFIG_GPIO_GENERIC_PLATFORM=y @@ -26,9 +25,6 @@ CONFIG_LEDS_TRIGGER_DISK=y CONFIG_BLK_DEV_DM=y CONFIG_BLK_DEV_DM_BUILTIN=y CONFIG_BLK_DEV_MD=y -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_COUNT=16 -CONFIG_BLK_DEV_RAM_SIZE=4096 CONFIG_MD=y CONFIG_MD_AUTODETECT=y # CONFIG_MD_LINEAR is not set @@ -37,7 +33,6 @@ CONFIG_MD_RAID0=y CONFIG_MD_RAID1=y # CONFIG_MD_RAID10 is not set # CONFIG_MD_RAID456 is not set -CONFIG_BLK_DEV_RAM_SIZE=50331648 CONFIG_PPC_EARLY_DEBUG=y CONFIG_PPC_EARLY_DEBUG_44x=y # CONFIG_PPC_EARLY_DEBUG_MEMCONS is not set diff --git a/target/linux/apm821xx/sata/target.mk b/target/linux/apm821xx/sata/target.mk index c652fe40eb..1c7856828c 100644 --- a/target/linux/apm821xx/sata/target.mk +++ b/target/linux/apm821xx/sata/target.mk @@ -1,5 +1,5 @@ BOARDNAME := Devices which boot from SATA (NAS) -FEATURES += ext4 usb +FEATURES += ext4 usb ramdisk DEFAULT_PACKAGES += badblocks block-mount e2fsprogs \ kmod-dm kmod-md-mod partx-utils -- 2.30.2