Befehl zum Auslesen des Trim Status gesucht

TGY

Aktives Mitglied
Thread Starter
Dabei seit
12.04.2004
Beiträge
1.129
Reaktionspunkte
104
Hallo.

Ich habe eine SSD in meinen Mac eingebaut und Trim aktiviert.

Ich würde gerne mit Applescript (wahrscheinlich ein Terminal Befehl) den Trim Status auslesen,
um zu wissen, ob Trim für meine (nicht von Apple gekaufte) SSD aktuell aktiviert ist.

Vielen Dank.

TGY
 
system_profiler und dann etwas kreativ greppen.
 
system_profiler SPSerialATADataType | grep -E "TRIM"

Solltest du mehrere Platten haben, dann vlt. so, damit jeweils das Modell vor der TRIM Aussage steht:
system_profiler SPSerialATADataType | grep -E "Model|TRIM"
 
oder einfach im systemprofiler unter sata auf die ssd klicken
 
Und das hilft ihm wie genau nochmal?
 
Vielen Dank, Kaito (& auch oglimmer). Ich hatte es erst ohne grep versucht mit offset usw. Kaitos Lösung ist wirklich sehr gut und einfach. Falls es jemanden interessiert, ich benutze sie, um nach einem Neustart den TRIM Status überprüfen zu lassen, der ja nach einem OS Update bei (nicht von Apple gekauften) SSD meist wieder deaktiviert ist. Und ich vergesse dann regelmässig, TRIM wieder zu aktivieren. Hier mein Skript:

Code:
set sys_info to do shell script "system_profiler SPSerialATADataType | grep -E 'Samsung SSD|TRIM'"
if sys_info contains "TRIM Support" and sys_info does not contain "Yes" then
	display dialog "TRIM ist nicht aktiviert!" buttons "OK" default button 1 with icon stop
end if

Dann noch eine plist-Datei in ~/Library/LaunchAgents/ erstellen, eine wie diese z.B.:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>com.moi.trimcheck</string>
	<key>ProgramArguments</key>
	<array>
		<string>/usr/bin/osascript</string>
		<string>/Users/BENUTZERNAME/Pfad_zum_Skript/trimcheck.scpt</string>
	</array>
	<key>RunAtLoad</key>
	<true/>
</dict>
</plist>

Das wars. Also, nochmals vielen Dank für die Hilfe.
 
Hallo TGY,

vielen Dank für die diese Anregungen. Das Applescript habe ich eben auf meine SSD angepasst. Zwei Fragen habe ich noch:
- wann wird das Skript durch die plist in ~/Library/LaunchAgents/ ausgeführt? Nach jedem Neustart?
- Hast Du auch ein Skript geschrieben um den Trim Status zu ermöglichen, oder nimmst Du den "Trim enabler"?

Viele Grüße

André
 
Letzteres wäre kein Problem, es kann jedoch sein, dass sich der Befehl nach einem Update mal ändert, daher bin ich mir nicht sicher wie nützlich so ein automatisches Durchführen tatsächlich wäre.
In meiner bashrc hab ich folgende Funktion, mit der ich TRIM auf meinem MBP aktiviert habe:
Code:
function enable-trim {
    sudo cp "/System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage" "/System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage_original"
    sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00{1,20})[^\x00]{9}(\x00{1,20}\x54)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg' "/System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage"
    sudo touch /System/Library/Extensions/
}
Die erste Anweisung erstellt dabei eine Kopie der Datei IOAHCIBlockStorage (namens IOAHCIBlockStorage_original). Der zweite Befehl verändert einen Wert in der Datei. Sollte hier etwas schief gehen, kann man die veränderte Datei löschen und die Kopie wieder in den eigentlichen Namen umbenennen.
Der Knackpunkt ist der Wert, der verändert wird. Es könnte nach jedem Update passieren, dass hier etwas anderes gemacht werden müsste -- man weiß es nicht.
"TRIM Enabler" macht letztlich nichts anderes.
 
Hallo Kaito,

danke. Gibt es denn keine Möglichkeit den Namen der SSD in "APPLE SSD SM256E" umzubenennen? Dann könnte man sich doch den Austausch in der IOAHCIBlockStorage sparen, oder? ...

Viele Grüße

André
 
dann sieht er ob Trim aktiv ist oder nicht
Er wollte es aber nicht sehen, sondern programmatisch auswerten.


Code:
function enable-trim {
    sudo cp "/System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage" "/System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage_original"
    sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00{1,20})[^\x00]{9}(\x00{1,20}\x54)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg' "/System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage"
    sudo touch /System/Library/Extensions/
}

Kurze Erläuterung zu diesem etwas etwas kryptisch aussehenden Perlbefehl, man soll ja nichts ausführen, das man nicht kennt.
Diese Anweisung sucht nach einem String "(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00{1,20})[^\x00]{9}(\x00{1,20}\x54)" und ersetzt ihn durch "$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2".

Hier werden Regex genutzt, d.h. bei dem Suchstring handelt es sich eigentlich um folgendes (sprachlich ausgedrückt):
"fange mit \x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C an, danach kommen 1-20 mal \x00, danach kommt 9 mal etwas, das nicht \x00 ist, abschließend nochmal 1-20 mal \x00 gefolgt von \x54"

Ersetzt wird das mit:
"Anfang des Suchergebnisses, 9 mal \x00, Ende des Suchergebnisses"
Das ist etwas unpräzise: konkret handelt es sich bei $1 um alles, was innerhalb der ersten Klammer in der Suche eingeschlossen war, bei $2 entsprechend um alles in der zweiten Klammer.

----------

Wer der Sache etwas genauer auf die Spur kommen will, holt sich einen Hex Editor wie z.B. 0xED und öffnet darin die Datei, die der Befehl editieren soll, also /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage. Um da schnell hinzukommen empfiehlt es sich im "Öffnen" Dialog von 0xED "Shift+Cmd+G" zu drücken, damit der "Pfad öffnen" Dialog erscheint, worin man dann den Pfad zur gewollten Datei direkt einfügen kann.

Als nächstes machen wir die \x?? Kombinationen lesbarer. Hierbei handelt es sich um hexadezimale Angaben von ASCII Zeichen. Gibt viele Methoden das in etwas lesbares umzuwandeln. Am einfachsten: Terminal öffnen, "python" eintippen und bestätigen, nun folgendes eingeben:
print "\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C"
Als Ergebnis erhaltet ihr "Rotational". Mit Strg+D kommt ihr wieder aus python raus.

Dieses Wort, also "Rotational", kann man nun in die Textsuche von 0xED eingeben (oben rechts) und kommt an eine Stelle, in der in der geöffneten Datei "Rotational.APPLE SSD.Time..." steht.
Wenn ich euch nun nochmal das Suchmuster anschaut, stellt ihr fest, dass der Befehl das gefundene "Rotational" nimmt und alles bis hin zu, sowie nach "APPLE SSD", übernimmt, aber den "APPLE SSD" Teil verschwinden lässt.
Hier liegt der Knackpunkt: sollte Apple "Rotational" irgendwann zu "Rotational1", oder "APPLE SSD" zu "APPLE SSD5" ändern, geht das in die Hose.


Hallo Kaito,

danke. Gibt es denn keine Möglichkeit den Namen der SSD in "APPLE SSD SM256E" umzubenennen? Dann könnte man sich doch den Austausch in der IOAHCIBlockStorage sparen, oder? ...

Viele Grüße

André
Die Frage ist, ob das helfen würde? Wie du etwas weiter oben siehst, findet sich die Bezeichnung SM256E gar nicht an der kritischen Stelle in der Kext, die Information könnte also von anderer Stelle kommen. Um den Bezeichner einer HDD/SSD zu ändern... ich bin mir nicht sicher, aber da müsstest du eventuell an die Firmware ran. Wäre das so einfach möglich, wäre es die perfekte Lösung für alle, resistent gegen jegliche Updates. Ich glaube nicht, dass wir mit dem patchen von Binärfiles rumhantieren würden, wenn das ginge.
 
Hallo Kaito,

vielen Dank für diese ausführliche Erläuterung!!! Schade, die Hersteller der SSDs könnten das sicherlich in der Firmware anpassen. Dürfen die bestimmt nicht ;) Ich fühle mich mit so einer Lösung wie Du sie per Terminal Befehl vorschlägst wohler, als mit Anwendungen deren Vorgehen ich nicht durchschaue ... (Was natürlich nicht heisst, dass ich alle Anwendungen die ich nutze auch komplett durchschaue ;) )

Viele Grüße

André
 
Hallo André.

- wann wird das Skript durch die plist in ~/Library/LaunchAgents/ ausgeführt? Nach jedem Neustart?

Ganz genau, nach jedem Neustart.

Hast Du auch ein Skript geschrieben um den Trim Status zu ermöglichen, oder nimmst Du den "Trim enabler"?

Da sich anscheinend von OS Version zu Version immer mal wieder Details der Methode ändern, wie man TRIM für SSDs anderer Hersteller nachträglich aktiviert, überlasse ich das gerne Leuten, die sich darauf spezialisiert haben und spende denen lieber etwas via Paypal.
Gute Erfahrungen habe ich bis jetzt mit Chameleon SSD Optimizer gemacht. Funktioniert tadellos und wird bei Problemen mit neuen OS Versionen sehr schnell aktualisiert. Die Befehle, die die App ausführt, sind auf deren Homepage erläutert. Die macht auch nicht viel anderes als die /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext anzupassen. Als App aber vielleicht etwas komfortabler und wird aktuell gehalten, spart dir also etwas Arbeit.
 
Hallo TGY,
(...)nach jedem Neustart.(...)
Danke, dann werde ich auch die plist so wie Du sie beschrieben hast erzeugen und damit das Skript einbinden.

(...)Da sich anscheinend von OS Version zu Version immer mal wieder Details der Methode ändern, wie man TRIM für SSDs anderer Hersteller nachträglich aktiviert, (...)

ich hatte mich in der letzten Woche schon einmal damit beschäftigt und auf der Homepage von Cindori Software einen Hinweis gelesen und zitiere mich mal selber aus dem Thread hier:

(...)ich habe heute auf der Homepage des "Trim enablers" Cindori Software einen Eintrag bzgl. einer neuen Sicherheitsfunktion, namens "kext signing" die mit OS X Yosemite eingeführt wird gelesen. Bei "kext signing" handelt es sich offenbar um eine Abfrage, ob Kernel Erweiterungen nachträglich verändert wurden und verhindert dann die Ausführung der Kernel Erweiterung. Soweit ich das verstehe, ist "kext signing" aber optional ähnlich der Sicherheitseinstellungen zum App-Download. Zumindest für OS X 10.10 ist dann wohl die Ausführung des "Trim enablers" noch möglich, aber man sieht wohin der Weg geht ...(...

ich hoffe, dass Apple fremde SSDs nicht irgendwann ganz aussperrt. Ich habe nämlich heute eine 960 GB SSD für mein 13" MBPr (Late 2012) bestellt die ich morgen einbauen möchte. Ich plane damit eigentlich noch > 2 Jahre, also wahrscheinlich noch mit dem Yosemite Nachfolger, zu arbeiten ...

Viele Grüße und vielen Dank für die vielen Erläuterungen und Tipps

André
 
Hallo noch mal,

eine Frage habe ich noch: Was bedeutet dieser Eintrag in der plist?

(...)

Code:
(...)
	<string>com.moi.trimcheck</string>
(...)

(...)

Viele Grüße und vielen Dank

André
 
Hallo.

Ich habe eine SSD in meinen Mac eingebaut und Trim aktiviert.

Ich würde gerne mit Applescript (wahrscheinlich ein Terminal Befehl) den Trim Status auslesen,
um zu wissen, ob Trim für meine (nicht von Apple gekaufte) SSD aktuell aktiviert ist.

Vielen Dank.

TGY

warum so kompliziert? steht in den systeminformationen, ob trim aktiv ist oder nicht.
 
Ist das jetzt neuerdings Mode sich nur noch den ersten Post anzusehen?
Er hat nach etwas ganz bestimmten gefragt und dafür einen expliziten Grund (der später auch genannt wurde). Der Tipp "steht doch in den Systeminformationen" kommt nicht zum ersten mal und ist immer noch nicht hilfreich.
 
Zurück
Oben Unten