- How to access a usb flash drive from the terminal?
- 2. Create a mount point (optional)
- 3. Mount!
- pmount / pumount
- USB storage devices
- Auto-mounting with udisks
- Manual mounting
- Getting a kernel that supports usb_storage
- Identifying device
- Mounting USB memory
- Allow writing by regular users
- As normal user with fstab
- Mount tools
- Troubleshooting
- No USB storage devices are detected
- Device not shutting down after unmounting all partitions
- Device is detected but does not register as mountable
How to access a usb flash drive from the terminal?
You’ll need to know what the drive is called to mount it. To do that fire off one of the following (ranked in order of my preference):
lsblk sudo blkid sudo fdisk -l
You’re looking for a partition that should look something like: /dev/sdb1 . The more disks you have the higher the letter this is likely to be. Anyway, find it and remember what it’s called.
2. Create a mount point (optional)
This needs to be mounted into the filesystem somewhere. You can usually use /mnt/ if you’re being lazy and nothing else is mounted there but otherwise you’ll want to create a new directory:
3. Mount!
sudo mount /dev/sdb1 /media/usb
When you’re done, just fire off:
This answer is almost 6 years old and while the core of it still works, things like fdisk -l aren’t the most user-friendly options. There are also new mechanisms in higher stacks for mounting devices in a sane and standard way which might not always be available.
So I’ve added some polish from the other answers. While you’re reading this footnote and you’re doing this on a desktop system, there definitely are arguments for using udisksctl , per wecac’s answer. This mounts in the same way the desktop does —creating your own /media/$USER/device directory— but I think there are still arguments for a static mountpoint, especially when you don’t want the path to change.
Udisks also relies on D-Bus, so might not be available everywhere.
the main disadvantage of this method is that it mounts the device as root. if the device is FAT formatted then the user won’t be able to write to it. the /media/$USER/device mountpoint will also always be the same
All answers assume that there magically appears a /dev/sdX after putting in the USB stick. What if it doesn’t? I see in the logs that it is detected, but no new /dev. lsusb show all the gory details too. Ie sudo lsusb -vs 15:2 | grep id gives idVendor 0x090c Silicon Motion, Inc. — Taiwan (formerly Feiya Technology Corp.) idProduct 0x1000 Flash Drive
@CarloWood I have faced a similar situation. In some logs, i think dmesg or something, I found that the drive was unable to power itself up. I just ended up using a different port for the drive. As far as i know there is not a way to mount a drive, whose device driver hasnt created a device file in /dev/
pmount / pumount
Install pmount . Mounts disks in /media/
pmount /dev/sdb1 pumount /dev/sdb1
Replace «sdb1» with your specific device path. For more information see the manpage:
pmount ("policy mount") is a wrapper around the standard mount program which permits normal users to mount removable devices without a match- ing /etc/fstab entry. pmount is invoked like this: pmount device [ label ] This will mount device to a directory below /media if policy is met (see below). If label is given, the mount point will be /media/label, otherwise it will be /media/device.
Thanks, I knew how to do the accepted answer but was looking for something a bit easier that didn’t leave me having to clear up empty folders myself.
Use udisksctl from package= udisks2 (in both Ubuntu and Debian). Procedure is:
- Find the ID of the block device you want to mount, using lsblk :
user@machine:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 1.8T 0 disk ├─sda1 8:1 0 19.1M 0 part /boot/efi ├─sda2 8:2 0 1.8T 0 part └─sda3 8:3 0 16G 0 part [SWAP] sdb 8:16 0 931.5G 0 disk ├─sdb1 8:17 0 37M 0 part ├─sdb2 8:18 0 15.9G 0 part [SWAP] └─sdb3 8:19 0 915.7G 0 part / sdc 8:32 1 14.4G 0 disk └─sdc1 8:33 1 14.4G 0 part sdd 8:48 0 1.8T 0 disk └─sdd1 8:49 0 1.8T 0 part
user@machine:~$ udisksctl mount --block-device /dev/sdc1 ==== AUTHENTICATING FOR org.freedesktop.udisks2.filesystem-mount === Authentication is required to mount Kingston DT microDuo 3C (/dev/sdc1) Multiple identities can be used for authentication: 1. XXXXX. (user) 2. . (YYYYY) Choose identity to authenticate as (1-2): 1 Password: ==== AUTHENTICATION COMPLETE === Mounted /dev/sdc1 at /media/user/USBDRIVELABEL.
Addressing Hans Deragon’s comment below: you can also tell udisksctl to do —no-user-interaction . It does not attempt to authenticate the user, which usually «just works»:
user@machine:~$ udisksctl mount --block-device /dev/sdc1 --no-user-interaction # possibly some complaining here about I/O charset or need to run `fsck` Mounted /dev/sdc1 at /media/user/USBDRIVELABEL.
In addition to using the standard mount command (which requires root) you can mount drives using udisks and dbus with your standard user.
To do this it is useful (but not required) to know a few things about the drive first:
Knowing these you can use a simple command to mount a drive from the command line.
gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/ --method org.freedesktop.UDisks.Device.FilesystemMount "" []
this call should echo the path it is mounted at if the mount succeeds.
To unmount drives mounted in this way you can run:
gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/ --method org.freedesktop.UDisks.Device.FilesystemUnmount []
N.B. the is simply the end of the path to it. So for example if what you want to mount is at /dev/sdb2 then you would put sdb2 in place of .
If you do not know which device it is or what filesystem it uses do not fear. You can easily print out all that information with this little command:
gdbus introspect --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices --recurse --only-properties | grep -E "(readonly .+ (IdLabel|IdType|Device(IsMounted|IsDrive|File) ).*|\>|.*\<)"
This will print out something like this:
node /org/freedesktop/UDisks/devices < node /org/freedesktop/UDisks/devices/sda < interface org.freedesktop.UDisks.Device < readonly s IdLabel = ''; readonly s IdType = ''; readonly s IdUsage = ''; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sda'; >; >; node /org/freedesktop/UDisks/devices/sda1 < interface org.freedesktop.UDisks.Device < readonly s IdLabel = 'SYSTEM'; readonly s IdType = 'ntfs'; readonly s IdUsage = 'filesystem'; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sda1'; >; >; node /org/freedesktop/UDisks/devices/sda2 < interface org.freedesktop.UDisks.Device < readonly s IdLabel = 'Windows7'; readonly s IdType = 'ntfs'; readonly s IdUsage = 'filesystem'; readonly b DeviceIsMounted = true; readonly s DeviceFile = '/dev/sda2'; >; >; node /org/freedesktop/UDisks/devices/sda3 < interface org.freedesktop.UDisks.Device < readonly s IdLabel = 'Recovery'; readonly s IdType = 'ntfs'; readonly s IdUsage = 'filesystem'; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sda3'; >; >; node /org/freedesktop/UDisks/devices/sda4 < interface org.freedesktop.UDisks.Device < readonly s IdLabel = ''; readonly s IdType = ''; readonly s IdUsage = ''; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sda4'; >; >; node /org/freedesktop/UDisks/devices/sda5 < interface org.freedesktop.UDisks.Device < readonly s IdLabel = ''; readonly s IdType = 'ext4'; readonly s IdUsage = 'filesystem'; readonly b DeviceIsMounted = true; readonly s DeviceFile = '/dev/sda5'; >; >; node /org/freedesktop/UDisks/devices/sda6 < interface org.freedesktop.UDisks.Device < readonly s IdLabel = ''; readonly s IdType = 'swap'; readonly s IdUsage = 'other'; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sda6'; >; >; node /org/freedesktop/UDisks/devices/sda7 < interface org.freedesktop.UDisks.Device < readonly s IdLabel = ''; readonly s IdType = 'ext4'; readonly s IdUsage = 'filesystem'; readonly b DeviceIsMounted = true; readonly s DeviceFile = '/dev/sda7'; >; >; node /org/freedesktop/UDisks/devices/sdb < interface org.freedesktop.UDisks.Device < readonly s IdLabel = ''; readonly s IdType = ''; readonly s IdUsage = ''; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sdb'; >; >; node /org/freedesktop/UDisks/devices/sdb1 < interface org.freedesktop.UDisks.Device < readonly s IdLabel = 'USB DRIVE'; readonly s IdType = 'vfat'; readonly s IdUsage = 'filesystem'; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sdb1'; >; >; node /org/freedesktop/UDisks/devices/sr0 < interface org.freedesktop.UDisks.Device < readonly s IdLabel = ''; readonly s IdType = ''; readonly s IdUsage = ''; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sr0'; >; >; >;
Those that have IdUsage = 'filesystem' may be mounted using the above command.
This means that, for example, if i wanted to mount the device 'USB DRIVE' i would run the command
gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/sdb1 --method org.freedesktop.UDisks.Device.FilesystemMount "vfat" []
These commands all work using the dbus messaging system, the same way that Nautilus and other file managers auto-mount things. In these commands we are sending various objects (i.e. /org/freedesktop/. messages asking them to mount and unmount certain devices. They might or might not do this depending on the permissions one has been given in PolicyKit .
Using similar commands one can control almost every aspect of ones experience in Ubuntu and simulate most system programs and functions (i.e. shutdown, volume change, etc.).
USB storage devices
This document describes how to use the popular USB memory sticks with Linux. However, it is also valid for other devices such as digital cameras that act as if they were just a USB storage device.
If you have an up-to-date system with the standard Arch kernel and a modern desktop environment, your device should just show up on your desktop, with no need to open a console.
Auto-mounting with udisks
This is the easiest and most frequently used method. It is used by many desktop environments, but can be used separately too.
See Udisks for detailed information, including list of mount helpers.
Manual mounting
Note: Before you decide that Arch Linux does not mount your USB device, be sure to check all available ports. Some ports might not share the same controller, preventing you from mounting the device.
Getting a kernel that supports usb_storage
If you do not use a custom-made kernel, you are ready to go, for all Arch Linux stock kernels are properly configured. If you do use a custom-made kernel, ensure it is compiled with SCSI-Support, SCSI-Disk-Support and usb_storage. If you use the latest udev, you may just plug your device in and the system will automatically load all necessary kernel modules.
Identifying device
The first thing one needs to access a storage device is its identifier assigned by kernel. See File systems#Identify existing file systems for details.
Newly plugged-in devices are usually shown in the journal.
Mounting USB memory
If mount does not recognize the file system of the device you can try to use the -t argument, see mount(8) for details. If mounting does not work, you can try to recreate the file system or even repartition the disk.
Allow writing by regular users
If you want non-root users to be able to write to the USB stick, you can issue the following command:
# mount -o gid=users,fmask=113,dmask=002 /dev/sda1 /mnt/usbstick
If it does not work, make sure that the file system is mountable and writable as root, see the previous section for details.
As normal user with fstab
See FAT#Writing to FAT32 as normal user if you want normal user to do the mount/unmount action.
Mount tools
Multiple mount tools facilitate mounting as a regular user.
Troubleshooting
No USB storage devices are detected
If you have connected your USB storage device and it is not listed by lsblk but appears in the journal without being assigned a block device, see General troubleshooting#Cannot use some peripherals after kernel upgrade.
Also ensure that your BIOS has both XHCI Handoff and EHCI Handoff enabled, but this is usually not an issue with most modern devices.
Device not shutting down after unmounting all partitions
This article or section needs expansion.
Reason: Please advise how to automatically shut down devices after unmounting (Discuss in Talk:USB storage devices)
Failure to power off a device might result in:
- a hard disk drive not parking its head, making a faint scratching sound while spinning out and degrading the device [2], or
- a solid-state drive (especially older) not flushing its cache buffers or updating its mapping tables, and losing data [3].
When you unmount the partitions, the device is still powered on. You should ask the system to turn it off first in order to safely remove it: [4]
# echo 1 > /sys/block/disk_name/device/delete
If you use udisks, you can use these commands: [5]
$ udisksctl unmount -b /dev/sdXY $ udisksctl power-off -b /dev/sdX
Device is detected but does not register as mountable
udev is shipped with a default set of rules, found in /usr/lib/udev/rules.d/ , including one for ignoring some specific devices for various reasons. Some hardware devices, such as digital cameras, portable recorders, etc., may format usb storage in a way that results in the ignore rules to be triggered. You can check if one of these rules was applied with the following command and then find the corresponding conditions in the defaults:
$ udevadm info --attribute-walk --name=device_name | grep UDISKS_IGNORE
If this is the case and your device has this property set to "1", you can override it with a custom rule, following the udev page.