Deux solutions ici: l'une est rapide à appliquer, même si elle ne résout le problème que partiellement, l'autre est la solution complète mais vous oblige à compiler votre propre noyau.
La bonne réponse est un correctif du noyau.
Robin H. Johnson a écrit un correctif pour le pilote du noyau SATA (le trouver dans le site d'échange de pile Unix / Linux ) qui cache complètement le lecteur.
Mise à jour Le patch est maintenant en amont (au moins dans le noyau stable 3.12.7), voir le dépôt git . J'ai demandé un backport dans le tableau de bord Ubuntu .
Une fois le patch installé, ajouter
libata.force=2.00:disable
aux paramètres de démarrage du noyau masquera le disque du noyau Linux. Vérifiez que le numéro est correct; la recherche du nom de l'appareil peut aider:
(0)samsung-romano:~% dmesg | grep iSSD
[ 1.493279] ata2.00: ATA-8: SanDisk iSSD P4 8GB, SSD 9.14, max UDMA/133
[ 1.494236] scsi 1:0:0:0: Direct-Access ATA SanDisk iSSD P4 SSD PQ: 0 ANSI: 5
solution de contournement
Répondu par Emmanuel, utilisateur d'Unix StackExchange, dans https://unix.stackexchange.com/a/103742/52205
Vous pouvez au moins résoudre le problème de suspension en exécutant la commande
echo 1 > /sys/block/sdb/device/delete
avant de suspendre.
Pour l'automatiser, j'ai ajouté le fichier suivant: (notez les drapeaux, il doit être exécutable)
-rwxr-xr-x 1 root root 204 Dec 6 16:03 99_delete_sdb
dans l'annuaire /etc/pm/sleep.d/
#!/bin/sh
# Tell grub that resume was successful
case "$1" in
suspend|hibernate)
if [ -d /sys/block/sdb ]; then
echo Deleting device sdb
echo 1 > /sys/block/sdb/device/delete
fi
;;
esac
... et maintenant le système se suspend (et reprend) correctement. J'ai ajouté l'extrait
if [ -d /sys/block/sdb ]; then
echo Deleting device sdb
echo 1 > /sys/block/sdb/device/delete
fi
à /etc/rc.local
trop, pour faire bonne mesure.
99_delete_sdb
le fichier exécutable? Dans/etc/rc0.d/
peut-être?Je suis allé et j'ai écrit un correctif de noyau pour vous qui implémente la possibilité de désactiver un seul disque au démarrage, afin que vous n'ayez pas à vous soucier de le désactiver dans udev, ni d'attendre lors du démarrage initial.
http://dev.gentoo.org/~robbat2/patches/3.13-libata-disable-disks-by-param.patch
Devrait s'appliquer à de nombreux noyaux très facilement (la ligne ci-dessus a été ajoutée le 2013-05-21 / v3.10-rc1 *, mais peut être appliquée en toute sécurité manuellement sans cette ligne).
la source
sdb=disable
tant que paramètre du noyau).grep iSSD /var/log/syslog
devrait vous donner un indice).J'ai fait des recherches et trouvé une solution qui peut être implémentée assez facilement sur Ubuntu. La distribution utilise kmod, donc ce qui suit devrait fonctionner correctement sur cela et toute distribution qui utilise kmod.
Selon le pilote que vous utilisez, vous devrez le mettre sur liste noire si vous souhaitez désactiver tous les périphériques SATA. Essayez de
lsmod | grep sata
déterminer le ou les pilotes que vous utilisez. Ensuite, dans votre/etc/modprobe.d/
créez un nouveau fichier avececho blacklist (module) > blacklist.conf
pour l'ajouter à la liste noire. Reconstruisez vos initramfs avecmkinitramfs
pour qu'il prenne effet. Redémarrez.Alternativement, ajoutez simplement
modprobe.blacklist=(module)
à vos paramètres de noyau.la source