-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES
746 lines (600 loc) · 32.6 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
Release 1.5.1 (released Jan 22, 2021)
-------------------------------------
.. rubric:: Bug fixes
* Fix building with kernel headers < 4.14. (by Fabrice Fontaine)
* Fix manifest generation for casync bundles.
* Fix too strict payload size check which triggered on casync bundles generated
by versions up to 1.4.
* Restore compatibility with glib 2.50.
.. rubric:: Testing
* Switch from Travis-CI to GitHub actions.
* Add test builds on Ubuntu 16.04, 18.04 and 20.04 to catch build problems with
older environments.
Contributions from: Enrico Jörns, Fabrice Fontaine, Jan Lübbe
Release 1.5 (released Dec 14, 2020)
-----------------------------------
.. note::
This version introduces the new ``verity`` bundle format (the old format is
now called ``plain``).
The ``verity`` format was added to prepare for future use cases (such as
network streaming and encryption), for better parallelization of installation
with hash verification and to detect modification of the bundle during
installation (CVE-2020-25860).
The bundle format is detected when reading a bundle and checked against the set
of allowed formats configured in the system.conf (see :ref:`sec_ref_formats`).
As the old ``plain`` format does not offer protection against modification
during the installation process, RAUC now takes ownership of the bundle file,
removes write permissions and checks for existing open file descriptors.
This is intended as a mitigation to protect against a compromised update
service running as a non-root user, which would otherwise be able to modify
the bundle between signature check and actual bundle installation.
See :ref:`sec_int_migration` for more details on how to switch to the
``verity`` format.
.. rubric:: Enhancements
* Add support for the ``verity`` bundle format. See the :ref:`reference for
details <sec_ref_format_verity>`.
* Support resolving the `root=PARTLABEL=xxx` kernel command line option. (by
Gaël PORTAY)
* Disable the unnecessary SMIMECapabilities information in the bundle
signature, saving ~100 bytes.
* Remove redundant checksum verification for source images during installation.
The RAUC bundle is already verified at this point, so there is no need to
verify the checksum of each file individually. (by Bastian Krause)
.. rubric:: Security
* Take ownership of bundle files if they are not owned by root and remove write
permissions. Then check that no writable file descriptors are open for the
bundle file (using the ``F_SETLEASE`` fcntl). This fixes CVE-2020-25860. See
the advisory for more details:
https://github.com/rauc/rauc/security/advisories/GHSA-cgf3-h62j-w9vv
.. note::
The https://github.com/rauc/rauc-1.5-integration repository contains examples
to simplify integrating the RAUC update into existing projects.
You can subscribe to https://github.com/rauc/rauc-1.5-integration/issues/1 to
receive notifications of important updates to this repository and of
integration into the upstream build systems.
.. rubric:: Bug fixes
* Fix install handler selection for *.img files for boot-* slots when used with
casync. (by Martin Schwan)
* Fix checking for unknown keys in the slot configuration.
* Fix some corner cases related to stopping the D-Bus daemon.
* Propagate error if unable to save manifest. (by Stefan Wahren)
* Apply `--handler-args` only during installation (and not during bundle
creation).
.. rubric:: Testing
* Ship `test/minimal-test.conf` to fix testing when running as root. (by Uwe
Kleine-König)
* Increase usage of g_autofree/g_autoptr in the test suite.
.. rubric:: Code
* Remove unused code for signed manifests (outside of a bundle).
* Add G_GNUC_WARN_UNUSED_RESULT to many functions.
.. rubric:: Documentation
* Fix multiple smaller errors. (by Christoph Steiger, Christopher Obbard and
Michael Heimpold)
* Improve documentation related to u-boot scripting and environment storage.
Contributions from: Bastian Krause, Christoph Steiger, Christopher Obbard,
Enrico Jörns, Gaël PORTAY, Jan Lübbe, Martin Schwan, Michael Heimpold, Stefan
Wahren, Uwe Kleine-König
Release 1.4 (released Jul 20, 2020)
-----------------------------------
.. note::
Slots with both a ``parent=`` and a ``bootname=`` entry are now rejected when
parsing the system configuration.
While the intention was to have either a bootname or a parent link, this was
not enforced in previous versions.
Move the bootname to the parent slot when updating to RAUC 1.4.
It is now recommended to explicitly select either per-slot or global
configuration file in the system config using ``statusfile=<path>/per-slot``.
If a central storage location is available, global status file should be
preferred.
.. rubric:: Enhancements
* Added support for custom boot selection scripts/binaries.
This allows handling special cases where none of the standard bootloaders
is available for switching the redundant slots. (by Christian Bräuner
Sørensen, :ref:`docs <sec-custom-bootloader-backend>` by Andreas Schmidt)
* Changed ext4 filesystem creation options to always use 256 byte inodes.
Without it, mkfs.ext4 will default to 128 byte inodes on filesystems smaller
than 512MiB.
This avoids the "ext4 filesystem being mounted at /foo supports timestamps
until 2038" message on newer kernels.
* Added new slot type ``boot-gpt-switch`` to support atomic updating of boot
partitions in the GPT.
This is useful if the firmware does not support atomic bootloader updates by
itself.
See :ref:`here <sec-gpt-partition>` for details.
.. rubric:: Bug fixes
* Improve parent and bootname consistency checks when loading the system
config. (by Dan Callaghan)
* Fix and improve installation log output for the --disable-service
configuration.
* Clean up incomplete bundles on creation errors consistently for extract/resign/convert
and doesn't remove pre-existing files anymore.
* Fix minor memory leaks.
.. rubric:: Testing
* Added tests for UBIFS and NAND slot types via nandsim in qemu.
* Added CI testing of the --disable-service configure option.
* Added test cases for some CLI subcommands.
.. rubric:: Code
* Clarified licensing of the D-Bus API file. (by Michael Heimpold)
.. rubric:: Documentation
* Manual pages have been updated with new options. (by Michael Heimpold)
* Improved documentation around central and per-slot status files.
* Improved images and various text sections.
Contributions from: Andreas Schmidt, Bastian Krause, Christian Bräuner
Sørensen, Dan Callaghan, Enrico Jörns, Jan Lübbe, Michael Heimpold, Tobias
Junghans, Uwe Kleine-König
Release 1.3 (released Apr 23, 2020)
-----------------------------------
.. rubric:: Enhancements
* Added a new D-Bus method (InstallBundle) which supports optional parameters
("ignore-compatible" for now).
* Added support for X.509 key usage attributes (code signing and others).
* Added a ``check-crl`` configuration option to require Certificate Revocation
List (CRL) checking during installation.
If the keyring already contains a CRL, but checking is not enabled, a warning
will be printed.
* Support updating of already mounted slots via a custom install hook when
enabled with "allow-mounted=true" in the system configuration.
This can be useful for updating bootloaders in a boot partition (for example
on the Raspberry Pi or BeagleBone). (by Martin Hundebøll and Rasmus Villemoes)
* Added the ``--mksquashfs-args`` option for bundle creation. This can be used to
configure the details of the squashfs compression. (by Louis des Landes)
* Added the ``--casync-args`` option for the ``rauc convert`` command. This can
be used to configure the details of the casync conversion. (by Christopher
Obbard)
* Added support for installing UBIFS images via casync (depends on the casync PR
https://github.com/systemd/casync/pull/227). (by Ulrich Ölmann)
* Enabled usage of ``--no-verify`` with ``rauc resign``.
This can be useful for resigning of bundles signed with expired certificates.
* Exposed the ``RAUC_BUNDLE_MOUNT_POINT`` environment variable to hook scripts.
This also deprecates the old name ``RAUC_UPDATE_SOURCE`` for this value in
handler scripts. (by Rasmus Villemoes)
* Reduced size of the installed ``rauc`` binary. This was done by using
``--gc-sections`` and adding a configure switch to disable the ``bundle``,
``resign`` and ``convert`` commands. (by Rasmus Villemoes)
* Added support for explicitly telling RAUC that all slots are inactive on the
kernel command line (``rauc.external``).
This is useful for using RAUC in a factory installer. (by Marco Felsch)
* Improved layout of the ``rauc status`` output.
.. rubric:: Bug fixes
* Fixed SD/eMMC detection when using /dev/disk/by-path/ symlinks. (by Marco Felsch)
* Fixed handling of HTTP Content-Encoding: gzip. (by Jan Kundrát)
* Fixed reporting of errors during bundle verification. This solves a
``rauc-ERROR **: Not enough substeps: check_bundle`` abort. (by Rouven
Czerwinski)
* Fixed handling of surrounding whitespace in the system variant by removing
it. A warning is printed in this case.
* Fixed the RAUC D-Bus interface introspection file name to be consistent with
the interface name. (by Michael Tretter)
.. rubric:: Testing
* Switched testing environment from user-mode-linux (UML) to QEMU. This allows
us to use our own kernel configuration and avoids the (unusual) dependency.
* Re-enabled support for coverity, as they have added support for GCC 8.
* Added some more tests in several areas.
.. rubric:: Code
* Removed support for OpenSSL versions < 1.1.1.
OpenSSL versions 1.0.2 and 1.1.0 are no longer supported by the OpenSSL
project: https://www.openssl.org/policies/releasestrat.html
* Improved support for large bundles on 32 bit systems, but some work remains
to be done.
* Disabled automatic ``-Werror`` and ``-O0`` when building from a git
repository.
This caused confusion in several cases.
* Updated uncrustify and enabled some additional formatting rules.
* Reduced redundant prefixes in error messages.
* Removed unused verification functions left over from the old network mode.
* Removed minor memory leaks.
.. rubric:: Documentation
* Clarified documentation about hooks and handlers (and the available
environment variables).
* Fixed minor typos and inconsistencies.
Contributions from: Arnaud Rebillout, Christopher Obbard, Enrico Jörns, Jan
Kundrát, Jan Lübbe, Louis des Landes, Marco Felsch, Martin Hundebøll, Michael
Heimpold, Michael Tretter, Rasmus Villemoes, Rouven Czerwinski, Trent Piepho,
Ulrich Ölmann
Release 1.2 (released Oct 27, 2019)
-----------------------------------
.. rubric:: Enhancements
* Added ``--signing-keyring`` argument to specify a distinct keyring for
post-signing verification. This allows for example to use ``rauc resign``
with certs not verifying against the original keyring.
* Output of 'rauc status' is now grouped by slot groups to make it easier to
identify the redundancy setup.
Previously, the present slots were printed in a random order which was
confusing, especially when having more than three or four slots.
* Use pkg-config to obtain valid D-Bus install directories and clean up D-Bus
directory handling.
This adds libdbus-1-dev as new build dependency. (by Michael Heimpold)
* Moved various checks that could be performed before actually starting the
installation out of the atomic update region.
This allows RAUC to fail earlier without leaving behind a disabled slot group
with incomplete contents.
* Added optional ``--progress`` argument to ``rauc install`` that enables a
basic text progress bar instead of the default line-by-line log.
* Added ``tmppath`` to casync system config options to allow setting TMPDIR for
casync. (by Gaël PORTAY)
* Slot skipping was deactivated by default as it turned out to be unexpected
behaviour for many users.
The corresponding setting was renamed to 'install-same='
('force-install-same' will remain valid, too).
The means skipping writing for slots whose current and intended slot hashes
are equal must now be enabled explicitly.
This optimization is mainly useful for use-cases with a read-only rootfs.
* Added new slot type ``boot-mbr-switch`` to support atomic updating of boot
partitions in the MBR. (by Thomas Hämmerle)
See :ref:`here <sec-mbr-partition>` for details.
.. rubric:: Bug fixes
* Fixed detection of whether the bundle path is located in input directory for a
corner case.
* Fixed off-by-one error in printing the remaining attempts counter in the
uboot.sh contrib script (by Ellie Reeves)
* Fixed detection of mount points disappearing during the service's runtime.
* Added missing entry of 'service' subcommand to RAUC help text (if compiled
with service support).
* Fixed inappropriate resetting of BOOT_ACK flag in eMMC extCSD register
handling which could have prevented proper booting on some SoCs. (by Stephan
Michaelsen)
* Fixed leaking GDataInputStreams in boot selection and install handling that
led to steadily increasing number of open file descriptors in some scenarios
until exceeding system limits and leading to 'Too many open files' errors.
This was only problematic when installing many times without rebooting.
* Fixed 'uninitialized local' bugs in update_handler and config_file module.
(by Gaël PORTAY)
* PKCS#11 handling now does not silently accept missing (empty) PINs anymore,
but allows interactive prompt for entering it.
* Fixed bundle detection on big endian systems.
* Fixed size mismatches in printf formatter and struct packing on ARM32.
.. rubric:: Testing
* Fix checks that depended on implicit assumptions regarding the GHashTable
behaviour that are not valid anymore for newer glib versions.
* Added notes on required tools for unit testing and added check for
grub-editenv being present.
* Travis now also runs cross-compilation tests for platforms armhf, i386,
arm64, armel to allow early detection of cross-compilation issues with
endianness, 32 vs. 64 bit, etc.
.. rubric:: Code
* Reworked subprocess call logging for debugging and added remaining missing
log output to users of r_subprocess_new().
* Refactored slot handling code in new 'slot.c' module to be used for both
install and status information handling.
* Added qdbusxml2cpp annotations to rauc-installer.xml for interface class
generation. (by Tobias Junghans)
* Removed the deprecated 'network mode'.
Note that this does not affect RAUC's bundle network capabilities (casync,
etc.).
* Fixed clang compilation warnings (unused variable, printf formatter,
non-obvious invert statements).
* Various code cleanups, structural simplifications
.. rubric:: Documentation
* Added hints for creating ``/dev/data`` symlink to mount the right data
partition in dual data partition setups. (by Fabian Knapp)
* Extended manpage to cover 'rauc status' subcommands. (by Michael Heimpold)
* Fixed various typos.
Contributions from: Bastian Krause, Ellie Reeves, Enrico Jörns, Fabian Knapp,
Gaël PORTAY, Jan Lübbe, Leif Middelschulte, Michael Heimpold , Stephan
Michaelsen , Thomas Hämmerle, Thorsten Scherer, Tobias Junghans, Uwe
Kleine-König
Release 1.1 (released Jun 5, 2019)
----------------------------------
.. rubric:: Enhancements
* Check that we do not generate a bundle inside a source directory
* Added full GRUB2 support, including status and primary slot readback (by
Vitaly Ogoltsov and Beralt Meppelink)
* Allow passing a slot's name via commandline instead of it's bootname
* Show each slot's name in ``Booted from`` line of ``rauc status`` to simplify
identification
* Add ``resize`` option for ext4 slots to let RAUC run resize2fs on an ext4
slot after copying the image.
* Allow dumping the signer certificate (``--dump-cert``) without verification
* Allow specifying a keyring directory with multiple files to support
non-conflicting installations of certificates from different packages (by
Evan Edstrom)
* Add a bootloader option ``efi-use-bootnext`` (only valid when bootloader is
'efi') to disable usage of BootNext for marking slots primary.
* Support setting a system variant in the ``system-info`` handler via
``RAUC_SYSTEM_VARIANT``
* D-Bus "mountpoint" property now also exports external mount point
* Made slot state, compatible and variant available as environment variables
for slot hooks
* Made system variant variable available as an environment variable for bundle
hooks
.. rubric:: Bug fixes
* Fix memory leaks in D-Bus notification callbacks (by Michael Heimpold)
* Fix memory leaks in resolve_bundle_path (by Michael Heimpold)
* Do not print misleading status dump when calling ``mark-*`` subcommands
* Avoid mmap'ing potentially huge files (by Rasmus Villemoes)
* Fix and cleanup checksum verification and handling (by Rasmus Villemoes)
* Avoid assertion error caused by unconditional slot status hash table freeing
* Make a-month-from-now validity check in signature verification more robust
(by Rasmus Villemoes)
.. rubric:: Testing
* Enable lgtm analysis for tests
* Restructure signature tests with set_up and tear_down (by Evan Edstrom)
* Move from gcc-6 to gcc-7
* Build environment fixes and workarounds
.. rubric:: Code
* A failure in calling barebox_state bootchooser implementation should be
propagated
* Update to latest ``git-version-gen`` upstream version
* Tail-call real rauc suprocess in ``rauc-service.sh`` (by Angus Lees)
* Consistently return newly-allocated objects in ``resolve_path()``
* Enforce space between ``if`` and ``(`` via uncrustify
.. rubric:: Documentation
* Added an initial version of a man page (by Michael Heimpold)
* Extended D-Bus API documentation
* Improve description of how RAUC detects the booted slot
* Added lgtm badge
* Add hints on library dependencies
* Clarifications on how to build and install RAUC
* Add note on basic RAUC buildroot support
* Clarification on usage of RAUC on host and target side
* Clarified documentation of 'use-bundle-signing-time' option (by Michael Heimpold)
* Typos fixed
Contributions from: Angus Lees, Arnaud Rebillout, Beralt Meppelink, Enrico
Jörns, Evan Edstrom, Ian Abbott, Jan Lübbe, Michael Heimpold, Rasmus Villemoes,
Ulrich Ölmann, Vitaly Ogoltsov
Release 1.0 (released Dec 20, 2018)
-----------------------------------
.. rubric:: Enhancements
* Support OpenSSL 1.1
* Use OPENSSL_config() instead of OPENSSL_no_config()
* Handle curl_global_init() return code
.. rubric:: Bug fixes
* Fix error handling when resolving the backing file for a loop device
* Fix error reporting when no primary slot is found with u-boot (by Matthias Bolte)
* Fix memory leaks when parsing handler output
* Fix compiler error when building with --disable-network
* Handle fatal errors during curl or openssl initialization
* Fix boot selection handling for asymmetric update setups
* Fix default variant string in case of failure when obtaining
* Fix return codes when giving excess arguments to CLI functions
* Let 'rauc service' return exit code != 0 in case of failure
* Print 'rauc service' user error output with g_printerr()
* Fix showing primary slot (obtained via D-Bus) in 'rauc status'
* Fix showing inverted boot-status (obtained via D-Bus) in 'rauc status'
* Minor output and error handling fixes and enhancements
.. rubric:: Testing
* Fake entropy in uml tests to fix and speed up testing
* Fix creating and submitting coverity report data
* Migrate to using Docker images for testing
* Changed coverage service from coveralls to codecov.io
* Switch to uncrustify 0.68.1
.. rubric:: Documentation
* Provided slot configuration :ref:`examples <sec-example-slot-configs>` for
common scenarios
* Fixes and enhancements of README.rst to match current state
* Add sphinx DTS lexer for fixing and improving dts example code parsing
Contributions from: Ahmad Fatoum, Enrico Jörns, Jan Lübbe, Matthias Bolte
Release 1.0-rc1 (released Oct 12, 2018)
---------------------------------------
.. rubric:: Enhancements
* Bundle creation
* Add support for passing Keys/Certificates stored on PKCS#11 tokens (e.g. for using a smart card or HSM).
See :ref:`pkcs11-support` for details.
* Print a warning during signing if a certificate in the chain will expire within one month
* If keyring is given during bundle creation, automatically verify bundle signature and trust chain
* Configuration
(see the reference for the :ref:`[system] <system-section>`, :ref:`[keyring] <keyring-section>` and :ref:`[slot.*.*] <slot.slot-class.idx-section>` sections for details)
* Add ``extra-mount-opts`` argument to slot config to allow passing custom options
to ``mount`` calls (such as user_xattr or seclabel)
* Implement support for ``readonly`` slots that are part of the slot description but
should never be written by RAUC
* Add option ``use-bundle-signing-time`` to use signing time for verification instead
of the current time
* Introduce ``max-bundle-download-size`` config setting (by Michael Heimpold)
* Rename confusing ``ignore-checksum`` flag to ``force-install-same`` (old remains
valid of course) (by Jan Remmet)
* Add strict parsing of config files as we do for manifests already.
This will reject configs with invalid keys, groups, etc. to prevent unintentional behavior
* Installation
* Remove strict requirement of using ``.raucb`` file extension, although it is still recommended
* Export RAUC slot type to handlers and hooks (by Rasmus Villemoes)
* Add ``*.squashfs`` to ``raw`` slot handling (by Emmanuel Roullit)
* Add checking of RAUC bundle identifier (squashfs identifier)
* ``*.img`` files can now be installed to ``ext4``, ``ubifs`` or ``vfat`` slots (by Michael Heimpold)
* Warn if downloaded bundle could not be deleted
* Expose system information (variant, compatible, booted slot) over D-Bus (by Jan Remmet)
* The ``rauc status`` command line call now only uses the D-Bus API (when enabled) to obtain
status information instead of loading configuration and performing operations itself.
This finalizes the clear separations between client and service and also allows calling
the command line client without requiring any configuration.
* Add debug log domain ``rauc-subprocess`` for printing RAUC subprocess invocations.
This can be activated by setting the environment variable ``G_MESSAGES_DEBUG=rauc-subprocess``.
See :ref:`debugging` for details.
* Enhancement of many debug and error messages to be more precise and helpful
* Let U-Boot boot selection handler remove slot from ``BOOT_ORDER`` when marking it bad
* Implemented obtaining state and primary information for U-Boot boot selection interface (by Timothy Lee)
* Also show certificate validity times when the certificate chain is displayed
* Added a simple CGI as an example on how to code against the D-Bus API in RAUC contrib/ folder. (by Bastian Stender)
.. rubric:: Bug fixes
* Bootchooser EFI handler error messages and segfault fixed (by Arnaud Rebillout)
* Fix preserving of primary errors while printing follow-up errors in update_handlers (by Rasmus Villemoes)
* Make not finding (all) appropriate target slots a fatal error again
* Prevent non-installation operations from touching the installation progress information (by Bastian Stender)
* Call ``fsync()`` when writing raw images to assure content is fully written to disk before exiting (by Jim Brennan)
* Fix casync store initialization for extraction without seeds (by Arnaud Rebillout)
* Fix slot status path generation for external mounts (by Vyacheslav Yurkov)
* Do not try to mount already mounted slots when loading slot status information from per-slot file
* Fix invalid return value in case of failed ``mark_active()``
* Fix bootname detection for missing ``root=`` command line parameter
* Fix passing intermediate certificates via command line which got broken by a faulty input check (by Marcel Hamer)
* Preserve original uid/gid during extraction to be independent of the running system.
This was only problematic if the name to ID mapping changed with an update.
Note that this requires to enable ``CONFIG_FEATURE_TAR_LONG_OPTIONS`` when using busybox tar.
* Block device paths are now opened with ``O_EXCL`` to ensure exclusive access
* Fix handling for ``file://`` URIs
* Build-fix workaround for ancient (< 3.4) kernels (by Yann E. MORIN)
* Various internal error handling fixes (by Ulrich Ölmann, Bastian Stender)
* Several memory leak fixes
.. rubric:: Testing
* Abort on ``g_critical()`` to detect issues early
* Extended and restructured testing for barebox and u-boot boot selection handling
* Basic ``rauc convert`` (casync) testing
* Switch to Travis xenial environment
* Make diffs created by uncrustify fatal to enforce coding style
* Fix hanging rauc.t in case of failed tests for fixing sharness cleanup function handling
* Run sharness (rauc.t) tests with verbose output
* Show make-check log on error
.. rubric:: Code
* Add GError handling to download functions
* Prepare support for tracing log level
* Start more detailed annotation of function parameter direction and transfer
* Simplified return handling as result of cleanup helper rework
* Treewide introduction of Glib automatic cleanup helpers. Increases minimum required GLib version to 2.45.8 (by Philipp Zabel)
* Prepare deprecation of RAUC ancient non-bundle 'network mode'
.. rubric:: Documentation
* Add a :ref:`debugging` chapter on how to debug RAUC
* Add a :ref:`bootloader-interaction` section describing the boot selection layer and the special handling for the supported bootloaders
* Add hint on how to run RAUC without D-Bus to FAQ
* Document :ref:`sec_ref_host_tools` and :ref:`sec_ref_target_tools`
* Tons of typo fixes, minor enhancements, clarifications, example fixes, etc.
Contributions from: Alexander Dahl, Arnaud Rebillout, Bastian Stender, Emmanuel Roullit, Enrico Jörns, Jan Lübbe, Jan Remmet, Jim Brennan, Marcel Hamer, Michael Heimpold, Philip Downer, Philipp Zabel, Rasmus Villemoes, Thomas Petazzoni, Timothy Lee, Ulrich Ölmann, Vyacheslav Yurkov, Yann E. MORIN
Release 0.4 (released Apr 9, 2018)
----------------------------------
.. rubric:: Enhancements
* Add ``barebox-statename`` key to ``[system]`` section of system.conf in order
to allow using non-default names for barebox state
* Support atomic bootloader updates for eMMCs.
The newly introduced slot type ``boot-emmc`` will tell RAUC to handle
bootloader updates on eMMC by using the ``mmcblkXboot0/-boot1`` partitions
and the EXT_CSD registers for alternating updates.
* Support writing ``*.vfat`` images to vfat slots
* Add basic support for streaming bundles using casync tool.
Using the casync tool allows streaming bundle updates chunk-wise over
http/https/sftp etc.
By using the source slot as a seed for the reproducible casync chunking
algorithm, the actual chunks to download get reduced to only those that
differ from the original system.
* Add ``rauc convert`` command to convert conventional bundles to casync
bundle and chunk store
* Extend update handler to handle ``.caibx`` and ``.caidx`` suffix image types in
bundle
* Added ``--detailed`` argument to ``rauc status`` to obtain newly added slot
status information
* Added D-Bus Methods ``GetSlotStatus`` to obtain collected status of all slots
* Extended information stored in slot status files (installed bundle info,
installation and activation timestamps and counters)
* Optionally use a central status file located in a storage location not
touched during RAUC updates instead of per-slot files (enabled by setting
``statusfile`` key in ``[system]`` section of ``system.conf``).
* Add ``write-slot`` command to write images directly to defined slots (for use
during development)
.. rubric:: Bug fixes
* Fix documentation out-of-tree builds
* Fixed packaging for dbus wrapper script rauc-service.sh
* Some double-free and error handling fixes
.. rubric:: Testing
* Create uncrustify report during Travis run
.. rubric:: Code
* Unified hash table iteration and variable usage
* Add uncrustify code style configuration checker script to gain consistent
coding style. Committed changes revealed by initial run.
.. rubric:: Documentation
* Updated and extended D-Bus interface documentation
* Added documentation for newly added features (casync, central slot status,
etc.)
* Fixed and extended Yocto (meta-rauc) integration documentation
* Add link to IRC/Matrix channel
* Some minor spelling errors fixed
Release 0.3 (released Feb 1, 2018)
----------------------------------
.. rubric:: Enhancements
* Added support for intermediate certificates, improved bundle resigning and
certificate information for hooks.
This makes it easier to use a multi-level PKI with separate intermediate
certificates for development and releases.
See :ref:`sec-resign` for details.
* Added support for image variants, which allow creating a single bundle which
supports multiple hardware variants by selecting the matching image from a
set contained in the bundle.
See :ref:`sec-variants` for details.
* Added support for redundant booting by using EFI boot entries directly.
See :ref:`sec-efi` for details.
* Added boot information to ``rauc status``
* Added ``rauc extract`` command to extract bundles
* Support detection of the booted slot by using the ``UUID=`` and ``PARTUUID=``
kernel options.
* Improved the status and error output
* Improved internal error cause propagation
.. rubric:: Bug fixes
* Fixed boot slot detection for ``root=<symlink>`` boot parameters (such as
``root=/dev/disk/by-path/pci-0000:00:17.0-ata-1-part1``)
* Removed redundant image checksum verification during installation.
.. rubric:: Testing
* Improve robustness and test coverage
* Use gcc-7 for testing
.. rubric:: Documentation
* Added documentation for
- intermediate certificates
- re-signing bundles
- image variants
- UEFI support
* Minor fixes and clarifications
Release 0.2 (released Nov 7, 2017)
----------------------------------
.. rubric:: Enhancements
* Added ``--override-boot-slot`` argument to force booted slot
* Display installation progress and error cause in CLI
* Allow installing uncompressed tar balls
* Error reporting for network handling and fail on HTTP errors
* Added ``--keyring`` command line argument
* Added ``activate-installed`` key and handling for ``system.conf`` that allows
installing updates without immediately switching boot partitions.
* Extended ``rauc status mark-{good,bad}`` with an optional slot identifier
argument
* Added subcommand ``rauc status mark-active`` to explicitly activate slots
* New D-Bus method ``mark`` introduced that allows slot activation via D-Bus
* Added ``tar`` archive update handler for ``vfat`` slots
* Introduced ``rauc resign`` command that allows to exchange RAUC signature
without modifying bundle content
* Display signature verification trust chain in output of ``rauc info``.
Also generate and display SPKI hash for each certificate
* Added ``--dump-cert`` argument to ``rauc info`` to allow displaying signer
certificate info
.. rubric:: Documentation
* Added docs/, CHANGES and README to tarball
* Added and reworked a bunch of documentation chapters
* Help text for ``rauc bundle`` fixed
* Added short summary for command help
.. rubric:: Bug fixes
* Flush D-Bus interface to not drop property updates
* Set proper PATH when starting service on non-systemd systems
* Include config.h on top of each file to fix largefile support and more
* Let CLI properly fail on excess arguments provided
* Do not disable bundle checking for ``rauc info --no-verify``
* Properly clean up mount points after failures
* Abort on inconsistent slot parent configuration
* Misc memory leak fixes
* Fixes in error handling and debug printout
* Some code cleanups
.. rubric:: Testing
* Miscellaneous cleanups, fixes and refactoring
* Add tests for installation via D-Bus
* Let Travis build documentation with treating warnings as errors
* Allow skipping sharness tests requiring service enabled
* Explicitly install dbus-x11 package to fix Travis builds
* Fix coveralls builds by using ``--upgrade`` during
``pip install cpp-coveralls``
* Use gcc-6 for testing
Release 0.1.1 (released May 11, 2017)
-------------------------------------
.. rubric:: Enhancements
* systemd service: allow systemd to manage and cleanup RAUCs mount directory
.. rubric:: Documentation
* Added contribution guideline
* Added CHANGES file
* Converted README.md to README.rst
* Added RAUC logo
* Several typos fixed
* Updated documentation for mainline PTXdist recipes
.. rubric:: Bug fixes
* Fix signature verification with OpenSSL 1.1.x by adding missing binary flag
* Fix typo in json status output formatter ("mountpint" -> "mountpoint")
* Fixed packaging of systemd service files by removing generated service files
from distribution
* src/context: initialize datainstream to NULL
* Added missing git-version-gen script to automake distribution which made
autoreconf runs on release packages fail
* Fixed D-Bus activation of RAUC service for non-systemd systems
Release 0.1 (released Feb 24, 2017)
-----------------------------------
This is the initial release of RAUC.