User Tools

Site Tools


Identify and Mount a Drive

This guide assumes you only have 1 external hard drive connected to the Pi. If so then it should be attached to /dev/sda1 – additional drives will use /dev/sdb1 and /dev/sdc1 etc. If you have multiple external hard drives you will need separate mount points for each drive (e.g. /mnt/usbstorage1 and /mnt/usbstorage2).

  Prepare the Mount Point
  First make a directory in which to mount the USB drive
  sudo mkdir /mnt/usbstorage

  Make pi the owner of the mounted drive and make its permissions read, write and execute for it
  sudo chown -R pi:pi /mnt/usbstorage
  sudo chmod -R 775 /mnt/usbstorage

  Set all future permissions for the mount point to pi user and group.
  sudo setfacl -Rdm g:pi:rwx /mnt/usbstorage
  sudo setfacl -Rm g:pi:rwx /mnt/usbstorage

  Determine the USB Hard Drive Format
  You also need to know the file system the drive is formatted with
  sudo blkid

  You will see something like this. Again it is the sda1 line we are interested in. Note the TYPE="exfat" at the end, you will need this for the fstab file. It is easiest to copy it now and paste it after running nano in the next step.
  /dev/sda1: UUID="31db83ca-ac6d-4bc7-b076-848c7c71025e" TYPE="ext2" PARTUUID="279bf5b4-01"
  /dev/mmcblk0: PTUUID="0006dd3f" PTTYPE="dos"
  /dev/mmcblk0p1: LABEL="RECOVERY" UUID="0403-0201" TYPE="vfat" PARTUUID="0006dd3f-01"
  /dev/mmcblk0p5: LABEL="SETTINGS" UUID="705f6e2b-fac6-4f33-8611-d57a9c9f04e1" TYPE="ext4" PARTUUID="0006dd3f-05"
  /dev/mmcblk0p6: SEC_TYPE="msdos" LABEL="boot" UUID="1495-189B" TYPE="vfat" PARTUUID="0006dd3f-06"
  /dev/mmcblk0p7: LABEL="root0" UUID="759bca6b-5766-4941-b830-cdbfcd861107" TYPE="ext4" PARTUUID="0006dd3f-07"
  /dev/mmcblk0p8: LABEL="boot-rbp2" UUID="200C-EA5B" TYPE="vfat" PARTUUID="0006dd3f-08"
  /dev/mmcblk0p9: LABEL="root-rbp2" UUID="26d10fa3-fe0a-4044-b24a-9b85c2079122" TYPE="ext4" PARTUUID="0006dd3f-09"

  Update your repositories if your hard drive is anything but ext4 as the TYPE above
  sudo apt-get update

  Now mount the usb stick in there. If it is NTFS you will need to install some utilities first
  sudo apt-get install ntfs-3g -y

  If the drive is exfat install these utilities
  sudo apt-get install exfat-utils -y

  For all drive types mount the usb with this command, -o insures pi is the owner which should avoid permission issues
  sudo mount -o uid=pi,gid=pi /dev/sda1 /mnt/usbstorage

  If you get an error use this syntax
  sudo mount -t uid=pi,gid=pi /dev/sda1 /mnt/usbstorage

  If the mount -t command returns an error then use this syntax
  sudo mount uid=pi,gid=pi /dev/sda1 /mnt/usbstorage

  If you are getting this drive is already mounted errors then you are probably using a distro which automounts the drives which you can either continue using but then you should remove the /etc/fstab entries. You will have to uninstall the automounting software if you want to mount using the method in this guide.
  Remove the automounting software with this command
  sudo apt-get remove usbmount --purge

  Automount the USB Hard Drive on Boot
  /mnt/usbstorage will be the folder in which you store your media. We want it to be automounted on boot The best way to do this is through the UUID. Get the UUID by using this commmand

sudo ls -l /dev/disk/by-uuid/

  You will see some output like this. The UUID you want is formatted like this XXXX-XXXX for the sda1 drive. If the drive is NTFS it can have a longer format like UUID="BABA3C2CBA3BE413". Note this UUID, for me it is BA8F-FFE8

total 0

  lrwxrwxrwx 1 root root 15 Jan  1  1970 3d81d9e2-7d1b-4015-8c2c-29ec0875f762 -> ../../mmcblk0p2
  lrwxrwxrwx 1 root root 15 Jan  1  1970 787C-2FD4 -> ../../mmcblk0p1
  lrwxrwxrwx 1 root root 10 Oct 26 21:10 BA8F-FFE8 -> ../../sda1

  Now we will edit fstab to mount the USB by UUID on boot
  sudo nano /etc/fstab

  Add the line in red to the bottom, replace XXXX-XXXX with your UUID and exfat with your type if it is 
  different (e.g. ntfs, vfat, ext4). You may or may not need the quotation marks wrapped around the UID, you do
  not need quotation marks wrapped around the file system type (ext4, vfat, NTFS etc).

  The umask 0002 sets 775 permissions so the pi user and group can read, write and execute files 
  on the external USB drive. To completely eliminate permission issues you can set the umask to 0000 
  which equals 777 permissions so anybody can read, write and execute. Note that 777 permissions are 
  considered a security risk.

If you have issues here then try replacing uid=pi,gid=pi with just the word defaults (typical for ext4). You can also try replacing the UUID with the /dev/sda1 line.

  This is an example for exfat
  /dev/mmcblk0p1 /boot vfat defaults 0 2
  /dev/mmcblk0p2 / ext4 errors=remount-ro,noatime 0 1
  UUID=XXXX-XXXX  /mnt/usbstorage exfat   nofail,uid=pi,gid=pi   0   0

For NTFS, note that it is ntfs and not ntfs-3g

  /dev/mmcblk0p1 /boot vfat defaults 0 2
  /dev/mmcblk0p2 / ext4 errors=remount-ro,noatime 0 1
  UUID=XXXX-XXXX    /mnt/usbstorage    ntfs   nofail,uid=pi,gid=pi    0   0

For ext4 using uid and gid is not recommended so use at your own risk as it could cause issues (thanks mk2soldier).

  /dev/mmcblk0p1 /boot vfat defaults 0 2
  /dev/mmcblk0p2 / ext4 errors=remount-ro,noatime 0 1
  UUID=XXXX-XXXX    /mnt/usbstorage    ext4   nofail,uid=pi,gid=pi    0   0

  If you get any errors you can replace uid=pi,gid=pi with defaults or remove it entirely
  /dev/mmcblk0p1 /boot vfat defaults 0 2
  /dev/mmcblk0p2 / ext4 errors=remount-ro,noatime 0 1
  UUID=XXXX-XXXX    /mnt/usbstorage    ext4   nofail,defaults    0   0

  For using /dev/sda1 and defaults if you have troubles with UUID
  /dev/mmcblk0p1 /boot vfat defaults 0 2
  /dev/mmcblk0p2 / ext4 errors=remount-ro,noatime 0 1
  /dev/sda1    /mnt/usbstorage    ext4   nofail    0   0

  Now test the fstab file works
  sudo mount -a

  If you didn’t get errors reboot, otherwise try the suggestions above to get it working then
  mount -a again until it succeeds
  sudo reboot

identify_and_mount_a_drive.txt · Last modified: 2023/03/09 22:35 by