Как включить поддержку TRIM для SSD сторонних производителей в Mac OS X
Тема будет актуальна в первую очередь владельцам старых маков, когда нет возможности установить OS X Yosemite (10.10.4) или новее, но вы решили дать своему компьютеру или ноутбуку вторую жизнь, заменив обычный диск на SSD. Впрочем, для владельцев более свежих устройств тоже найдется полезная информация, если вы самостоятельно делали апгрейд и установили сторонний SSD.
Поддержка TRIM появилась с выходом Windows 7, а в Mac OS X начиная с версии 10.6.6. Однако Apple и тут отличилась, включив поддержку данной команды исключительно для оригинальных дисков, поставляемых вместе с компьютерами Mac, любые сторонние диски этой возможности оказались лишены.
Как такое возможно? Дело в том, что за работу команды TRIM в операционной системе отвечает драйвер, в Mac OS эта роль возложена на расширения ядра — kext (kernel extension) IOAHCIFamily.kext. Тут то Apple и подложила свинью любителям самостоятельно апгрейда, проверяя наличие строки «APPLE SSD» в прошивке твердотельного накопителя. Если подобной метки не находилось, то досвидули — никакого TRIM’а для этого накопителя не будет.
Счастье пришло с выходом OS X Yosemite (10.10.4), где поддержка TRIM стала доступна для любых сторонних SSD (по умолчанию команда может быть отключена). Для ее активации достаточно в терминале ввести всего одну команду:
sudo trimforce enable
Еще раз обращаю внимание, что активировать TRIM необходимо только при установке сторонних SSD в Mac. Если накопитель был установлен изначально, то он работает в оптимальном режиме по умолчанию.
Назревает вопрос, откуда вдруг такая щедрость? Дело в том, что с новыми моделями ноутбуков Apple нашла другой путь навязывать свои фирменные комплектующие — каждое новое поколение современных Macbook теперь имеет собственный уникальный разъем подключения SSD, но об этом расскажу в одной из следующих статей.
Активация TRIM в Mac OS X (ниже 10.10.4) для любых SSD накопителей
Активировать TRIM для изначально неподдерживаемых SSD накопителей в MacOS всё-таки можно путём некоторой правки системного кекста IOAHCIFamily.kext, который отвечает за поддержку TRIM. Суть метода в следующем — в бинарнике кекста строчка «APPLE SSD» (встречается в двух местах) заменятся нулями. Таким образом логика его работы меняется на следующую: если искомая строка равна «ничего», то активируется TRIM для этого накопителя.
Данный метод придуман не мной, описание можно найти в интернете. Я лично проверял работу этого метода на паре Mac mini, так что всё реально работает. Команды удобно выполнять в терминале копированием-вставкой, так вы избежите ошибок.
- Получаем права администратора (root’а):
- Делаем резервную копию оригинального драйвера:
- Патчим бинарный файл в кексте IOAHCIFamily.kext.
- Чистим кеш:
- Перезагружаемся.
sudo -s
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-orig
а) Для Mac OS X Snow Leopard и Lion (10.6.6-10.7.4), а так же Mountain Lion 10.8.0:
perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00).{9}(\x00\x51)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
б) Для OS X Lion и Mountain Lion (10.7.5 и выше, 10.8.1 и выше):
perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00{1,20})[^\x00]{9}(\x00{1,20}\x4D)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
kextcache -system-prelinked-kernel; kextcache -system-caches
Проверить заработал ли TRIM довольно легко, достаточно посмотреть информацию о системе, выбрав пункт Последовательный-ATA (Serial-ATA), где увидим строку «Поддержка TRIM».
Хочу отметитесь, что повторно выполнять патч нужно при любом обновлении Mac OS X (OS X 10.7.1 > 10.7.2 > 10.7.3 > ...), но думаю это не актуально. Восстановить оригинальный kext всегда можно из резервной копии, которую мы делали ранее:
sudo mv /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage-orig /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
После чего снова чистим кеш и перезагружаемся:
kextcache -system-prelinked-kernel; kextcache -system-caches
Комментариев: 5
С включенной функцией компьютер быстрее начнет работать?
Современные ssd от именитых производителей с нормальными контроллерами самостоятельно умеют выполнять эту функцию. Это интересно только тем кто пытается сэкономить на нормальном диске и покупают всякие помои. В новых дисках с 2015 модельного года там всё по умолчанию в контроллере.
MacBook Air 13" 2015 года, ОС версии 10.12, установлен BootCamp и Windows 10, после года использования Windows, диск стал заметно медленно работать, прогнал тест на чтение в HDTune, тест скорости показал интересную картину периодически на всем объеме диска скорость резко менялась от 100МБ/с до 250МБ/с, такие прямоугольные площадки на графике. Сделал полную оптимизацию с помощью UltraDefrag, теперь с начала графика скорость 350МБ/С, затем на объеме 20ГБ скачек до 780МБ/с, затем на объеме 60ГБ падение снова до 350МБ/с и с этой скоростью до самого конца диска. Как я понимаю из графика первые 20ГБ = участку с данными и системой МАК ОС (в системе показывает занятое место в 17ГБ), второй участок с 780МБ/с это пустой участок в МАК ОС, начиная с 61ГБ идет участок с данными и ОС Windows.
Что хотел спросить:
1. Windows 10 не инициирует TRIM получается, или эта команда запрещена в BootCamp?
2. Почему скорость на всем участке сильно неравномерная?
Что можно сделать в этой ситуации?
Здравствуйте. Нужен совет
после исполнения п. 4. Чистим кеш:
kextcache -system-prelinked-kernel; kextcache -system-caches
приходит сообщение:
kextcache: illegal option -- y
usage: kextcache [-a arch] [-c kernel_cache_filename] [-e] [-F] [-h] [-k]
[-K kernel_filename] [-l | -L] [-r] [-m mkext_filename] [-n | -N]
[-r] [-s | -S] [-t] [-v [1-6]] [-z] [kext_or_directory] ...
kextcache [-v [#]] [-f] -u volume
kextcache [-v [#]] -U volume
Что надо сделать?
Благодарю за информацию imac 2017/32gb только поставил IOS 13.1 (22C65) Samsung SSD 870 QVO 1TB скорость тестировал программой Blackmagic Disk Speed Test (рекомендует аппл для тестирования) итого запись 482 чтение 513 до включения трим 482 чтение 497 прирост есть тестируем дальше
-----
Подписывайтесь на Телеграмм канал Доступная Недвижимость https://t.me/dostupned