# Adding USB Storage

You can add extra disk storage to an Iron Pi using an off-the-shelf USB flash disk or external hard drive. However, mapping the storage into your environment takes a few manual steps.

Start by plugging the USB disk into one of the Iron Pi's USB ports. Run the `lsblk` command to see the raw disk. In the example below, the USB disk is listed as `sda`, and the detected capacity if 14.3GB. It's normal for the detected capacity to be a bit below the drive's nominal capacity.

The disk has one partition, `sda1`. We will use that partition name in the next step when creating the filesystem.

![](/files/UpP7qVRFHTym09lbTOVJ)

{% hint style="warning" %}
`mmcblk0` is the Iron Pi's built-in flash drive. Do not try to format `mmcblk0` as an external disk!
{% endhint %}

### Choosing a Filesystem Type

If you want to use the USB drive to move files between the Iron Pi and a Windows or Mac computer, you should stick with a FAT32 filesystem, which is how most USB flash drives come formatted from the factory. If you want to use FAT32, you can skip the ext4 filesystem creation step below.

### Creating a Linux `ext4` filesystem

If you want to use the USB drive to run applications on the Iron Pi, it's best to format it with a native Linux filesystem.

To create a Linux filesystem on your USB disk, run:

`sudo mkfs -t ext4 <PARTITION>`

In this example, our partition is /dev/sda1, so our command would be:

`sudo mkfs -t ext4 /dev/sda1`

![](/files/Vfhjby6rLooDm2dRk4n8)

### Creating a filesystem mount point

To access an external drive in Linux, you need to mount the disk, which means attaching it to the operating system's logical file tree.

The `/mnt` directory is a common place to mount external drives. In this example, we'll create a directory called `/mnt/usb` and mount the USB drive there.

`sudo mkdir -p /mnt/usb`

### Mounting the filesystem via the command line

Once we've created the mount point, let's try mounting the filesystem to it. The command to do that is:

`sudo mount <PARTITION> <MOUNT POINT>`

In this example, our command would be:

`sudo mount /dev/sda1 /mnt/usb`

After mounting the disk, run the `df -h` command to check that it's properly attached. In the example below, you can see that `/dev/sda1` is mounted to `/mnt/usb` and has a capacity of 14GB.

![](/files/pkqCFgvrkKOHXGAzgA4f)

### Configuring the disk to mount on boot

If you want the disk to automatically mount each time the device boots, you will need to add an entry to the /etc/fstab file. Run `sudo nano /etc/fstab` to edit that file.

In the editor, add a line with the following contents:

`<PARTITION> <MOUNT POINT> <FILESYSTEM TYPE> defaults 0 2`

Put a tab beween each field. In this example, our entry is:

`/dev/sda1 /mnt/usb ext4 defaults 0 2`

![](/files/FX2kIw7QrTMRx9JZtSTr)

Type `ctrl-X` to save and exit. Run `sudo reboot` to reboot the device, and then run `df -h` after rebooting to ensure that your disk mounted correctly.


---

# Agent Instructions: 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:

```
GET https://docs.jcore.io/clarity-gateway/installation/readme/adding-usb-storage.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
