Внешний жесткий диск не выключается

Внешний жесткий диск не выключается

Когда я выключаю Ubuntu, мой внешний жесткий диск USB не выключается (вообще), при этом другие USB-устройства (например, наушники и клавиатура) продолжают отключаться.

У меня материнская плата B365M DS3H WIFI, если это имеет значение.

Жесткий диск нормально отключается в Windows.

Как сделать так, чтобы он нормально выключался?

Редактировать: даже после выключения жесткого диска и его обычного выключения он все равно получает питание, хотя после выключения не должен.

решение1

Похоже, это «особенность»ваша материнская плата Gigabyteназывается«ВКЛ/ВЫКЛ зарядка». Из описания функции:

Новейшие материнские платы GIGABYTE оснащены технологией ON/OFF Charge, которая позволяет вам не только заряжать iPhone, iPad или iPod Touch, но и выполнять быструю зарядку. В качестве дополнительного бонуса, его можно заряжать даже при выключенном ПК, так что даже если вы забудете подключить его к зарядному устройству после синхронизации музыки, он будет полностью заряжен, когда вам это понадобится.

[...]

* Одновременно можно заряжать максимум 3 устройства. Ток зарядки может меняться в зависимости от спецификации PSU 5V stand-by.

Так как маловероятно, что материнская плата ищетконкретнодля устройств Apple на основе идентификатора производителя USB-устройства я бы рискнул предположить, что материнская плата просто обеспечивает 5 В бесперебойного питания максимум для трех USB-портов независимо от того, включена машина или нет. Если это так, то внешний диск не будет знать, что нужно отключиться, если ему не будет дана специальная команда сделать это.

Поскольку вы сказали, что диск будет корректно останавливаться при завершении работы Windows, это наводит меня на мысль, что диск ждет команды от хостовой ОС, которую Ubuntu может не отправлять по какой-то причине (некоторые диски ждут , power-offа другие — eject).

Одним из возможных решений было бы написание скрипта, который запускается всякий раз, когда система входит в цикл выключения, чтобы сначала отмонтировать разделы USB, а затем отправить команду «выключить питание» для указанного устройства.

Если вы хотите попробовать, вот как это сделать:

  1. Откройте Терминал (если он еще не открыт)
  2. Получите UUIDдля USB-диска blkid:
    sudo blkid
    
    Это даст вам список всех ваших устройств, и вы будете искать то, которое представляет USB-диск(и), которые вы хотите отключить. Вы можете увидеть что-то похожее на это:
    /dev/sdc1: UUID="AzJSHp-stpU-1ArB-YOMD-G7OD-l1Uz-xJhQIh" TYPE="ext4" PARTUUID="04592289-01"
    
     
  3. Создайте скрипт оболочки в своем домашнем каталоге (или где угодно):
    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= должен указывать на фактическое местоположение скрипта оболочки.
  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, если вы ею никогда не пользуетесь.

Связанный контент