Ich habe einen Samsung-Laptop (Chronos s7) mit einer SATA-Festplatte am Bus ata:1
, die als /dev/sda
8G-SSD erkannt ata:2
wird /dev/sdb
, und verschiedene andere Geräte an der restlichen SATA-Schnittstelle.
Das Problem ist, dass die SSD-Platte ist
- mit der Hauptplatine verlötet (unbeweglich)
- kaputt (es gibt nur I / O-Fehler für jede Operation)
- es erscheint nicht im BIOS (wahrscheinlich, weil es kaputt ist)
Nun diese Scheibe:
- verzögert den Startvorgang um drei bis fünf Minuten beim Versuch, die fehlerhafte Festplatte zu untersuchen, was ärgerlich ist;
- Am ärgerlichsten ist jedoch, dass das System aufgrund eines
/dev/sdb
Fehlers nicht angehalten werden kann .
Beachten Sie, dass ich mit der Verzögerung beim Booten leben kann - was mich beunruhigt, ist die Sache mit dem Fortsetzen / Anhalten.
Die Frage ist also: Kann ich dem Kernel mitteilen, dass er das Gerät nicht einmal auf ata: 2 testen soll?
In einem älteren Kernel (<3.0) gab es, als ich noch ein bisschen in die Quelle graben konnte, einen Befehlszeilenparameter des Stils hdb=ignore
, der den Trick getan hätte.
Ich habe alle unten vorgeschlagenen Tricks mit udev
und libata:force
Kernel-Parametern ausprobiert , ohne Erfolg. Im Einzelnen funktioniert Folgendes nicht:
Hinzufügen
/etc/udev/rules.d/
einer Datei zu einer der folgenden Dateien (bei vorzeitiger Ausführung wie00-ignoredisk.rules
oder zu einem späteren Zeitpunkt99-ignoredisk.rules
oder an beiden Stellen)SUBSYSTEMS=="scsi", DRIVERS=="sd", ATTRS{rev}=="SSD ", ATTRS{model}=="SanDisk iSSD P4 ", ENV{UDISKS_IGNORE}="1"
Noch
KERNEL=="sdb", ENV{UDISKS_IGNORE}="1"
Weder viele Zwischenlösungen - Dadurch kann auf die Festplatte nach dem Start nicht zugegriffen werden, sie wird jedoch beim Start geprüft und beim Anhalten immer noch überprüft - was dazu führt, dass das Anhalten fehlschlägt.
Ändern der Systemdateien
/lib/udev/rules.d/60-persistent-storage.rules
(undudisks
,udisks2
)KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-|md", GOTO="persistent_storage_end"
zu
KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-|md|sdb*", GOTO="persistent_storage_end"
Auch hier hat dies einige Auswirkungen, da die Festplatte vor dem Benutzerbereich maskiert wird, die Festplatte jedoch weiterhin für den Kernel sichtbar ist.
Boote mit allen möglichen Kombinationen (na ja, viele von ihnen) des
libata:force
Parameters (zB gefunden hier , um zu deaktivieren DMA, niedriger Geschwindigkeit oder was auch immer wegen der fehlerhaften Festplatte) --- funktioniert nicht. Der Parameter wird verwendet, aber der Datenträger wird noch geprüft und fällt aus.Vollständig
udevadm info -a -n /dev/sdb
eingefügt an http://paste.ubuntu.com/6186145/smartctl -i /dev/sdb -T permissive
gibt: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
was eindeutig falsch ist. Dennoch:
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
(SSD-Daten von http://ubuntuforums.org/showthread.php?t=1935699&p=11739579#post11739579 ).
quelle
/etc/fstab
? Denn die Verzögerung beim Booten könnte früher durch den Kernel oder udev verursacht werden, was anscheinend der Fall ist, aber auch später durch fsck beim Lesenfstab
.Antworten:
libata
hat überhaupt keine Noprobe-Option; das war eine alte IDE-Option ...Aber ich habe einen Kernel- Patch für Sie geschrieben, der ihn implementiert. Es sollte sich sehr leicht auf viele Kernel anwenden lassen (die Zeile darüber wurde 2013-05-21 / v3.10-rc1 * hinzugefügt, kann aber ohne diese Zeile sicher manuell angewendet werden).
Update Der Patch ist jetzt upstream (zumindest in 3.12.7 Stable Kernel). Es ist im Standard-Kernel enthalten, der mit Ubuntu 14.04 (das auf 3.13-stable basiert) ausgeliefert wird.
Sobald der Patch installiert ist, wird er hinzugefügt
Wenn Sie auf die Kernel-Boot-Parameter klicken, wird die Festplatte vor dem Linux-Kernel verborgen. Überprüfen Sie nochmals, ob die Nummer korrekt ist. Das Suchen nach dem Gerätenamen kann hilfreich sein (natürlich müssen Sie die Kernelmeldungen überprüfen, bevor Sie die Boot-Parameter hinzufügen):
Die wichtige Nummer ist die
ata2.00
in der ersten Zeile oben.quelle
Hardwareprobleme haben physikalische Hardwarelösungen. Haben Sie darüber nachgedacht, die Stromversorgung des Laufwerks zu lösen oder zu unterbrechen?
BEARBEITEN: Ok, wenn dies keine Option ist, wird dies zuvor zum Hot-Pluging einer Festplatte verwendet. Damit können Sie Ihr Laufwerk deaktivieren.
Beachten Sie, dass jeder andere Prozess einen Scan des SATA-Busses erzwingen und ihn dann zurücksetzen kann. Versuchen Sie dies, bevor Sie den Laptop in den Ruhezustand versetzen.
Bearbeitet von OP: es hat funktioniert . Ich habe die folgende Datei hinzugefügt:
mit Inhalt:
... und jetzt wird das System korrekt angehalten (und fortgesetzt).
quelle
delete
.BIOS
Wird dieses Gerät in keiner Weise über Ihr BIOS angezeigt?
Oft werden Festplatten in einem "Auto" -Modus konfiguriert. Ich überprüfe, ob diese Geräte in einem deaktivierten Zustand sind, und aktiviere sogar explizit nur eine Festplatte und deaktiviere alles andere.
Kernel-Boot-Optionen
Oft können Sie verschiedene Subsysteme deaktivieren, damit sie vom bootenden Linux-Kernel nicht automatisch erkannt werden, indem Sie verschiedene Boot-Optionen verwenden, die als Switches an ihn übergeben werden können.
Die meisten, wenn nicht alle Optionen sind hier aufgelistet:
Linux in aller Kürze
Möglicherweise möchten Sie das O'Reilly-Buch Linux Kernel in Kürze lesen , insbesondere Kapitel 7: Anpassen eines Kernels .
Dieses Buch wird von seinem Autor Greg Kroah-Hartman auf seiner persönlichen Website kostenlos zur Verfügung gestellt. Das gesamte Buch kann ebenfalls heruntergeladen werden.
quelle
noide=....
. Es gibt eine Vielzahl weiterer Optionen, die Sie dem Boot-Kernel zur Verfügung stellen können, um die automatische Erkennung von Hardware zu deaktivieren.hdb=noprobe
Optionen wurden noch nicht an SCSI übergeben (ich glaube, sie wurden um 2.6.x entfernt), so dass es keine Optionsdb=noprobe
oder gibt (sobald ich weiß)ata:2=noprobe
. Ich habe (fast) die gesamtekernel-parameters.txt
Datei in der Kernelquelle gelesen und kann den richtigen Parameter nicht finden. Wenn Sie jemanden kennen, sagen Sie es bitte in einer Antwort --- Ich werde wirklich dankbar sein.libata.dma=
Linux-Methode zum Überprüfen der Sperre:
sudo hdparm -I /dev/sdX
(mit X = a..z; Sie müssen natürlich wissen, auf welchem Gerät sich Ihr Laufwerk befindet). Am Ende der (großen) ausgegeben, müssen Sie sich bei in den letzten 10 Zeilen zu lesen:*not* locked
.quelle