外部硬盘无法关闭

外部硬盘无法关闭

当我关闭 Ubuntu 时,我的外部 USB 硬盘不会关闭(根本不会),同时仍关闭其他 USB 设备(例如我的耳机和键盘)。

如果有区别的话,我有一块 B365M DS3H WIFI 主板。

硬盘在 Windows 下正常关闭。

如何才能让它正常关机?

编辑:即使关闭硬盘并正常关机,关机后它仍然会在不应该通电的情况下通电。

答案1

这似乎是您的技嘉主板称为“开/关充电”. 从该功能的描述来看:

GIGABYTE 的最新主板配备了 ON/OFF 充电技术,不仅能为 iPhone、iPad 或 iPod Touch 充电,还能快速充电。此外,它甚至可以在 PC 关闭时充电,因此,即使您在同步音乐后忘记将其插入充电器,在需要时它也会充满电。

[...]

* 最多可同时为 3 台设备充电。充电电流可能因 PSU 5V 待机规格而异。

由于主板不太可能具体来说对于基于 USB 设备制造商 ID 的 Apple 设备,我敢说主板只会为最多三个 USB 端口提供 5V 不间断电源,无论机器是否处于开机状态。如果是这种情况,那么除非明确给出命令,否则外部驱动器不会知道关闭自身。

因为您说过当 Windows 关闭时驱动器将正常关闭,这让我想到驱动器正在等待来自主机操作系统的命令,而 Ubuntu 可能由于某种原因没有发送该命令(某些驱动器等待,power-off而其他驱动器等待eject)。

一种可能的解决方案是编写一个脚本,每当系统进入关机周期时运行,首先卸载 USB 分区,然后向给定设备发送“关机”命令。

如果您想尝试一下,请按以下步骤操作:

  1. 打开终端(如果尚未打开)
  2. 使用以下命令获取UUIDUSB 磁盘blkid
    sudo blkid
    
    这将为您提供所有设备的列表,您将寻找代表要关闭的 USB 磁盘的设备。您可能会看到类似以下内容:
    /dev/sdc1: UUID="AzJSHp-stpU-1ArB-YOMD-G7OD-l1Uz-xJhQIh" TYPE="ext4" PARTUUID="04592289-01"
    
     
  3. 在你的主目录(或者任何地方)创建一个 shell 脚本:
    vi ~/sleep-disks.sh
    
    笔记:请随意使用任何文本编辑器。 vi 不是要求。
  4. 粘贴以下内容:
    #!/bin/sh
    
    sudo hdparm -Y /dev/disk/by-uuid/<disk-uuid>
    exit 0
    
    如果您使用时遇到问题,hdparm可以使用此方法:
    #!/bin/sh
    
    disk_uuid="<disk-uuid>"
    
    udisksctl unmount -b /dev/disk/by-uuid/${disk_uuid}
    udisksctl power-off -b /dev/disk/by-uuid/${disk_uuid}
    
    exit 0
    
    笔记:务必更换 <disk-uuid> 使用步骤 1 中确定的适当值。
  5. 保存文件
  6. 确保脚本可执行:
    sudo chmod +x ~/sleep-disks.sh
    
  7. 创建新的 systemd 服务记录:
    sudo vi /etc/systemd/system/sleep-disks.service
    
  8. 粘贴以下内容:
    [Unit]
    Description=Shut down external disks
    DefaultDependencies=no
    Before=shutdown.target reboot.target halt.target
    # This works because it is installed in the target and will be
    #   executed before the target state is entered
    # Also consider kexec.target
    
    [Service]
    Type=oneshot
    User=<YOUR_USER>
    Group=<YOUR_USER>
    ExecStart=/home/<YOUR_USER>/sleep-disks.sh
    
    [Install]
    WantedBy=halt.target reboot.target shutdown.target
    
    笔记:务必更换 <YOUR_USER> 使用您的实际用户名,以及 ExecStart= 应该指向 shell 脚本的实际位置。
  9. 保存文件
  10. 重新加载守护进程:
    sudo systemctl daemon-reload
    

这将确保sleep-disks.sh每次计算机被要求关闭、重启或暂停时运行脚本。

hdparm -Y命令指示外部磁盘降至最低功率状态,即“关闭”。文档

-Y     Force  an  IDE  drive to immediately enter the lowest power consumption
       sleep mode, causing it to shut down completely.  A hard or soft reset is
       required  before  the drive can be accessed again (the Linux IDE driver
       will automatically handle issuing a reset if/when needed).  The current
       power mode status can be checked using the -C option.

udisksctl unmount将保证磁盘被卸载,因此udisksctl power-off将关闭磁盘的电源。

或者……如果你从来不用,也许你可以禁用 BIOS 中的“ON/OFF Charge”功能

相关内容