将 HFS+ 文件系统挂载到 Armbian

2024-12-15#Armbian#Linux#HFS+

HFS+(Hierarchical File System Plus)是苹果公司开发的一种文件系统,主要是为传统机械硬盘设计的文件系统。我有一块本来在 MacOS 使用的移动硬盘,期望将其挂载到 Armbian Linux 服务器上,作为扩展存储。 HFS+ 并不是 Linux 系统原生支持的文件系统,因此有一些要点,本文是为记录。

检查磁盘的文件系统 🔗

在挂载到 Linux 服务器之前,首先确定一下当前磁盘的上的文件系统。为此,可使用 lsblk 命令,并使用 -f 选项使其输出文件系统信息:

lsblk -f

或者使其输入文件系统、大小和挂载点,以便进一步确认分区名称和文件系统:

lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINTS

我的移动磁盘分区名称为 sdb2,文件类型为 hfsplus,那么就是 HFS+ 了。

挂载 HFS+ 文件系统 🔗

首先安装 hfsprogs

apt install -y hfsprogs

然后创建挂载点目录:

mkdir -p /media/data

再使用 mount 命令挂载,将 sdb2 挂载到 /media/data

mount -t hfsplus -o force,rw /dev/sdb2 /media/data

如果没有报错,那么应该就可以挂载成功了。可以进入到 /media/data 目录,创建文件夹和文件,确保挂载的文件系统是可读且可写的。

自动挂载 HFS+ 分区 🔗

使用 mount 可以挂载文件系统。但是机器在重启后并不会自动挂载它们。为此还需要进一步设置。至少有两种方法:

  1. 使用 /etc/fstab 文件,在系统启动时挂载。
  2. 使用 Autofs 按需挂载。

使用 /etc/fstab 挂载 HFS+ 分区 🔗

使用块设备 UUID,在 /etc/fstab 文件中配置挂载信息。首先使用 blkid 命令列出所有块设备的UUID:

blkid

然后在 /etc/fstab 中添加一行记录:

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx	/media/data	hfsplus      	force,rw,nofail	0	2

保存 /etc/fstab 之后,务必验证一下,否则可能导致系统重启之后出错,无法连接!为此,可使用 mount 命令检查:

mount -a

注意,在以上的 /etc/fstab 文件示例中,挂载选项中包含了nofail,这意味着在挂载出错时,系统的引导程序会继续执行。我的血泪教训是,在修改了 /etc/fstab 文件后,我并没有验证,机器重启后,我却无法使用 SSH 连接机器了。最后只好给服务器连接了显示器,才修复问题。我的建议是:对于这种外置存储设备,我觉得可以加上 nofail,即使出错,也不影响系统正常启动。

使用 Autofs 挂载 HFS+ 分区 🔗

Autofs 是一种自动挂载文件系统的工具,它可以根据用户的访问需求动态地挂载和卸载文件系统,而不是在系统启动时就挂载所有可能用到的文件系统,从而节省系统资源。它主要通过配置文件定义挂载规则,当用户访问特定的挂载点路径时,Autofs 会按照规则自动挂载相应的文件系统,比如在访问网络共享文件或者光盘等存储介质时可以自动挂载。

我尝试使用 Autofs 挂载了 HFS+ 分区,并且可以使用 touchmkdir 创建文件和文件夹,也就是对文件系统有读写权限。但是,在我设置好 Sambda 服务,然后通过网络邻居访问位于 HFS+ 文件系统上的共享目录时,却只能读,无法创建和删除文件与文件夹。因时间有限,未能找到原因。以下简要记录配置的方法。可参考《使用autofs自动挂载移动设备》 一文。

首先安装 autofs

apt install -y autofs

编辑主配置文件 /etc/auto.master,添加目标挂载的主目录及对应的子配置文件信息,在配置文件末尾添加一行:

/media /etc/auto.misc

编辑 /etc/auto.misc 文件,添加一行记录:

data   -fstype=hfsplus,rw :/dev/disk/by-uuid/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

重启 autofs 服务:

service autofs restart

此时,如果使用 ls /media/ 会发现并没有 /media/data 目录。但如果使用 cd /media/data 进入该目录,就会激活挂载。然后务必通过创建、修改、删除文件和文件夹,确定自动挂载成功。

注意:autofs 还有更多的配置选项,比如设置 timeout 可让在挂载点不活动一定时间后自动卸载。

参考资料 🔗


加载中...