前言

虽说主流系统基本都支持exfat格式的硬盘,但是Ubuntu在内核小于5.3的版本默认是无法支持exfat格式的硬盘的1,可以通过uname -r查看系统内核是否支持exfat。下面介绍对于内核版本小于5.3的版本如何挂载exfat格式的硬盘。

步骤

安装工具包

安装支持exfat的工具包

sudo apt update
#安装工具包
sudo apt install exfat-fuse exfat-utils
# Ubuntu 22.04使用下面的工具包
# sudo apt install exfat-fuse exfatprogs 

挂载

查询并挂载硬盘。

# 查询需要挂载的硬盘
sudo fdisk -l

硬盘分区
硬盘分区

接下来将对应的分区挂载到指定文件夹。

# 挂载到的文件夹
sudo mkdir /mnt/data

# 将对应挂载到该文件夹
sudo mount /dev/nvme1n1p1 /mnt/data

开机自动挂载

可以通过编辑/etc/fstab实现开机自动挂载硬盘。首先查询对应分区的UUID

# 查询分区UUID
sudo blkid

UUID
UUID

编辑/etc/fstab

sudo vim /etc/fstab

# 在文件末尾添加一行
UUID=6031-068A    /mnt/data    exfat    defaults    0    0

其中UUID更改为查询的结果,/mnt/data为需要挂载的位置。

非root用户挂载exfat格式

使用上面的方法可以实现exfat格式硬盘的挂载,但对于非root用户却没有写权限。下面为非root用户挂载的方法。

当非root用户写入exfat格式的硬盘时,会产生如下错误:

 # 以更改文件所有者的命令为例
 chown: changing ownership of `testfile': Operation not permitted 

可以在挂载的同时添加用户ID和组ID解决2

# 查询用户id
id username  # username为需要操作的用户名

用户id与组id
用户id与组id

其中uid和gid即为对应的结果。

然后使用uid和gid挂载对应的硬盘分区。

sudo mount -t exfat uid=1000,gid=1000 /dev/nvme1n1p1  /mnt/data

如果需要开机自动挂载,则在/etc/fstab添加一行:

vim /etc/fstab

# 添加一行
UUID=6031-068A    /mnt/data    exfat    defaults,uid=1000,gid=1000    0    0

在defaults后面添加uid和gid即可,注意中间使用逗号隔开

存在的问题

在exfat格式的硬盘中,无法支持软连接与硬连接

我在使用miniconda创建环境是时,会产生如下问题:

[Errno 1] Operation not permitted: 'cacert.pem' -> '/xxx/cert.pem'

参考

封面图