123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- From: Matthias Schiffer <mschiffer@universe-factory.net>
- Date: Fri, 17 Jul 2015 20:51:23 +0200
- 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>
- 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..2c18baf 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 -f9n $(BIN_DIR)/$(IMG_PREFIX)-sdcard-vfat-$(1).img
- + endif
- endef
-
- define Image/Build
|