52

How to list the disk partition when they are unmounted? And how to mount them through terminal?

6 Answers 6

76

Listing Unmounted Partitions

To address the listing of the unmounted partitions part, there are several ways - lsblk, fdisk, parted, blkid.

$ lsblk
NAME                             MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                                8:0    0 111.8G  0 disk 
└─sda1                             8:1    0 111.8G  0 part /
sdb                                8:16   0 232.9G  0 disk 
├─sdb1                             8:17   0   1.5G  0 part 
├─sdb2                             8:18   0 138.6G  0 part /media/WINDOWS
├─sdb3                             8:19   0   8.1G  0 part 
├─sdb4                             8:20   0     1K  0 part 
├─sdb5                             8:21   0  68.5G  0 part 
└─sdb6                             8:22   0   5.8G  0 part 
loop0                              7:0    0   100G  0 loop 
└─docker-8:1-1589297-pool (dm-0) 252:0    0   100G  0 dm   
loop1                              7:1    0     2G  0 loop 
└─docker-8:1-1589297-pool (dm-0) 252:0    0   100G  0 dm   
$ sudo fdisk -l
[sudo] password for xieerqi: 

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders, total 234441648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000b5321

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   234440703   117219328   83  Linux

Disk /dev/sdb: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x96360d50

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048     3074047     1536000   27  Hidden NTFS WinRE
/dev/sdb2         3074048   293617502   145271727+   7  HPFS/NTFS/exFAT
/dev/sdb3       471437312   488396799     8479744   17  Hidden HPFS/NTFS
/dev/sdb4       293617662   471437311    88909825    5  Extended
/dev/sdb5       315830272   459382783    71776256   83  Linux
/dev/sdb6       459384832   471437311     6026240   82  Linux swap / Solaris

Partition table entries are not in disk order

Disk /dev/mapper/docker-8:1-1589297-pool: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders, total 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/docker-8:1-1589297-pool doesn't contain a valid partition table
$ sudo parted -l                                                               
[sudo] password for xieerqi: 
Model: ATA Radeon R7 (scsi)
Disk /dev/sda: 120GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End    Size   Type     File system  Flags
 1      1049kB  120GB  120GB  primary  ext4         boot


Model: ATA TOSHIBA MK2555GS (scsi)
Disk /dev/sdb: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system     Flags
 1      1049kB  1574MB  1573MB  primary   ntfs            boot, diag
 2      1574MB  150GB   149GB   primary   ntfs
 4      150GB   241GB   91.0GB  extended
 5      162GB   235GB   73.5GB  logical   ext4
 6      235GB   241GB   6171MB  logical   linux-swap(v1)
 3      241GB   250GB   8683MB  primary   ntfs            hidden


Model: Linux device-mapper (thin-pool) (dm)
Disk /dev/mapper/docker-8:1-1589297-pool: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: loop

Number  Start  End    Size   File system  Flags
 1      0.00B  107GB  107GB  ext4


$ sudo blkid
[sudo] password for xieerqi: 
/dev/sda1: UUID="86df21bf-d95f-435c-9292-273bdbcba056" TYPE="ext4" 
/dev/sdb1: LABEL="System" UUID="F4F688B2F68876A0" TYPE="ntfs" 
/dev/sdb2: LABEL="TI105866W0A" UUID="4EBAAE53BAAE36FD" TYPE="ntfs" 
/dev/sdb3: LABEL="HDDRECOVERY" UUID="BC4ED40D4ED3BDF8" TYPE="ntfs" 
/dev/sdb5: UUID="0ca7543a-5463-4a07-8bbe-233a7b0bd625" TYPE="ext4" 
/dev/sdb6: UUID="3a6e2270-19a2-49d7-aab3-5efb92d3b3d0" TYPE="swap" 
/dev/loop0: UUID="a3693b88-7899-4628-848d-d9012205cf56" TYPE="ext4" 
/dev/mapper/docker-8:1-1589297-pool: UUID="a3693b88-7899-4628-848d-d9012205cf56" TYPE="ext4" 
$ 

One could use a little bit of AWK magic to parse output of lsblk to list all the unmounted partitions :

$ lsblk  --noheadings --raw | awk '$1~/s.*[[:digit:]]/ && $7==""'              
sdb1 8:17 0 1.5G 0 part 
sdb3 8:19 0 8.1G 0 part 
sdb4 8:20 0 1K 0 part 
sdb5 8:21 0 68.5G 0 part 
sdb6 8:22 0 5.8G 0 part

Or alternatively:

$ lsblk --noheadings --raw -o NAME,MOUNTPOINT | awk '$1~/[[:digit:]]/ && $2 == ""'
sdb1 
sdb2 
sdb3 
sdb4 
sdb5 

What exactly is happening there is that we're listing all the lines which have first column starting with letter s (because that's how drives typically are named) and ending with a number (which represent partitions). In my previous output you could see that I have other filesystems, such as for docker, so in the above command we're getting rid of all the unnecessary stuff.

Mounting Partitions

I've found that mount can be picky: it needs to know exact filesystem, it needs to be run as root, etc. udisksctl mount -b /dev/sXY is a much better command, can be ran as regular user, and mounts automatically to the /media/$USER/ folder. For example,

$ udisksctl mount -b /dev/sdb5 
Mounted /dev/sdb5 at /media/xieerqi/0ca7543a-5463-4a07-8bbe-233a7b0bd625.
1
  • This gives a wrong result for SD readers in a laptop, since /dev/mmcblk0 also ends with a number and is listed alongside the partition /dev/mmcblk0p1.
    – emk2203
    May 20, 2023 at 7:05
8

This is what I developed for listing unmounted volumes:

lsblk  --noheadings --raw | awk '{print substr($0,0,4)}' | uniq -c | grep 1 | awk '{print "/dev/"$2}'
2
  • 3
    Could you expand your answer with examples on how it is used? Dec 15, 2016 at 1:20
  • with modifying it like this: lsblk --noheadings --raw | awk '{print substr($0,0,4)}' | uniq -c | grep 1 | awk '{print "/dev/"$2}' | grep -E "(/dev/sd.)[[:digit:]]" you can get rid of sda, sdb, sdc, and ...
    – SdSaati
    Oct 9, 2020 at 2:43
6

sudo blkid -o list

will list all the mounted and unmounted partitions. In addition you can use mount and df to see all mount points.

mount -t type device destination_dir

can be used to mount your device/partition.

2
  • 2
    This lists only mounted partitions. Unmounted ones aren't included.
    – Suncat2000
    Jan 10, 2018 at 2:11
  • @Suncat2000 Sorry, but this simple command will also list unmounted partitions.
    – musbach
    Aug 23, 2020 at 10:18
5

To answer your first question, run:

sudo parted -l

If they are normally mounted, just run:

mount -a

From the mount man page: The command

mount -a [-t type] [-O optlist]

(usually given in a bootscript) causes all filesystems mentioned in fstab (of the proper type and/or having or not having the proper options) to be mounted as indicated, except for those whose line contains the noauto keyword.

If they are not normally mounted you have to provide the options to mount.

2
  • and to be clear the mount command needs to be sudo mount <options> as well, if run as other than root, or you get: mount: only root can do that
    – JimLohse
    Jan 18, 2016 at 1:13
  • I am too newb to comment directly on @Serg's answer but it's quite exhaustive, at least I can upvote it! Be sure to look at his answer, especially the udisksctl mount -b /dev/sXY command which can be run by an average user, very cool.
    – JimLohse
    Jan 18, 2016 at 19:29
2

I just made a script based on the answers that people said here, in this case I list all the unmounted partitions first, and then mount them using udisksctl.

The final script will look like this:

lsblk  --noheadings --raw | awk '{print substr($0,0,4)}' | uniq -c | grep 1 | awk '{print "/dev/"$2}' | grep -E "(/dev/sd.)[[:digit:]]" | xargs -I{} -n1 udisksctl mount -b {}

Here,

lsblk --noheadings --raw | awk '{print substr($0,0,4)}' | uniq -c | grep 1 | awk '{print "/dev/"$2}'

will produce sda sda1 ... sdb sdb1 ... sdc .... but we don't want sda itself, we want sda1, sda2 ... so we need to remove sda, sdb, sdc themselves,

so we add the

grep -E "(/dev/sd.)[[:digit:]]"

section to do that.

Now it produces sda1,sda2,...,sdb1,sdb2,... kinda good now :)

and now we can mount them one by one, by using xargs like this:

xargs -I{} -n1 udisksctl mount -b {}

0

You can also use,

blkid -c /dev/nul | awk -F: '{print $1}'

to get the list of all the mounted partition, and then use Lsblk to check which weren't on the mounted list.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .