> Am 23.11.2015 um 22:15 schrieb Mariano Lopez <mariano.lo...@intel.com>:
> 
> There has been interest in an image based software updater in Yocto Project. 
> The proposed solution for a image based updater is to use Stefano Babic's 
> software updater (http://sbabic.github.io/swupdate). This software do a 
> binary copy, so it is needed to have at least two partitions, these 
> partitions would be the rootfs and the maintenance partition. The rootfs it's 
> the main partition used to boot during the normal device operation, on the 
> other hand, the maintenance will be used to update the main partition.
> 
> To update the system, the user has to connect to device and boot in the 
> maintenance partition; once in the maintenance partition the software updater 
> will copy the new image in the rootfs partition. A final reboot into the 
> rootfs it is necessary to complete the upgrade.
> 
> As mentioned before the the software will copy an image to the partition, so 
> everything in that partition will be wiped out, including custom 
> configurations. To avoid the loss of configuration I explore three different 
> solutions:
> 1. Use a separate partition for the configuration.
>  a. The pro of this method is the partition is not touched during the update.
>  b. The con of this method is the configuration is not directly in rootfs 
> (example: /etc).
> 
> 2. Do the backup during the update.
>  a. The pro is the configuration is directly in rootfs.
>  b. The con is If the update fail most likely the configuration would be lost.
> 
> 3. Have an OverlayFS for the rootfs or the partition that have the 
> configuration.
>  a. The pro is the configuration is  "directly" in rootfs.
>  b. The con is there is need to provide a custom init to guarantee the 
> Overlay is mounted before the boot process.
> 
> With the above information I'm proposing to use a separate partition for the 
> configuration; this is because is more reliable and doesn't require big 
> changes in the current architecture.
> 
> So, the idea is to have 4 partitions in the media:
> 1. boot. This is the usual boot partition
> 2. data. This will hold the configuration files. Not modified by updates.
> 3. maintenance. This partition will be used to update rootfs.
> 4. rootfs. Partition used for normal operation.

That's what we currently have implemented and running in field for a while with 
a small difference:

1) We don't use Stefano Babic's software updater, but an own script which deals 
with initial software flash and later update similar - 
https://github.com/rdm-dev/meta-jens/tree/jethro/recipes-rdm/prd
2) We have integrated the updater with an update-service which can download the 
new image and install based on a manifest (signature support comes with next 
update) - 
https://github.com/rdm-dev/meta-jens/tree/jethro/recipes-rdm/system-image // 
http://www.netbsd.org/~sno/talks/nrpm/Moo-at-System-Image-Update.pdf
3) We use

boot
rootfs
maintfs
data

This layout allows us to extend data to fit the entire storage with know sizes 
for boot, rootfs and maintfs

4) Overlayfs with all serices is implemented (Update-wise, when coming from 
3.10 to 3.18 or coming from 3.0 with unionfs to overlay ...) - 
https://github.com/rdm-dev/meta-jens/tree/jethro/recipes-core/initoverlay

Feel free to use that solution if you want.

Cheers
-- 
Jens Rehsack - rehs...@gmail.com

-- 
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to