<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Nov 23, 2015 at 1:41 PM, Mariano Lopez <span dir="ltr">&lt;<a href="mailto:mariano.lopez@linux.intel.com" target="_blank">mariano.lopez@linux.intel.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">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&#39;s software updater (<a href="http://sbabic.github.io/swupdate" rel="noreferrer" target="_blank">http://sbabic.github.io/swupdate</a>). 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&#39;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.<br>
<br>
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.<br>
<br>
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:<br>
1. Use a separate partition for the configuration.<br>
  a. The pro of this method is the partition is not touched during the update.<br>
  b. The con of this method is the configuration is not directly in rootfs (example: /etc).<br>
<br></blockquote><div>Configuration files can be anywhere a package decides to install them. So having a single partition would be difficult. If you could, you would most likely be forced to have an initramfs to make sure /etc was mounted before init runs.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
2. Do the backup during the update.<br>
  a. The pro is the configuration is directly in rootfs.<br>
  b. The con is If the update fail most likely the configuration would be lost.<br>
<br></blockquote><div>Why would the configuration be lost if the update fails? Couldn&#39;t it just be stored on the thumbdrive?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
3. Have an OverlayFS for the rootfs or the partition that have the configuration.<br>
  a. The pro is the configuration is  &quot;directly&quot; in rootfs.<br>
  b. The con is there is need to provide a custom init to guarantee the Overlay is mounted before the boot process.<br>
<br>
With the above information I&#39;m proposing to use a separate partition for the configuration; this is because is more reliable and doesn&#39;t require big changes in the current architecture.<br>
<br>
So, the idea is to have 4 partitions in the media:<br>
1. boot. This is the usual boot partition<br>
2. data. This will hold the configuration files. Not modified by updates.<br>
3. maintenance. This partition will be used to update rootfs.<br>
4. rootfs. Partition used for normal operation.<span class="HOEnZb"><font color="#888888"><br>
<br>
Mariano<br>
-- <br>
_______________________________________________<br>
Openembedded-core mailing list<br>
<a href="mailto:Openembedded-core@lists.openembedded.org" target="_blank">Openembedded-core@lists.openembedded.org</a><br>
<a href="http://lists.openembedded.org/mailman/listinfo/openembedded-core" rel="noreferrer" target="_blank">http://lists.openembedded.org/mailman/listinfo/openembedded-core</a><br>
</font></span></blockquote></div><br></div></div>