当 Linux 操作系统启动时,它会尝试挂载您的硬盘和其他存储设备上的分区。为了实现这一目标,系统使用 /etc/fstab 文件来确定应该如何挂载文件系统。/etc/fstab 文件是一个文本文件,包含了在系统引导期间将要挂载的所有文件系统的定义。它通过指定每个文件系统的设备名称、挂载点、文件系统类型和选项等参数来完成此操作。
通常情况下,/etc/fstab 文件中的每行都对应着一个文件系统及其相关配置信息。每一行都包含以下6个字段(记住只有6个也就是用空格或者tab隔开的6列):
第1列,设备名称(Device):
该文件系统所使用的块设备的名称或 UUID。
第一列可以是磁盘路径也可以是UUID,这个磁盘路径和可以用fdisk -l 命令查看,这个UUID可以用blkid 命令查看
第2列,挂载点(Mount Point):
该文件系统所挂载到的目录位置。
这个挂载点就是你挂在后以后要用的文件路径,比如/mnt/sda1
这个路径必须提前新建好,新建文件夹命令示例:
mkdir /mnt/sda1
第3列,文件系统类型(Filesystem Type):
该文件系统所使用的文件系统类型,例如 ext4、NTFS 或 exFAT 等。
这个文件系统就是你磁盘分区的格式,我们要挂载fat/NTFS/exFAT这些windows格式的时候需要提前安装驱动支持
在 Armbian 下挂载 fat 和 ntfs 分区通常不需要任何额外的安装,因为这些文件系统格式通常都已经预置了所需的内核模块。但是,对于 exFAT 文件系统,需要额外安装 exfat-fuse 和 exfat-utils 软件包才能够正常挂载。
使用以下命令来安装这些软件包:
sudo apt-get install exfat-fuse exfat-utils
安装完成后,就可以像挂载其他文件系统一样来挂载 exFAT 格式的分区,例如:
sudo mount -t exfat /dev/sdb1 /mnt/exfat
第4列,挂载选项(Mount Options):
配置文件系统的读写权限、自动挂载方式等功能。
下面是一些常见的选项:
rw:可读写模式。
ro:只读模式。
users:允许普通用户挂载和卸载该分区。
owner:将文件系统的所有权交给挂载它的用户。
auto:开机时自动挂载所有列在 /etc/fstab 文件中的文件系统。
noauto:不自动挂载该分区,在需要时手动挂载。
exec:启用二进制程序执行权限。
noexec:禁止二进制程序执行权限。
uid=<value>:将文件系统的所有者设置为指定用户 ID 的用户。
gid=<value>:将文件系统的所有组设置为指定组 ID 的用户组。
umask=<value>:设定默认的文件和目录权限掩码值。
多个选项可以同时使用,以逗号隔开。例如:defaults,noatime,nofail,表示使用默认选项,关闭文件访问时间记录,并在挂载失败时不阻止系统启动。具体支持哪些选项将依赖于您的Linux发行版和内核版本。
上述示例中defaults主要包括以下内容:
rw:读写模式。
suid 和 dev:允许 SUID 标志和设备文件特权。
exec:启用二进制程序执行权限。
auto:自动挂载分区。
nouser:只有 root 用户才能进行挂载和卸载操作。
async:异步 I/O 操作,可提高性能。
atime:记录文件最后访问时间。
例如,如果您想禁用写入权限,可以使用 ro 选项替换掉 rw 选项,如下所示:
UUID=<partition-UUID> <mount-point> <file-system-type> ro,nofail 0 0
第5列,备份频率(Dump Frequency):
与备份程序,dump命令相关的数据。0表示不进行备份。
第6列,检查顺序(Filesystem Check Order):
指定在开机时检查文件系统的顺序。0表示不进行检查。
例如,以下是一个简单的 /etc/fstab 文件示例:
# Device Mount point Filesystem type Options Dump Pass
UUID=4f8e246a-5c15-49df-a2b9-8f40b9a7cf87 / ext4 defaults 1 1
/dev/sda2 /home ext4 noatime,errors=remount-ro 0 2
第一行表示将 UUID 为 4f8e246a-5c15-49df-a2b9-8f40b9a7cf87 的 ext4 文件系统挂载到根目录下,使用默认选项,并在备份时进行备份。同时指定了该文件系统的检查顺序为 1。
第二行表示将 /dev/sda2 分区的 ext4 文件系统挂载到 /home 目录下,并禁用访问时间记录(noatime),如果发生错误则重新挂载并只允许 root 用户进行挂载和卸载操作,不备份,在系统启动时进行第二级别的检查。
总之,通过修改 fstab 中的配置,您可以实现自动挂载硬盘分区、配置文件系统的读写权限、自动挂载方式等功能。
最后我们来用一个示例总结一下:
UUID=B804-9CBF /mnt/sdb3 exfat defaults,nofail,umask=0000 0 0
上述/etc/fstab 文件中的这一行配置可以将 exFAT 格式的分区自动挂载到 /mnt/sdb3 目录下,具体的配置信息如下:
UUID=B804-9CBF: 表示设备的 UUID,用于唯一标识该分区。您可以通过运行命令 sudo blkid 来查看所有可用块设备和它们的 UUID。
/mnt/sdb3: 表示分区挂载的目录。如果该目录不存在,则需要先创建该目录才能进行挂载操作。
exfat: 表示该分区使用 exFAT 文件系统格式。
defaults,nofail,umask=0000: 表示文件系统的默认挂载选项,包括读写权限、异步 I/O 操作等。此外,还设置了 nofail 参数,以确保即使在挂载失败时也不会阻止系统启动。umask=0000 则禁用了掩码,使得文件和目录的权限可以被设置为最大值。
0 0: 表示备份频率和检查顺序的参数,对于 exFAT 分区来说,这些参数并不适用。
PS:
1,在使用 /etc/fstab 文件自动挂载文件系统时,一定要确保目标挂载点存在,并且您有相应的权限进行挂载。
2,建议在修改 /etc/fstab 文件之前先备份该文件,以免出现意外情况。
3,是defaults 而不是default。
4,指定多个用户或用户组权限可以直接逗号隔开UUID=<partition-UUID> <mount-point> <file-system-type> defaults,nofail,uid=www,gid=hhh,uid=user1,gid=group1 0 0
5,需要所有用户都有读写权限可以直接这么写UUID=<partition-UUID> <mount-point> <file-system-type> defaults,nofail,,umask=0000 0 0
参考链接:armbian等linux系统修改fstab实现开机自动挂载磁盘(详解) - 知乎 (zhihu.com)