From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-wm0-x230.google.com ([2a00:1450:400c:c09::230]) by metis.ext.pengutronix.de with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.89) (envelope-from ) id 1fJR8g-00057r-Qm for RAUC@pengutronix.de; Fri, 18 May 2018 00:12:47 +0200 Received: by mail-wm0-x230.google.com with SMTP id a137-v6so1158010wme.1 for ; Thu, 17 May 2018 15:12:46 -0700 (PDT) References: <42727149-5594-a49e-a3cd-f631b462a32d@kgolding.co.uk> <521e1223-eba4-5055-150b-fdec89452a1a@pengutronix.de> From: Kevin Golding Message-ID: <4c0455d5-a455-c3bb-b2ac-0a6f4a3b5d04@kgolding.co.uk> Date: Thu, 17 May 2018 23:12:40 +0100 MIME-Version: 1.0 In-Reply-To: <521e1223-eba4-5055-150b-fdec89452a1a@pengutronix.de> Content-Language: en-GB Subject: Re: [RAUC] Rescue system List-Id: RAUC Project - Discussion List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============0878816380==" Errors-To: rauc-bounces@pengutronix.de Sender: "RAUC" To: Enrico Joerns Cc: RAUC@pengutronix.de This is a multi-part message in MIME format. --===============0878816380== Content-Type: multipart/alternative; boundary="------------E923D08CC0B18EF29363FF64" Content-Language: en-GB This is a multi-part message in MIME format. --------------E923D08CC0B18EF29363FF64 Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: 8bit Hello Enrico, Thank you for your reply, and confirmation of my understanding. Due to limit storage space on our device, we need to use a small update/rescue OS and our much larger main OS. I expect our rescue/update OS may just be a script (to start with) to mount the USB drive and run rauc on a pre-set file name, maybe flashing some of our LEDS as it does its work! Kevin Golding On 17/05/2018 16:22, Enrico Joerns wrote: > Hi Kevin, > > On 05/17/2018 04:29 PM, Kevin Golding wrote: >> Hello, >> >> Am just getting my head around RAUC, and wondered if I'm right in >> thinking that a rescue system is not included with RAUC? i.e. I would >> need to find or create a small bootable rescue system that would run >> the RAUC update command say via say from a file on a USB stick? > > conceptually RAUC is a generic update framework that can run on your > Linux device and handle safe and atomic updates of partitions etc. > It does neither provide any ready-to-use distribution nor depend on > any specific. > > Thus building a system is always a task that should be solved outside > of an update tool. With OE/Yocto, PTXdist and buildroot good build > system exists for this that allow you to generate well defined > customized systems in versioned and reproducible manner. > > RAUC also does not depend on any specific source for its update > artifacts. Neither on the production system nor on any rescue system. > You can fetch your update from USB / network / storage media or > whatever fits your concept or platform. > > Nevertheless, conceptually a rescue system is surely supported. A slot > configuration for your rescue system (and the default ones, too) would > look like > >   [slot.rootfs.0] >   device=/dev/mmcblk0p1 >   ... > >   [slot.rootfs.1] >   device=/dev/mmcblk0p1 >   ... > >   [slot.rescue.0] >   device=/dev/sda1 >   ... > > > This would allow detecting RAUC that it is not running from one of the > normal rootfs partitions but from the rescue partition instead and > that it can safely upate the others. > >> If I am right, are there any examples of a rescue system available? > > No. A rescue system can be as small as only a minimal > kernel+initramfs+dtb with RAUC binary + dependencies which will result > in a few kB. Most of the build systems above provide a minimal rootfs > configuration that you can simply extend with RAUC. > > https://rauc.readthedocs.io/en/latest/integration.html > > > Did that roughly point you in the right direction? > > > Best regards, Enrico > > --------------E923D08CC0B18EF29363FF64 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: 8bit

Hello Enrico,

Thank you for your reply, and confirmation of my understanding. Due to limit storage space on our device, we need to use a small update/rescue OS and our much larger main OS. I expect our rescue/update OS may just be a script (to start with) to mount the USB drive and run rauc on a pre-set file name, maybe flashing some of our LEDS as it does its work!

Kevin Golding


On 17/05/2018 16:22, Enrico Joerns wrote:
Hi Kevin,

On 05/17/2018 04:29 PM, Kevin Golding wrote:
Hello,

Am just getting my head around RAUC, and wondered if I'm right in thinking that a rescue system is not included with RAUC? i.e. I would need to find or create a small bootable rescue system that would run the RAUC update command say via say from a file on a USB stick?

conceptually RAUC is a generic update framework that can run on your Linux device and handle safe and atomic updates of partitions etc.
It does neither provide any ready-to-use distribution nor depend on any specific.

Thus building a system is always a task that should be solved outside of an update tool. With OE/Yocto, PTXdist and buildroot good build system exists for this that allow you to generate well defined customized systems in versioned and reproducible manner.

RAUC also does not depend on any specific source for its update artifacts. Neither on the production system nor on any rescue system. You can fetch your update from USB / network / storage media or whatever fits your concept or platform.

Nevertheless, conceptually a rescue system is surely supported. A slot configuration for your rescue system (and the default ones, too) would look like

  [slot.rootfs.0]
  device=/dev/mmcblk0p1
  ...

  [slot.rootfs.1]
  device=/dev/mmcblk0p1
  ...

  [slot.rescue.0]
  device=/dev/sda1
  ...


This would allow detecting RAUC that it is not running from one of the normal rootfs partitions but from the rescue partition instead and that it can safely upate the others.

If I am right, are there any examples of a rescue system available?

No. A rescue system can be as small as only a minimal kernel+initramfs+dtb with RAUC binary + dependencies which will result in a few kB. Most of the build systems above provide a minimal rootfs configuration that you can simply extend with RAUC.

https://rauc.readthedocs.io/en/latest/integration.html


Did that roughly point you in the right direction?


Best regards, Enrico



--------------E923D08CC0B18EF29363FF64-- --===============0878816380== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KUkFVQyBtYWls aW5nIGxpc3Q= --===============0878816380==--