如何在OS X El Capitan中通过UUID或LABEL挂载磁盘?


17

我从以下位置获取磁盘的UUID和标签 diskutil info disk0s4

diskutil info disk0s4
   Device Identifier:        disk0s4
   Device Node:              /dev/disk0s4
   Whole:                    No
   Part of Whole:            disk0
   Device / Media Name:      Untitled

   Volume Name:              Data

   Mounted:                  No

   File System Personality:  HFS+
   Type (Bundle):            hfs
   Name (User Visible):      Mac OS Extended
   Journal:                  Unknown (not mounted)
   Owners:                   Disabled

   Partition Type:           Apple_HFS
   OS Can Be Installed:      No
   Media Type:               Generic
   Protocol:                 PCI
   SMART Status:             Verified
   Volume UUID:              F8C88B2D-5412-343B-8969-254F3AC559B8
   Disk / Partition UUID:    1738336E-68DD-46B1-997E-57469CF0472D

   Total Size:               338.0 GB (337984569344 Bytes) (exactly 660126112 512-Byte-Units)
   Volume Free Space:        0 B (0 Bytes) (exactly 0 512-Byte-Units)
   Device Block Size:        512 Bytes

   Read-Only Media:          No
   Read-Only Volume:         Not applicable (not mounted)

   Device Location:          Internal
   Removable Media:          No

   Solid State:              Yes

mount 使用卷标不起作用:

$ sudo mount -t hfs LABEL=Data /Users/user/test
GetMasterBlock: Error 2 opening LABEL=Data
GetMasterBlock: Error 2 opening LABEL=Data
mount_hfs: error on mount(): error = -1.
mount_hfs: No such file or directory

mount 使用卷UUID不能使用带引号或不带引号:

$ sudo mount -t hfs uuid=F8C88B2D-5412-343B-8969-254F3AC559B8 /Users/user/test
GetMasterBlock: Error 2 opening uuid=F8C88B2D-5412-343B-8969-254F3AC559B8
GetMasterBlock: Error 2 opening uuid=F8C88B2D-5412-343B-8969-254F3AC559B8
mount_hfs: error on mount(): error = -1.
mount_hfs: No such file or directory
$ sudo mount -t hfs UUID="F8C88B2D-5412-343B-8969-254F3AC559B8" /Users/user/test
GetMasterBlock: Error 2 opening UUID=F8C88B2D-5412-343B-8969-254F3AC559B8
GetMasterBlock: Error 2 opening UUID=F8C88B2D-5412-343B-8969-254F3AC559B8
mount_hfs: error on mount(): error = -1.
mount_hfs: No such file or directory

mount 使用卷标识符有效

mymac:~ user$ sudo mount -t hfs /dev/disk0s4 /Users/user/test

更新:

我的目标是mount/etc/fstab要将卷挂载到自定义挂载点时插入该行。


如您所知,该mount命令不能使用UUIDLABEL必须使用磁盘标识符,例如/dev/disk0s4。另外,也许maybeharry指出要使用OS X方法diskutil。要解决您的更新...但是fstab可以使用UUIDor LABEL,只需看手册页中的示例fstab。在终端类型中fstab,然后右键单击fstab并选择打开手册页,然后完整阅读它!:)
user3439894's

@ user3439894我尝试了这样的一行fstabUUID=<volume_uuid> /mount/point auto,然后运行sudo mount -a。发生了相同的错误:... mount_hfs: No such file or directory
biocyberman '16

第二个字段(fs_file)(挂载点)必须已经存在,对吗?
user3439894's

是的,它确实存在。
biocyberman

我使用没问题fstab,但是我总是至少使用前四个字段。在您的评论中,我看到您缺少第三个字段(fs_vfstype)。您是否将其省略fstab?您应该编辑问题,并确切显示您尝试过的内容fstab以及使用的编辑器。这就是说,没有我的挂载点其他的,则默认/ Volumes为其none设定。一旦看到您的编辑和尝试的挂载点,我将进行测试。
user3439894's

Answers:


17

使用OS X时,通常建议与diskutil磁盘相关的活动使用。

TL; DR:

要通过标识符挂载卷/磁盘:

diskutil mount /dev/diskXsY          # mounts just that volume
diskutil mountDisk /dev/diskX        # mounts the whole disk

要通过UUID挂载卷:

diskutil mount [Volume/Partition UUID]

要通过标签挂载卷:

diskutil mount [label]

说明

使用diskutil,节点标识符(/dev/diskXsY)可与UUID互换:在任何diskutil操作(例如eject)中,都可以指定UUID代替节点标识符。从手册页:

设备

上述任何命令的设备参数(除非明确要求,否则)通常可以是以下任意一个:

o磁盘标识符(请参阅下文)。磁盘*形式的任何条目,例如disk1s9。

o包含磁盘标识符的设备节点条目。/ dev / disk *形式的任何条目,例如/ dev / disk2。

o卷安装点。/ Volumes / *形式的任何条目,例如/ Volumes / Untitled。在大多数情况下,也接受“自定义”安装点,例如/ your / custom / mountpoint / here。

o上述任何卷安装点形式的URL形式。例如file:/// Volumes / Untitled或file:///。

o UUID。例如11111111-2222-3333-4444-555555555555形式的任何条目。UUID可以是IOKit派生自例如GPT映射的分区UUID的IOKit放置在IOMedia节点中的“媒体” UUID,也可以是AppleRAID(或CoreStorage)集(LV)或成员(PV)UUID。

从的man diskutil“设备”部分。


使用以下任一命令,获取这些标识符/ UUID /标签都很简单:

diskutil list                               # lists all connected volumes and their identifiers
diskutil info /dev/diskXsY | grep UUID      # gets the UUID of a connected volume

这些命令返回的值应类似于以下内容:

$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh SSD           499.4 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3

$ diskutil info /dev/diskXsY | grep UUID
Volume UUID:              1F340CD7-G071-4218-98DG-2D08G89CC57C
Disk / Partition UUID:    76E7G531-G6C3-5E37-C11B-BCEEC67D12G4

如上所示,可以从IDENTIFIER列中找到标识符,从列中找到标签NAME,并从任一UUID字段中找到UUID(两个UUID都将装入该卷)。

按标签:

$ diskutil mount Recovery\ HD
Volume Recovery HD on Recovery HD mounted

通过UUID:

$ diskutil mount 67EG87EB-CB01-4ED9-082D-303F63CF6394
Volume Recovery HD on 67EG87EB-CB01-4ED9-082D-303F63CF6394 mounted

通过磁盘标识符:

$ diskutil mount /dev/disk0s3
Volume Recovery HD on /dev/disk0s3 mounted

用于编辑OP问题的附加功能:安装到自定义路径

您可以使用diskutil mount-mountPoint选项执行此操作。从手册页:

挂载[readOnly] [-mountPoint路径]设备

挂载单个卷。如果指定了readOnly,则即使卷的基础文件系统和/或设备和/或介质支持写入,文件系统也将以只读方式安装;即使是超级用户也可能不会写它;这与安装(8)的rdonly选项相同。如果指定了-mountPoint,则将使用该路径而不是标准的/ Volumes / VolumeName路径作为卷文件内容的视图;该路径下的目录必须已经存在。

man diskutil,“动词”部分。

挂载到自定义挂载点的语法如下:

diskutil mount -mountPoint /path/to/custom/mountpoint [volume (identifier/UUID/label)]

请记住,/path/to/custom/mountpoint 该目录必须mount和一样,是一个目录,并且您的标识符/ UUID /标签特定于该卷(即/dev/diskXsY不是/dev/diskX)。无法使用来挂载到自定义挂载点diskutil mountDisk,一次只能使用一个卷。


感谢您的回答,您能否检查我的问题中的更新部分并加以解决?
biocyberman

@biocyberman更新了我的答案。如果它不能正确解决您的添加问题,请告诉我
也许

2

这是我用来在每次登录时自动将外部SSD装入包含我的iTunes媒体文件的Music文件夹中的方法。您没有确切说明外部装入的用途,因此其中一些可能不会成为您所需要的,但是再说一遍,这可能正是您要尝试做的。

如您的问题和@perhapsmaybeharry的回答中所述,该mount命令不支持UUID,因此diskutil推荐的实用程序也不支持。但是,该fstab文件确实支持UUID,因此您可以在其中存储安装参数,fstab然后diskutil从中读取参数fstab以安装驱动器。

  • 在中~/Music/iTunes/,创建用于安装点的文件夹。我用过SSD_Music
  • 使用sudo vifs编辑的fstab文件,添加以下为单线(编辑为UUID和USERNAME如适用),然后保存/退出。 UUID=F8C88B2D-5412-343B-8969-254F3AC559B8 /Users/USERNAME/Music/iTunes/SSD_Music hfs rw,noauto,noowners,nobrowse 0 0

    • noauto =在引导过程中不要挂载驱动器。我遇到了将驱动器安装为root而不是我的情况,因此最好等到您登录。
    • noowners =忽略卷的所有权。权限将从安装点继承。如果我不使用它,则装载的卷由root拥有,但子目录由我拥有。
    • nobrowse =不要在Finder边栏或桌面中显示磁盘。
  • 使用diskutil mount F8C88B2D-5412-343B-8969-254F3AC559B8注意:不要UUID=在此命令中包含前缀。
  • 希望它安装正确。检查它mount应该显示类似/dev/disk2s2 on /Users/USERNAME/Music/iTunes/SSD_Music (hfs, local, nodev, nosuid, journaled, noowners, nobrowse)
  • 如果要对iTunes执行此操作,则需要为该iTunes Media文件夹创建一个别名,使其指向已安装磁盘上的文件夹。
    • 如果iTunes正在运行,请退出
    • cd ~/Music/iTunes/
    • mv 'iTunes Media' 'iTunes Media-bak'
    • ln -s 'SSD_Music/iTunes Media' 'iTunes Media'
    • ditto 'iTunes Media-bak' 'iTunes Media'将您的媒体复制到新驱动器。如果您已经复制了它,请跳过此步骤。
  • 用以下命令卸载磁盘 diskutil unmount ~/Music/iTunes/SSD_Music

现在您可以通过UUID装入驱动器,让我们在登录时使其自动化。

  • 在中~/Library/LaunchAgents/,创建一个名为local.mount_SSD_Music.plist
  • 将以下XML复制/粘贴到新文件中,然后保存/退出。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Disabled</key>
        <false/>
        <key>KeepAlive</key>
        <false/>
        <key>Label</key>
        <string>local.mount_SSD_Music</string>
        <key>ProcessType</key>
        <string>Background</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/sbin/diskutil</string>
            <string>mount</string>
            <string>F8C88B2D-5412-343B-8969-254F3AC559B8</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
    </dict>
    </plist>
    
  • 确保驱动器已卸载

  • 使用带有的新LaunchAgent plist测试安装launchctl load ~/Library/LaunchAgents/local.mount_SSD_Music.plist。希望它再次安装无误。

因此,现在如果重新启动,则在登录时将自动安装外部驱动器。

希望这可以帮助!


0

我将我的一些评论合并为一个答案,因为我认为它可以解决fstab问题。

如您所知,该mount命令不能使用UUIDLABEL必须使用磁盘标识符,例如/dev/disk0s4。另外,也许maybeharry指出要使用OS X方法diskutil。要解决您的更新...但是fstab可以使用UUIDor LABEL,只需看手册页中的示例fstab。在终端类型中fstab,然后右键单击fstab并选择打开手册页。完整阅读!:)

我使用没问题fstab,但是我总是至少使用前四个字段。我发现您在评论中缺少第三个字段(fs_vfstype)。您是否将其省略fstab?您应该编辑问题,并确切显示您尝试过的内容fstab以及使用的编辑器。

尝试: UUID=1738336E-68DD-46B1-997E-57469CF0472D /mount/point hfs rw,auto哪里/mount/point是预先存在的目录。

我已经使用我的系统在系统上对此进行了测试UUIDUUID建议您尝试以上操作。

注意:只有在我包含第三个字段(fs_vfstype)时,它才会挂载到定义的挂载点,否则/Volumes即使存在第二个字段(fs_file)也会挂载到定义的挂载点。


我之前已经对此进行了测试,并且UUID=... /mount/point hfs rw,auto在El Capitan中安装了两个相同的卷:1. / mount / point和2. / Volumes。
klanomath '16

@klanomath,不确定您要说的是什么,否则可能如我在回答中所说的那样起作用?还是您说它无论如何都安装两次?顺便说一句,我正在运行OS X 10.8.5。
user3439894's

@klanomath,我已经编辑了它,希望它更清晰。现在回到您的第一条评论,您是说在OS X 10.11下它将安装到自定义安装点,但是它也将默认位置安装第二个安装点/Volumes,仅添加一行fstab
user3439894's

是的,那是我的经验。我写了一个类似的答案,但后来我意识到该卷被显示了两次:在桌面上(即/ Volumes)和在fstab中定义的安装点(即/ Users / user / test)
klanomath

@klanomath,我从未看到您的答案,我猜您在看到此问题之前已将其删除。由于我正在运行OS X 10.8.5,并且没有要测试的OS X 10.11.x计算机,因此除了删除答案外,我无能为力。
user3439894's
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.