Skip to content
Snippets Groups Projects
Commit cee83c60 authored by Matthias Schiffer's avatar Matthias Schiffer
Browse files

brcm2708: add sysupgrade support

parent 3335fc6c
No related branches found
No related tags found
No related merge requests found
...@@ -8,7 +8,7 @@ PACKAGES_OPENWRT_COMMIT=62037ba35fda4ae07e89c33946f229da2a941d47 ...@@ -8,7 +8,7 @@ PACKAGES_OPENWRT_COMMIT=62037ba35fda4ae07e89c33946f229da2a941d47
PACKAGES_OPENWRT_BRANCH=for-15.05 PACKAGES_OPENWRT_BRANCH=for-15.05
PACKAGES_GLUON_REPO=git://github.com/freifunk-gluon/packages.git PACKAGES_GLUON_REPO=git://github.com/freifunk-gluon/packages.git
PACKAGES_GLUON_COMMIT=7d11ce79ed17c83afffc8395e8d21554a8d1f1a5 PACKAGES_GLUON_COMMIT=5f0c86212d33d7c285197c67d288af4872d44d51
PACKAGES_ROUTING_REPO=git://github.com/openwrt-routing/packages.git PACKAGES_ROUTING_REPO=git://github.com/openwrt-routing/packages.git
PACKAGES_ROUTING_COMMIT=6c78c2ac2cb9ec3be25e68b1cef7b2e2e0e4a346 PACKAGES_ROUTING_COMMIT=6c78c2ac2cb9ec3be25e68b1cef7b2e2e0e4a346
......
From: blogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Tue, 14 Jul 2015 07:39:10 +0000
Subject: brcm2708: Implement sysupgrade
Implement sysupgrade for Raspberry Pi, similar to the way it is done on x86:
The config files are saved in the boot partition and moved to where they are
normally expected in preinit.
Also add optional gzip compression for the SD card image, since this can save
a lot of space (76M vs 6M), also similar to x86.
Signed-off-by: Bruno Randolf <br1@einfach.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@46347 3c298f89-4303-0410-b956-a3cf2f4a3e73
diff --git a/target/linux/brcm2708/Makefile b/target/linux/brcm2708/Makefile
index 30f6e1d..015aa9c 100644
--- a/target/linux/brcm2708/Makefile
+++ b/target/linux/brcm2708/Makefile
@@ -19,7 +19,7 @@ SUBTARGETS:=bcm2708 bcm2709
KERNEL_PATCHVER:=3.18
include $(INCLUDE_DIR)/target.mk
-DEFAULT_PACKAGES += brcm2708-gpu-fw kmod-usb-hid kmod-sound-core kmod-sound-arm-bcm2835
+DEFAULT_PACKAGES += brcm2708-gpu-fw kmod-usb-hid kmod-sound-core kmod-sound-arm-bcm2835 kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1
define Target/Description
Build firmware image for Broadcom BCM2708/BCM2709 SoC devices.
diff --git a/target/linux/brcm2708/base-files/lib/preinit/79_move_config b/target/linux/brcm2708/base-files/lib/preinit/79_move_config
new file mode 100644
index 0000000..7bcea7b
--- /dev/null
+++ b/target/linux/brcm2708/base-files/lib/preinit/79_move_config
@@ -0,0 +1,18 @@
+#!/bin/sh
+# Copyright (C) 2015 OpenWrt.org
+
+BOOTPART=/dev/mmcblk0p1
+
+move_config() {
+ if [ -b $BOOTPART ]; then
+ insmod nls_cp437
+ insmod nls_iso8859-1
+ insmod fat
+ insmod vfat
+ mount -t vfat -o rw,noatime $BOOTPART /mnt
+ [ -f /mnt/sysupgrade.tgz ] && mv -f /mnt/sysupgrade.tgz /
+ umount /mnt
+ fi
+}
+
+boot_hook_add preinit_mount_root move_config
diff --git a/target/linux/brcm2708/base-files/lib/upgrade/platform.sh b/target/linux/brcm2708/base-files/lib/upgrade/platform.sh
new file mode 100644
index 0000000..3e1ee00
--- /dev/null
+++ b/target/linux/brcm2708/base-files/lib/upgrade/platform.sh
@@ -0,0 +1,17 @@
+platform_check_image() {
+ # i know no way to verify the image
+ return 0;
+}
+
+platform_do_upgrade() {
+ sync
+ get_image "$1" | dd of=/dev/mmcblk0 bs=2M conv=fsync
+ sleep 1
+}
+
+platform_copy_config() {
+ mount -t vfat -o rw,noatime /dev/mmcblk0p1 /mnt
+ cp -af "$CONF_TAR" /mnt/
+ sync
+ umount /mnt
+}
diff --git a/target/linux/brcm2708/image/Makefile b/target/linux/brcm2708/image/Makefile
index e70bdd0..0dd7b7d 100644
--- a/target/linux/brcm2708/image/Makefile
+++ b/target/linux/brcm2708/image/Makefile
@@ -28,6 +28,9 @@ define Image/Build/RaspberryPi
mcopy -i $(KDIR)/boot.img $(KDIR)/Image ::kernel.img # Copy OpenWrt built kernel
./gen_rpi_sdcard_img.sh $(BIN_DIR)/$(IMG_PREFIX)-sdcard-vfat-$(1).img $(KDIR)/boot.img $(KDIR)/root.$(1) \
$(CONFIG_BRCM2708_SD_BOOT_PARTSIZE) $(CONFIG_TARGET_ROOTFS_PARTSIZE)
+ ifneq ($(CONFIG_TARGET_IMAGES_GZIP),)
+ gzip -k -f9 $(BIN_DIR)/$(IMG_PREFIX)-sdcard-vfat-$(1).img
+ endif
endef
define Image/Build
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Fri, 10 Jul 2015 18:41:11 +0200
Subject: brcm2708: respect CONFIG_TARGET_IMAGES_GZIP
As the brcm2708 images use ext4, they will be huge when uncompressed.
diff --git a/target/linux/brcm2708/image/Makefile b/target/linux/brcm2708/image/Makefile
index e70bdd0..be667f3 100644
--- a/target/linux/brcm2708/image/Makefile
+++ b/target/linux/brcm2708/image/Makefile
@@ -28,6 +28,10 @@ define Image/Build/RaspberryPi
mcopy -i $(KDIR)/boot.img $(KDIR)/Image ::kernel.img # Copy OpenWrt built kernel
./gen_rpi_sdcard_img.sh $(BIN_DIR)/$(IMG_PREFIX)-sdcard-vfat-$(1).img $(KDIR)/boot.img $(KDIR)/root.$(1) \
$(CONFIG_BRCM2708_SD_BOOT_PARTSIZE) $(CONFIG_TARGET_ROOTFS_PARTSIZE)
+
+ ifneq ($(CONFIG_TARGET_IMAGES_GZIP),)
+ gzip -f9 $(BIN_DIR)/$(IMG_PREFIX)-sdcard-vfat-$(1).img
+ endif
endef
define Image/Build
$(eval $(call GluonProfile,RaspberryPi)) $(eval $(call GluonProfile,RaspberryPi))
$(eval $(call GluonProfileFactorySuffix,RaspberryPi,-vfat-ext4,.img.gz)) $(eval $(call GluonProfileFactorySuffix,RaspberryPi,-vfat-ext4,.img.gz))
$(eval $(call GluonProfileSysupgradeSuffix,RaspberryPi)) $(eval $(call GluonProfileSysupgradeSuffix,RaspberryPi,-vfat-ext4,.img.gz))
$(eval $(call GluonModel,RaspberryPi,sdcard,raspberry-pi)) $(eval $(call GluonModel,RaspberryPi,sdcard,raspberry-pi))
$(eval $(call GluonProfile,RaspberryPi2)) $(eval $(call GluonProfile,RaspberryPi2))
$(eval $(call GluonProfileFactorySuffix,RaspberryPi2,-vfat-ext4,.img.gz)) $(eval $(call GluonProfileFactorySuffix,RaspberryPi2,-vfat-ext4,.img.gz))
$(eval $(call GluonProfileSysupgradeSuffix,RaspberryPi2)) $(eval $(call GluonProfileSysupgradeSuffix,RaspberryPi2,-vfat-ext4,.img.gz))
$(eval $(call GluonModel,RaspberryPi2,sdcard,raspberry-pi-2)) $(eval $(call GluonModel,RaspberryPi2,sdcard,raspberry-pi-2))
...@@ -7,6 +7,6 @@ $(eval $(call GluonTarget,x86,64)) ...@@ -7,6 +7,6 @@ $(eval $(call GluonTarget,x86,64))
ifneq ($(BROKEN),) ifneq ($(BROKEN),)
$(eval $(call GluonTarget,ramips,rt305x)) # BROKEN: No AP+IBSS support $(eval $(call GluonTarget,ramips,rt305x)) # BROKEN: No AP+IBSS support
$(eval $(call GluonTarget,brcm2708,bcm2708)) # BROKEN: Untested, no sysupgrade support $(eval $(call GluonTarget,brcm2708,bcm2708)) # BROKEN: Needs more testing
$(eval $(call GluonTarget,brcm2708,bcm2709)) # BROKEN: Untested, no sysupgrade support $(eval $(call GluonTarget,brcm2708,bcm2709)) # BROKEN: Needs more testing
endif endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment