详解:macOS/Linux如何挂载磁盘?如何开机自动挂载/卸载磁盘?

本文最后更新于 2023年9月17日 上午

哈哈,好久没有更新文章了;最近年底,确实忙了点,但是还是有小伙伴在私信问Linux和macOS的事情,有几个小伙伴还问开机挂载磁盘问题,这里做个简单解答。

不管是Linux还是基于Unix的macOS,挂载磁盘可以使用mount命令进行磁盘的挂载。

挂载的一般步骤:

  • 查看磁盘状态
  • 挂载磁盘
  • 读写磁盘
  • 最后是卸载磁盘。

macOS和Windows类似,移动存储一般会自动挂载;部分Linux发行版本,也会对移动存储进行挂载(尤其是有GUI界面的发行版本)。

这次,就忽略所以GUI界面,看看命令上如何操作。最后,再看看如何开机自动挂载或卸载(取消挂载)磁盘。

如果你的Linux是云服务器,其实也差不多,你应该会得到云磁盘的UUID,和本文Linux插上U盘后获取U盘磁盘UUID类似。

更多可以参考云磁盘使用。

另外,一些网络磁盘,比如:rclone挂载Google Driver等,不在本文讨论范围,有机会单独起一篇文章进行讲解。

查看磁盘

查看磁盘,一般用fdisk命令,但是有一些特殊。虽然macOS也有fdisk命令,但是实际上使用和Linux是不一样的:

macOS上的fdisk命令

而Linux上的fdisk命令:

Linux上的fdisk

实际上,macOS上达到Linux上的效果,需要使用diskutil命令:

macOS上diskutil命令

macOS

macOS上查看磁盘插入情况,使用命令:

1
diskutil list

macOS上操作

我们插上U盘后的状态:

插上U盘后

可以看到,多了一个disk4IDENTIFIER。插入的物理接口是/dev/disk4。类似于TCP/IP模型中网络层和物理层的关系。

这个可不是固定的,比如我用上扩展坞:

用上扩展坞

紧接着,还可以进一步查看磁盘状态:

1
diskutil info disk2

查看磁盘状态

而网上说,查看S.M.A.R.T,实际上需要第三方工具包smartctl的支持,并且U盘或者接口支持:

1
smartctl -a disk2

比如,我的U盘不支持:

U盘不支持

其实也可能是我U盘/硬盘盒的主控,不支持。因为,macOS上即使安装了额外驱动还是很受限于主控代码。

但是自带的硬盘支持:

自带的硬盘

Windows上的CrystalDiskInfo软件,更为方便:
CrystalDiskInfo

当然,你的硬盘盒也需要支持S.M.A.R.T,比如我的硬盘盒:

看内部,猜外部~

Linux

Linux的磁盘查看,一般使用fdisk命令:

1
fdisk -l

Linux的fdisk命令

插上U盘,查看输出末尾,就可以看到我们的U盘设备:

插上U盘后效果

可以看到,我的U盘,拥有四个分区(因为实际上是一个PE系统和Hackintosh安装盘)。

挂载磁盘

不管是Linux还是基于Unix的macOS,挂载磁盘可以使用mount命令进行磁盘的挂载。根据上文查看的磁盘位置进行挂载:

1
2
3
4
5
6
# 简单滴说
mount [参数] [需要挂载的分区] [Linux上挂载点]
# 详细版本
usage: mount [-dfrkuvw] [-o options] [-t external_type] special mount_point
mount [-adfrkuvw] [-t external_type]
mount [-dfrkuvw] special | mount_point

首先我们看看macOS:

macOS上挂载

其中:

  • -t: 磁盘类型。可以省略,缺省时候,会进行自动匹配,但是macOS上“不太聪明的样子”,最好指定,否则会挂载不上。
  • -o: 后续的rw、auto和nobrowse都是由这个同步模式进行追加参数。
  • /dev/disk4: 上文通过fdiskdiskutil获得的磁盘位置。
  • Downloads/MintimateDisk: 磁盘内容需要挂载到那个文件夹,可以为绝对路径,也可以为相对路径。

最后的命令为:

1
2
3
4
# 不指定读写
sudo mount -t exfat /dev/disk4 Downloads/MintimateDisk
# 指定读写
sudo mount -t exfat -o rw,auto,nobrowse /dev/disk4 Downloads/MintimateDisk

不指定读写结果

挂载结果

Linux其实也是一样,在mount命令上,Unix和Linux都差不多:

Linux上的挂载

Linux上挂载

卸载磁盘

卸载很简单。

首先,看看macOS:

1
umount Downloads/MintimateDisk

macOS上卸载磁盘

同样的,Linux上的卸载也十分简单:

1
umount /mnt/upan

Linux上卸载我们刚刚挂载的磁盘

开机挂载/卸载

最后,我们看看如何开机自动挂载和卸载磁盘。

这里一般需要用到/etc/fstab这个文件了:

macOS上fstab

每一行的含义:

1
2
UUID=5EE51E74-0E37-42FE-AC22-38184A510981 none ntfs noauto
设备UUID/file system   挂载点/dir   文件系统类型/type  挂载选项/options   [转储频度/dump]   [自检次序/fsck]

其中,最后两个默认填0或者直接不填比较好,具体可以参考:

我个人很喜欢Archlinux的解释:

  • 描述要挂载的特定块设备或远程文件系统; 请见 #文件系统标识。
  • 描述挂载目录。
  • 文件系统类型。
  • mount相关的挂载选项。
  • 会被dump工具检查。该字段通常设置为 0, 以禁用检查。
  • 设置引导时文件系统检查的顺序; 请见fsck。对于 root 设备该字段应该设置为 1。对于其它分区该字段应该设置为 2,或设置为 0 以禁用检查。

首先是卸载,一般运用在macOS。

在Intel版本的macOS上,可以选择安装双系统。如果你安装了双系统,可能会开机自动挂载Windows的磁盘分区:

自动挂载的磁盘

自动挂载的内容

自动挂载磁盘内的详情

但是,我们在macOS上,并不能直接写Windows的分区,而且这样有点危险。为此,我们可以开机自动卸载:

开机自动卸载磁盘后的状态

操作很简单,我们编写卸载命令到/etc/fstab

首先,我们查看磁盘详情:

1
diskutil list

之后,找到Windows的分区,使用diskutil info命令查看详情:

1
diskutil info 

diskutil info

根据磁盘的Volume UUID,添加到/etc/fstab。这样macOS就会自动卸载了:

1
2
3
UUID=5EE51E74-0E37-42FE-AC22-38184A510981 none ntfs noauto
# 或者
UUID=5EE51E74-0E37-42FE-AC22-38184A510981 none ntfs noauto 0 0

同理,Linux设备,如果想自动挂载U盘。首先查看UUID:

1
blkid

Linux使用blkid命令

之后,我们添加到/etc/fstab内保存即可:

1
UUID=67E3-17ED /mnt/upan vfat defaults 0 0

Linux修改

不过,Linux更建议配置到启动服务脚本内:

Linux追加到启动脚本内



详解:macOS/Linux如何挂载磁盘?如何开机自动挂载/卸载磁盘?
https://www.mintimate.cn/2022/12/30/macOSAndLinuxMountAuto/
作者
Mintimate
发布于
2022年12月30日
许可协议