
Когда я выключаю 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, а затем отправить команду «выключить питание» для указанного устройства.
Если вы хотите попробовать, вот как это сделать:
- Откройте Терминал (если он еще не открыт)
- Получите
UUID
для USB-дискаblkid
:
Это даст вам список всех ваших устройств, и вы будете искать то, которое представляет USB-диск(и), которые вы хотите отключить. Вы можете увидеть что-то похожее на это:sudo blkid
/dev/sdc1: UUID="AzJSHp-stpU-1ArB-YOMD-G7OD-l1Uz-xJhQIh" TYPE="ext4" PARTUUID="04592289-01"
- Создайте скрипт оболочки в своем домашнем каталоге (или где угодно):
Примечание:Вы можете использовать любой текстовый редактор.vi ~/sleep-disks.sh
vi
не является обязательным требованием. - Вставьте следующее:
Если у вас возникли трудности с использованием,#!/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. - Сохраните файл
- Убедитесь, что скрипт является исполняемым:
sudo chmod +x ~/sleep-disks.sh
- Создайте новую запись службы systemd:
sudo vi /etc/systemd/system/sleep-disks.service
- Вставьте следующее:
Примечание:Обязательно замените[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=
должен указывать на фактическое местоположение скрипта оболочки. - Сохраните файл
- Перезагрузите демон:
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, если вы ею никогда не пользуетесь.