tree: 636ebbb8c831bcbd8e1960aab4660ded2dfa7fad [path history] [tgz]
  1. dbus/
  2. minijail/
  3. src/
  4. tmpfiles.d/
  5. upstart/
  6. Cargo.toml
  7. DIR_METADATA
  8. OWNERS
  9. README.md
mini_udisks/README.md

mini_udisks

This directory contains a small daemon that implements part of the UDisks2 API. This is used on ChromeOS Flex by fwupd, which expects UDisks to provide it with the EFI System Partition (ESP) mount point so that it can write UEFI firmware capsules there. See the [uefi-capsule] fwupd plugin for more information.

The ESP on ChromeOS Flex is fairly small, so it is not used for capsule storage. Instead, capsules are written to an unencrypted directory on the stateful partition: /mnt/stateful_partition/unencrypted/uefi_capsule_updates.

Fwupd doesn‘t care whether the ESP path is a real partition, it’s fine to pass in a “mount point” that is actually just a regular directory.

Note that the mount-point path provided by this API is /run/uefi_capsule_updates rather than the full uefi_capsule_updates path; this is because fwupd is running in a minijail sandbox which bind-mounts the capsule directory under /run. (Bind-mounting to the full stateful path inside the sandbox would require that all the intermediate directories exist, which is more trouble than it's worth.)

The daemon is only installed on the reven board (i.e. ChromeOS Flex) and its derivatives.

API

Get the list of block devices (will only include the fake ESP):

sudo -u fwupd \
    gdbus call --system --dest org.freedesktop.UDisks2 \
    --object-path /org/freedesktop/UDisks2/Manager \
    --method org.freedesktop.UDisks2.Manager.GetBlockDevices {}

Output:

([objectpath '/org/freedesktop/UDisks2/block_devices/fakedisk12'],)

View properties of the ESP partition device:

gdbus introspect --system --dest org.freedesktop.UDisks2 --only-properties \
    --object-path /org/freedesktop/UDisks2/block_devices/fakedisk12

Output:

node /org/freedesktop/UDisks2/block_devices/fakedisk12 {
  interface org.freedesktop.UDisks2.Block {
    properties:
      readonly s Device = '/dev/fakedisk12';
  };
  interface org.freedesktop.UDisks2.Filesystem {
    properties:
      readonly aay MountPoints = [b'/run/uefi_capsule_updates'];
  };
  interface org.freedesktop.UDisks2.Partition {
    properties:
      readonly u Number = 12;
      readonly s Type = 'c12a7328-f81f-11d2-ba4b-00a0c93ec93b';
      readonly s UUID = '99cc6f39-2fd1-4d85-b15a-543e7b023a1f';
  };
};