Mount USB Drive
I have a Fat32 formatted USB drive and I want to have it mounted when the Raspberry Pi boots. To do this I add an entry to my fstab file using the UUID of the drive and some permission.
Get a list of your USB devices to check if your USB drive is available
lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 13fe:5200 Kingston Technology Company Inc.
Bus 001 Device 005: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
Make a directory to mount your drive/volume into
sudo mkdir /home/pi/video
Find the UUID of your drive
sudo blkid
/dev/mmcblk0p1: SEC_TYPE="msdos" LABEL="boot" UUID="2654-BFC0" TYPE="vfat"
/dev/mmcblk0p2: UUID="548da502-ebde-45c0-9ab2-de5e2431ee0b" TYPE="ext4"
/dev/sda1: LABEL="video" UUID="7CCD-19F2" TYPE="vfat"
This tells me that my usb drive is in the device list at /dev/sda1, has the label ‘video’, a UUID of ’7CCD-19F2′, and is formatted as VFAT (e.g. FAT32).
Edit your /etc/fstab file by appending a line for your dive
sudo pico /etc/fstab
proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults 0 2
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
UUID=7CCD-19F2 /home/pi/video vfat rw,umask=0 0 0
# a swapfile is not a swap partition, so no using swapon|off from here on, use $
Here, on the line starting with UUID, I have mounted a device using its UUID=7CCD-19F2 into a folder /home/pi/video. This is a Fat32 formatted drive (vfat) and everybody has read-write permissions (rw,umask=0). This recipe will not work for other types of formatted drives (Ext3, NTFS, etc).
Remount Your drives and check the drive is mounted
sudo mount -a
'ls' should show /video/ in blue to indicate it is mounted
Important. When you make the directory where a drive will be mounted it MUST be done with ‘sudo mkdir /home/pi/video’. You need ‘sudo’ so fstab can mount it on boot, the final permissions of this mounted drive are set in the drives fstab line. In this case, ‘rw,umask=0′.
Linux Commands
-
List your usb devices: lsusb
-
List the Location, Label, UUID and Type of your USB devices: sudo blkid
-
Unmount a volume: sudo umount /home/pi/video
-
Mount everybody in fstab: sudo mount -a
-
Check if a drive is mounted: df | grep “/home/pi/video” | awk ‘{print $6}’
To Do
-
A problem I just had is that my USB drive did not get mounted at boot and the folder I have reserved for it is on my root file system, ‘/’, with only 4 GB of space. I started writing tons of video files to the folder and quickly ran out of space on. Now, I need a way to test if the folder I am writing to is (I) a folder or (ii) an actual mount point. Tym, the bash guru in the lab and my go to person on these things suggested the following:
df | grep “/home/pi/video” | awk ‘{print $6}’
This will return an empty string if /home/pi/video is NOT mounted.