> For the complete documentation index, see [llms.txt](https://docs.verifone.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.verifone.com/adk-os-platform/readme/storage-users-and-installation/storage-and-filesystem.md).

# Storage and filesystem

Understand the VOS3 partition layout, application users, home directories, and runtime data model.

VOS3 uses read-only executable content, controlled read-write areas, and an A/B-aware system layout.

Use this page to understand partitions, application users, home directories, and filesystem access patterns.

## File system partitions

### A/B update concept

The A/B update model supports seamless updates by maintaining two system images.

* image A — active image
* image B — installation image

Images can share a single filesystem partition where needed.

The update flow is:

1. The system runs from the active image.
2. Installation updates the inactive image.
3. When installation finishes, the boot target switches.
4. On the next reboot, the updated image becomes active.
5. The next installation uses the other image.

### System partitions and file system layout

The system flash memory is partitioned as follows.

| **Partition**              | **Contents**                                                                                                     | **Access** | **Notes**                                     |
| -------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------- | --------------------------------------------- |
| `aboot`, `abootbak`        | Boot loader                                                                                                      | Read-only  |                                               |
| `kernelfs_a`, `kernelfs_b` | Linux kernel and startup system                                                                                  | Read-only  |                                               |
| `rootfs`                   | System libraries, system applications, system resources, user application binaries, and read-only user resources | Read-only  |                                               |
| `sysdata`                  | System configuration A/B, system runtime data, and system logs                                                   | Read/Write | Managed by the system                         |
| `appdata`                  | Application configuration A/B, application logs, application runtime data, and the download area                 | Read/Write |                                               |
| `persist`                  | Warrantied keys, keystore, and certstore                                                                         | Read/Write | Managed by the system and kept across updates |
| `devinfo`                  | Device information and device mode token                                                                         | Read-only  | Managed by the system                         |

## Application users and home directories

### Application and system users

As on earlier platforms, applications run under predefined users named `usr<X>`, where `<X>` is typically `1` to `16`.

Applications run with the privileges of their assigned user and use that user's home directory.

Application users are created automatically when user-signed packages are installed.

The platform also uses predefined system and root users.

| **User**        | **Notes**                                          |
| --------------- | -------------------------------------------------- |
| `usr<X>` (1–16) | MAC user applications, libraries, and RO resources |
| `sys_<...>`     | System daemons, libraries, and applications        |
| `root`          | Root user                                          |

### User home directories

Each application user gets a home directory with this structure.

| **Path**           | **Type** | **Partition** | **Location**                    | **Permissions** | **Notes**                   | **A/B support** |
| ------------------ | -------- | ------------- | ------------------------------- | --------------- | --------------------------- | --------------- |
| `~/`               | dir      | `rootfs`      | `/home/usr<X>`                  | read-only       | user home folder            | Y               |
| `~/versioned_data` | symlink  | `appdata`     | `/mnt/appdata/versioned/usr<X>` | read/write      | versioned application data  | Y               |
| `~/flash`          | symlink  | `appdata`     | `/mnt/appdata/data/usr<X>`      | read/write      | persistent application data | N               |
| `~/logs`           | symlink  | `appdata`     | `/mnt/appdata/logs/usr<X>`      | read/write      | application logs            | N               |

### Application permissions and capabilities

Applications have a limited default permission set.

A predefined set of Linux capabilities covers common application needs.

Other protected resources are accessed through system services.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.verifone.com/adk-os-platform/readme/storage-users-and-installation/storage-and-filesystem.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
