blob: b6b37bd69334caa7fb658cd09f903543d62d7ecd [file] [log] [blame] [view] [edit]
# mini_udisks
This directory contains a small daemon that implements part of the
[UDisks2 API][udisks]. This is used on ChromeOS Flex by [fwupd], which
expects UDisks to provide it with the [EFI System Partition (ESP)][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';
};
};
```
[capsule]: https://github.com/fwupd/fwupd/blob/HEAD/plugins/uefi-capsule/README.md
[esp]: https://en.wikipedia.org/wiki/EFI_system_partition
[fwupd]: https://github.com/fwupd/fwupd
[udisks]: http://storaged.org/doc/udisks2-api/latest/index.html