Re: [OpenWrt-Devel] Raspberry Pi 2 sysupgrade

2015-07-10 Thread Matthias Schiffer
On 07/08/2015 07:42 PM, Bruno Randolf wrote:
 Hi!
 
 I have the below change to add rudimentary support for sysupgrade on the
 Raspberry Pi. I looked at the way platform_copy_config() is implemented
 for x86 and tried to do the same, but I get the following error on mount:
 
 mount: mounting /dev/mmcblk0p2 on /mnt failed: Device or resource busy
 
 I believe I'd need some way to re-read the partition table after the dd
 command. How does it work on x86? Any ideas?
 
 Also would it be OK to gzip the sdcard image to save space? It
 compresses from 76M to 11M.

I think it would be nice to put the gzip command into an
ifneq ($(CONFIG_TARGET_IMAGES_GZIP),) check. CONFIG_TARGET_IMAGES_GZIP
defaults to y, but is currently only respected on x86... I guess it
would make sense to handle it on other targets with ext4 images as well.

Matthias

 
 Below is the diff, but this is not a properly formatted patch, yet.
 
 bruno
 
 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 000..95ade38
 --- /dev/null
 +++ b/target/linux/brcm2708/base-files/lib/upgrade/platform.sh
 @@ -0,0 +1,19 @@
 +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
 +}
 +
 +## mount does not work. I think I'd need to re-read the partition table!
 +#platform_copy_config() {
 +#  echo *** platform_copy_config called  /dev/console
 +#  mount -t ext4 -o rw,noatime /dev/mmcblk0p2 /mnt
 +#  cp -af $CONF_TAR /mnt/
 +#  umount /mnt
 +#  echo *** platform_copy_config done  /dev/console
 +#}
 diff --git a/target/linux/brcm2708/image/Makefile
 b/target/linux/brcm2708/image/Makefile
 index e70bdd0..095cf0d 100644
 --- a/target/linux/brcm2708/image/Makefile
 +++ b/target/linux/brcm2708/image/Makefile
 @@ -28,6 +28,7 @@ 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)
 +   gzip -k -f $(BIN_DIR)/$(IMG_PREFIX)-sdcard-vfat-$(1).img
  endef
 
  define Image/Build
 ___
 openwrt-devel mailing list
 openwrt-devel@lists.openwrt.org
 https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
 




signature.asc
Description: OpenPGP digital signature
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] Raspberry Pi 2 sysupgrade

2015-07-10 Thread Bruno Randolf
On 07/09/2015 06:44 AM, John Crispin wrote:
 I have the below change to add rudimentary support for sysupgrade on the
 Raspberry Pi. I looked at the way platform_copy_config() is implemented
 for x86 and tried to do the same, but I get the following error on mount:

 mount: mounting /dev/mmcblk0p2 on /mnt failed: Device or resource busy
 
 in that case its either still flushing the cache or has not been
 properly unmounted i think. you could try adding the partprobe tool to
 force a rescan of the table but i am not sure this is the problem here

You are right. I tried 'partprobe -s /dev/mmcblk0' and it shows the
partitions correctly but mount still fails.

I also tried 'sync' before trying to mount to flush the cache with no
effect.

So the suspect is that it has not been properly unmounted. So I tried to
'unmount -f /dev/mmcblk0p2' but that fails with umount: can't forcibly
umount /dev/mmcblk0p2: Invalid argument

Here are the mounts at that time:

rootfs on / type rootfs (rw)
proc on /proc type proc (rw,noatime)
sysfs on /sys type sysfs (rw,noatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime)
tmpfs on /dev type tmpfs (rw,relatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
debugfs on /sys/kernel/debug type debugfs (rw,noatime)
tmpfs on / type tmpfs (rw,nosuid,nodev,noatime)

rootfs on / type rootfs (rw) should be the RAM rootfs, no?
How and were to unmount / correctly?

bruno
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


[OpenWrt-Devel] Raspberry Pi 2 sysupgrade

2015-07-08 Thread Bruno Randolf
Hi!

I have the below change to add rudimentary support for sysupgrade on the
Raspberry Pi. I looked at the way platform_copy_config() is implemented
for x86 and tried to do the same, but I get the following error on mount:

mount: mounting /dev/mmcblk0p2 on /mnt failed: Device or resource busy

I believe I'd need some way to re-read the partition table after the dd
command. How does it work on x86? Any ideas?

Also would it be OK to gzip the sdcard image to save space? It
compresses from 76M to 11M.

Below is the diff, but this is not a properly formatted patch, yet.

bruno

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 000..95ade38
--- /dev/null
+++ b/target/linux/brcm2708/base-files/lib/upgrade/platform.sh
@@ -0,0 +1,19 @@
+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
+}
+
+## mount does not work. I think I'd need to re-read the partition table!
+#platform_copy_config() {
+#  echo *** platform_copy_config called  /dev/console
+#  mount -t ext4 -o rw,noatime /dev/mmcblk0p2 /mnt
+#  cp -af $CONF_TAR /mnt/
+#  umount /mnt
+#  echo *** platform_copy_config done  /dev/console
+#}
diff --git a/target/linux/brcm2708/image/Makefile
b/target/linux/brcm2708/image/Makefile
index e70bdd0..095cf0d 100644
--- a/target/linux/brcm2708/image/Makefile
+++ b/target/linux/brcm2708/image/Makefile
@@ -28,6 +28,7 @@ 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)
+   gzip -k -f $(BIN_DIR)/$(IMG_PREFIX)-sdcard-vfat-$(1).img
 endef

 define Image/Build
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] Raspberry Pi 2 sysupgrade

2015-07-08 Thread John Crispin


On 08/07/2015 19:42, Bruno Randolf wrote:
 Hi!
 
 I have the below change to add rudimentary support for sysupgrade on the
 Raspberry Pi. I looked at the way platform_copy_config() is implemented
 for x86 and tried to do the same, but I get the following error on mount:
 
 mount: mounting /dev/mmcblk0p2 on /mnt failed: Device or resource busy

in that case its either still flushing the cache or has not been
properly unmounted i think. you could try adding the partprobe tool to
force a rescan of the table but i am not sure this is the problem here

 
 I believe I'd need some way to re-read the partition table after the dd
 command. How does it work on x86? Any ideas?

partprobe and i think fdisk had a feature for that aswell

 
 Also would it be OK to gzip the sdcard image to save space? It
 compresses from 76M to 11M.
 

ok, as there is not sysupgrade supported yet this change wont break
running installations



 Below is the diff, but this is not a properly formatted patch, yet.
 
 bruno
 
 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 000..95ade38
 --- /dev/null
 +++ b/target/linux/brcm2708/base-files/lib/upgrade/platform.sh
 @@ -0,0 +1,19 @@
 +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
 +}
 +
 +## mount does not work. I think I'd need to re-read the partition table!
 +#platform_copy_config() {
 +#  echo *** platform_copy_config called  /dev/console
 +#  mount -t ext4 -o rw,noatime /dev/mmcblk0p2 /mnt
 +#  cp -af $CONF_TAR /mnt/
 +#  umount /mnt
 +#  echo *** platform_copy_config done  /dev/console
 +#}
 diff --git a/target/linux/brcm2708/image/Makefile
 b/target/linux/brcm2708/image/Makefile
 index e70bdd0..095cf0d 100644
 --- a/target/linux/brcm2708/image/Makefile
 +++ b/target/linux/brcm2708/image/Makefile
 @@ -28,6 +28,7 @@ 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)
 +   gzip -k -f $(BIN_DIR)/$(IMG_PREFIX)-sdcard-vfat-$(1).img
  endef
 
  define Image/Build
 ___
 openwrt-devel mailing list
 openwrt-devel@lists.openwrt.org
 https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
 
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel