I use all my raspberry pi's as servers and in this quick post, I will demonstrate how to mount your usb drive as a disk
Identify the Disk
I am using a SanDisk 32GB in this demonstration.
After we inserted into the RaspberryPi, we need to identify the block device:
$ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 28.7G 0 disk
└─sda1 8:1 1 28.7G 0 part
We can see that its /dev/sda
.
Formatting the Disk
Since I will only be using this drive on Linux, I don't need to use a filesystem such as NTFS or exFat, because I won't be using this disk on Windows.
Therefore, I will be formatting this disk to ext4
:
$ sudo mkfs.ext4 /dev/sda
mke2fs 1.44.5 (15-Dec-2018)
Found a dos partition table in /dev/sda
Proceed anyway? (y,N) y
Creating filesystem with 7511040 4k blocks and 1880480 inodes
Filesystem UUID: badcfb6a-81ec-4a3b-8182-e0a950a379e5
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
Prepare the Directory
Let's create the directory where we want our disk to be mounted:
$ sudo mkdir -p /disk/1
Since we might add more usb disks to our raspberry pi in the future, we dont want our mount information to specify the block device name, as they might change the way it gets booted and it could potentially mount to the wrong directory.
We would rather want the block id, instead of the name.
Now to get the block id, as we will be using it in our /etc/fstab
to mount the disk on boot.
First let's check the block devices again:
$ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 28.7G 0 disk
Then get the block id:
$ sudo blkid /dev/sda
/dev/sda: UUID="badcfb6a-81ec-4a3b-8182-e0a950a379e5" TYPE="ext4"
Mounting
Append the disk information to your /etc/fstab
so that the disk will be mounted on boot, in my case:
$ echo 'UUID=badcfb6a-81ec-4a3b-8182-e0a950a379e5 /disk/1 ext4 defaults,auto,users,rw,nofail,noatime 0 0' >> /etc/fstab
So my complete /etc/fstab
looks like this:
$ proc /proc proc defaults 0 0
PARTUUID=738a4d67-01 /boot vfat defaults 0 2
PARTUUID=738a4d67-02 / ext4 defaults,noatime 0 1
UUID=badcfb6a-81ec-4a3b-8182-e0a950a379e5 /disk/1 ext4 defaults,auto,users,rw,nofail,noatime 0 0
We can test the mount:
$ sudo mount -a
And you should see the disk below:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 15G 1.3G 13G 10% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 8.4M 2.0G 1% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda 29G 45M 27G 1% /disk/1
/dev/mmcblk0p1 253M 54M 199M 22% /boot
tmpfs 396M 0 396M 0% /run/user/1000
Grant Permissions
The only non-root user that will use this disk, is pi
, so to grant permissions:
$ sudo chown -R pi:pi /disk/1
Else, you might want to do:
$ find /disk/1/ -type d -exec chmod 755 {} \;
$ find /disk/1/ -type f -exec chmod 644 {} \;
Test Access
As the pi user, test writing to the drive:
$ echo 1 > /disk/1/file.txt
And reading from the drive:
$ cat /disk/1/file.txt
1