Je Samsung un ordinateur portable (chronos s7) avec un disque dur SATA sur le bus ata:1
, ce qui est détecté comme /dev/sda
, un 8G SSD ata:2
, /dev/sdb
et divers autres dispositifs sur le reste de l' interface SATA.
Le problème est que le disque SSD est
- soudé à la carte principale (inamovible)
- éclaté (il donne juste des erreurs d'E / S pour toute opération)
- il n'apparaît pas dans le bios (probablement parce qu'il est cassé)
Maintenant ce disque:
- retarde le démarrage de trois à cinq minutes en essayant de sonder le disque défaillant, ce qui est ennuyeux;
- mais le plus ennuyeux est que le système ne parvient pas à suspendre en raison d'une
/dev/sdb
défaillance.
Notez que je peux vivre avec le retard au démarrage --- ce qui m'inquiète, c'est la reprise / suspension.
La question est donc: puis-je dire au noyau d'éviter même de sonder le périphérique sur ata: 2?
Dans un noyau plus ancien (<3.0), quand j'étais encore capable de creuser un peu dans la source, il y avait un paramètre de ligne de commande du style hdb=ignore
qui aurait fait l'affaire.
J'ai essayé toutes les astuces proposées ci-dessous avec udev
et libata:force
les paramètres du noyau, en vain. Plus précisément, les éléments suivants ne fonctionnent pas:
Ajout à l'un des
/etc/udev/rules.d/
fichiers suivants (en début d'exécution comme00-ignoredisk.rules
ou tardivement99-ignoredisk.rules
ou aux deux endroits)SUBSYSTEMS=="scsi", DRIVERS=="sd", ATTRS{rev}=="SSD ", ATTRS{model}=="SanDisk iSSD P4 ", ENV{UDISKS_IGNORE}="1"
ni
KERNEL=="sdb", ENV{UDISKS_IGNORE}="1"
ni beaucoup de solutions intermédiaires --- cela rend le disque inaccessible après le démarrage, mais il est testé au démarrage, et toujours vérifié lors de la suspension --- provoquant l'échec de la suspension.
Modification des fichiers système
/lib/udev/rules.d/60-persistent-storage.rules
(etudisks
,udisks2
) modificationKERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-|md", GOTO="persistent_storage_end"
à
KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-|md|sdb*", GOTO="persistent_storage_end"
encore une fois, cela a un certain effet, masquant le disque de l'espace utilisateur, mais le disque est toujours visible pour le noyau.
Le démarrage avec toutes les combinaisons possibles (enfin, beaucoup d'entre elles) des
libata:force
paramètres (trouvés par exemple ici ) afin de désactiver le DMA, la vitesse inférieure ou quoi que ce soit sur le disque défaillant --- ne fonctionne pas. Le paramètre est utilisé, mais le disque est toujours sondé et échoue.udevadm info -a -n /dev/sdb
Collé complet sur http://paste.ubuntu.com/6186145/smartctl -i /dev/sdb -T permissive
donne:root@samsung-romano:/home/romano# smartctl -i /dev/sdb -T permissive smartctl 5.43 2012-06-30 r3573 [x86_64-linux-3.8.0-31-generic] (local build) Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net Vendor: /1:0:0:0 Product: User Capacity: 600,332,565,813,390,450 bytes [600 PB] Logical block size: 774843950 bytes >> Terminate command early due to bad response to IEC mode page
ce qui est clairement faux. Cependant:
root@samsung-romano:/home/romano# fdisk -b 512 -C 970 -H 256 -S 63 /dev/sdb fdisk: unable to read /dev/sdb: Input/output error
(Données SSD de http://ubuntuforums.org/showthread.php?t=1935699&p=11739579#post11739579 ).
/etc/fstab
? Parce que le retard au démarrage pourrait être causé plus tôt par le noyau ou udev, ce qui semble être le cas, mais aussi plus tard par fsck, lors de la lecturefstab
.Réponses:
libata
n'a pas du tout d'option noprobe; c'était une option IDE héritée ...Mais je suis allé et j'ai écrit un correctif de noyau pour vous qui l'implémente. Il 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 manuellement en toute sécurité sans cette ligne).
Mise à jour Le correctif est maintenant en amont (au moins dans le noyau stable 3.12.7). Il se trouve dans le noyau standard distribué avec Ubuntu 14.04 (qui est basé sur 3.13-stable).
Une fois le patch installé, ajouter
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 du périphérique peut aider (évidemment, vous devez vérifier les messages du noyau avant d' ajouter les paramètres de démarrage):
Le nombre important est le
ata2.00
dans la première ligne ci-dessus.la source
Les problèmes matériels ont une solution matérielle physique. Avez-vous envisagé de dessouder ou de couper l'alimentation du lecteur?
EDIT: Ok si ce n'est pas une option que les gens utilisent avant de connecter à chaud un disque dur. Vous pouvez l'utiliser pour désactiver votre lecteur.
Notez que tout autre processus peut forcer une analyse du bus SATA, puis le faire revenir. Essayez de le faire juste avant d'hiberner l'ordinateur portable.
Édité par OP: cela a fonctionné . J'ai ajouté le fichier suivant:
avec contenu:
... et maintenant le système se suspend (et reprend) correctement.
la source
delete
.BIOS
Cet appareil n'apparaît-il d'aucune façon via votre BIOS?
Souvent, les disques durs sont configurés en mode "auto", je vérifie que ces appareils sont désactivés et vont même jusqu'à autoriser explicitement le seul disque dur et désactiver tout le reste.
Options de démarrage du noyau
Souvent, vous pouvez désactiver la détection automatique de divers sous-systèmes par le noyau Linux de démarrage en utilisant différentes options de démarrage qui peuvent lui être transmises en tant que commutateurs.
La plupart des options, sinon toutes, sont répertoriées ici:
Linux dans un livre bref
Vous voudrez peut-être parcourir le livre O'Reilly, Linux Kernel in a Nutshell , en particulier le chapitre 7: Personnalisation d'un noyau .
Ce livre est mis à disposition gratuitement par son auteur, Greg Kroah-Hartman, sur son site personnel. Le livre entier peut également être téléchargé.
la source
noide=....
. Il existe de nombreuses autres options que vous pouvez fournir au noyau de démarrage pour désactiver la détection automatique du matériel.hdb=noprobe
options ne sont pas passées en revue à scsi (je pense qu'elles ont été éliminées autour de 2.6.x), donc il n'existe pas (dès que je sais) une optionsdb=noprobe
ouata:2=noprobe
. J'ai lu (presque) tout lekernel-parameters.txt
fichier dans la source du noyau et je ne trouve pas le bon paramètre. Si vous connaissez quelqu'un, veuillez le dire dans une réponse --- je vous en serai très reconnaissant.libata.dma=
sudo hdparm -I /dev/sdX
Méthode Linux pour vérifier le verrouillage: (avec X = a..z; vous devez bien sûr savoir quel périphérique est votre lecteur). A la fin de la (grande) sortie, vous devez être en mesure de lire au cours des 10 dernières lignes:*not* locked
.la source