# 【Linux】挂载硬盘并设置开机自动挂载

@[TOC](https://github.com/UnderTurrets/notes/blob/master/Linux/%E6%96%87%E7%AB%A0%E7%9B%AE%E5%BD%95/README.md)

***

本文介绍了在Linux系统下挂载硬盘的概念和步骤，并讲解了开机自动挂载的方法。

## 1.什么是挂载

秉承着Linux“一切皆文件”的理念，硬盘这种东西在系统中以一个文件的形式呈现。譬如，笔者这里的两块硬盘在`/dev`目录下是这几个文件。

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_mountDisk_diskFile.png)

其中，`nvme`表示硬盘是nvme硬盘，`n1`表示主存储器，`p1`表示第一扇区。

当然，我们要的不是这些文件。我们需要使用这些硬盘的空间。

我们需要**在Linux中创建一个目录去对应一个硬盘的一个扇区**，这样我们就可以使用这个硬盘的特定扇区了。这个目录就被称为`挂载点`

## 2.文件管理器点击挂载

在文件管理器的`其他位置`，会自动地列出一些可以挂载的硬盘，只需要直接点击，就可以自动挂载硬盘并进入。

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_mountDisk_autoMountDisk.png)

笔者这里是双系统双硬盘，因此，我直接点击进去就可以访问我windows下的文件。

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_mountDisk_MountWindowsDisk.png)

随便点击一个文件，查看`属性`，就可以看到挂载位置：

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_mountDisk_MountPlace.png)

仔细查看这个挂载位置，发现确实是有这个目录：

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_mountDisk_MountSourcePlace.png)

## 3.手动挂载

### 查看可挂载的硬盘扇区

文件管理器其实并不会列出所有可以挂载的硬盘。使用如下命令，可以列出所有可以挂载的硬盘扇区：

```shell
lsblk
```

以下是我查看的结果：

```shell
han@ASUS-TUF-Gaming-F15-FX507ZR:~$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0         7:0    0     4K  1 loop /snap/bare/5
loop1         7:1    0    62M  1 loop /snap/core20/1587
loop2         7:2    0  63.9M  1 loop /snap/core20/2105
loop3         7:3    0  74.1M  1 loop /snap/core22/1033
loop4         7:4    0 400.8M  1 loop /snap/gnome-3-38-2004/112
loop5         7:5    0 349.7M  1 loop /snap/gnome-3-38-2004/143
loop6         7:6    0   497M  1 loop /snap/gnome-42-2204/141
loop7         7:7    0  91.7M  1 loop /snap/gtk-common-themes/1535
loop8         7:8    0   604K  1 loop /snap/gtk-theme-orchis/3
loop9         7:9    0  45.9M  1 loop /snap/snap-store/582
loop10        7:10   0  12.3M  1 loop /snap/snap-store/959
loop11        7:11   0  40.4M  1 loop /snap/snapd/20671
loop12        7:12   0   284K  1 loop /snap/snapd-desktop-integration/14
loop13        7:13   0   452K  1 loop /snap/snapd-desktop-integration/83
nvme0n1     259:0    0 476.9G  0 disk 
├─nvme0n1p1 259:1    0   260M  0 part /boot/efi
├─nvme0n1p2 259:3    0    16M  0 part 
├─nvme0n1p3 259:4    0 453.7G  0 part /media/han/这很C
├─nvme0n1p4 259:5    0   750M  0 part 
├─nvme0n1p5 259:6    0    22G  0 part 
└─nvme0n1p6 259:7    0   200M  0 part 
nvme1n1     259:2    0 953.9G  0 disk 
├─nvme1n1p1 259:8    0 853.9G  0 part /media/han/BA121BD2121B928D
├─nvme1n1p2 259:9    0   513M  0 part 
├─nvme1n1p3 259:10   0     1K  0 part 
└─nvme1n1p5 259:11   0  99.5G  0 part /
```

### 在想要的位置创建一个目录作为挂载点

一般来说，系统会自动在`/media`下创建挂载点，我们也可以遵循这个习惯，在/media下创建一个名为`nvme1n1p1`的文件夹挂载我的第二块nvme硬盘的第一扇区：

```shell
sudo mkdir /media/nvme1n1p1
```

我们需要管理员权限，否则是无法创建的。

然后用`mount`命令挂载即可：

```shell
mount /dev/nvme1n1p1 /media/nvme1n1p1
```

## 4.设置开机自动挂载

以上方法都是临时挂载，系统关机之后就失效了。想要永久挂载，需要设置系统开机自动挂载。系统是根据`/etc/fstab`这个文件来自动挂载的，我们只需要修改这个文件即可。

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_mountDisk_mountFile.png)

对每个要挂载的硬盘扇区，有六个参数，其中后三个参数一般设置成`defaults`、`0`、`0`就可以了，前三个参数需要自己设置，分别是：`欲挂载的硬盘扇区的UUID`、`目标挂载点的目录`、`硬盘扇区的文件系统格式`。

`欲挂载的硬盘扇区的UUID`和`硬盘扇区的文件系统格式`都可以通过`blkid`命令查询：

```shell
sudo blkid
```

```shell
必须要使用管理员权限。以下是我查询的结果：
han@ASUS-TUF-Gaming-F15-FX507ZR:~$ sudo blkid
/dev/nvme1n1p5: UUID="7add1901-adef-4e4c-90cf-2aa29d0eefdf" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="0b46eacc-05"
/dev/loop1: TYPE="squashfs"
/dev/nvme0n1p5: LABEL="RESTORE" BLOCK_SIZE="512" UUID="9802E4CD02E4B184" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="c993d14d-084b-411d-b40f-f3f9a7c9add2"
/dev/nvme0n1p3: LABEL="M-hM-?M-^YM-eM->M-^HC" BLOCK_SIZE="512" UUID="8CD845A9D84591FE" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="ff605b7d-1935-4e7f-a0c4-fabb7a9ce8bd"
/dev/nvme0n1p1: LABEL_FATBOOT="SYSTEM" LABEL="SYSTEM" UUID="6844-14A0" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="9d8c79ce-dd1c-47d9-a37a-48bb81dcd968"
/dev/nvme0n1p6: LABEL="MYASUS" UUID="E6E4-E3BA" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="Basic data partition" PARTUUID="a16ec556-9ced-4b7a-97c1-ca3f51645c28"
/dev/nvme0n1p4: LABEL="RECOVERY" BLOCK_SIZE="512" UUID="9E8047FB8047D883" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="70a6a0a0-47ac-4f2f-88ab-bb3105367968"
/dev/loop8: TYPE="squashfs"
/dev/loop6: TYPE="squashfs"
/dev/loop13: TYPE="squashfs"
/dev/loop4: TYPE="squashfs"
/dev/loop11: TYPE="squashfs"
/dev/loop2: TYPE="squashfs"
/dev/loop0: TYPE="squashfs"
/dev/loop9: TYPE="squashfs"
/dev/loop7: TYPE="squashfs"
/dev/nvme1n1p2: UUID="6990-AB1E" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="0b46eacc-02"
/dev/nvme1n1p1: BLOCK_SIZE="512" UUID="BA121BD2121B928D" TYPE="ntfs" PARTUUID="0b46eacc-01"
/dev/loop5: TYPE="squashfs"
/dev/loop12: TYPE="squashfs"
/dev/loop3: TYPE="squashfs"
/dev/loop10: TYPE="squashfs"
/dev/nvme0n1p2: PARTLABEL="Microsoft reserved partition" PARTUUID="9a0cddc0-b8cf-4e4c-8147-47845f628beb"
```

查询到了之后，直接修改`/etc/fstab`文件即可。修改这个文件同样需要管理员权限。我这里使用了gedit软件进行修改，大家也可以选择vim或者其他的。

```shell
sudo gedit /etc/fstab
```

![](https://cdn.jsdelivr.net/gh/UnderTurrets/ImageHosting@master/linux_mountDisk_mountFile.png)

修改好之后，还有重要的一步，我们必须提前手动创建挂载目录。我这里选择的两个目标挂载目录是`/media/han/BA121BD2121B928D`和`/media/han/这很C`，大家根据自己的目录路径自行更改。

用管理员权限创建即可：

```shell
han@ASUS-TUF-Gaming-F15-FX507ZR:~$ sudo mkdir /media/han/BA121BD2121B928D
han@ASUS-TUF-Gaming-F15-FX507ZR:~$ sudo mkdir /media/han/这很C
```
