Доброе время суток!
Спасибо автору поста «Активация TRIM для Mac OS Lion [SSD only]»!
Мне уже давно не нравится, что приходится патчить Mac OS для включения поддержки trim чужой программой, которая работает из-под пользователя root.
На базе поста «Активация TRIM для Mac OS Lion [SSD only]» я написал скрипт, который позволяет быстро и удобно включать поддержку trim после обновления системы, а также, рассказал как восстановить оригинальный файл IOAHCIBlockStorage и проверить, что же изменил скрипт.
1. Как восстановить оригинальный файл IOAHCIBlockStorage:
Переходим в шелл пользователя root:
Монтируем диск с ОС Lion:
Сохраняем текущий файл IOAHCIBlockStorage:
Восстанавливаем оригинальный файл:
2. Скрипт для включения/выключения поддержки trim.
Эти работы проводятся из-под обычного пользователя ОС (не root).
Сохраняем скрипт как trim_support.sh:
Назначаем права скрипту:
Чтобы включить поддержку TRIM для non-Apple SSD выполните:
Чтобы выключить поддержку TRIM для non-Apple SSD выполните:
Не забудьте перезагрузить компьютер после выполнения скрипта.
Чтобы убедиться, что ничего кроме строки «APPLE SSD» не было заменено, выполняем команды:
Надеюсь, данная информация будет вам полезной!
Спасибо автору поста «Активация TRIM для Mac OS Lion [SSD only]»!
Мне уже давно не нравится, что приходится патчить Mac OS для включения поддержки trim чужой программой, которая работает из-под пользователя root.
На базе поста «Активация TRIM для Mac OS Lion [SSD only]» я написал скрипт, который позволяет быстро и удобно включать поддержку trim после обновления системы, а также, рассказал как восстановить оригинальный файл IOAHCIBlockStorage и проверить, что же изменил скрипт.
1. Как восстановить оригинальный файл IOAHCIBlockStorage:
Переходим в шелл пользователя root:
sudo su -
Монтируем диск с ОС Lion:
diskutil mount Recovery\ HD
hdiutil mount /Volumes/Recovery\ HD/com.apple.recovery.boot/BaseSystem.dmg
Сохраняем текущий файл IOAHCIBlockStorage:
mv /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage.bck_$(date +%m%d%y)
Восстанавливаем оригинальный файл:
cp /Volumes/Mac\ OS\ X\ Base\ System/System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage \
/System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS
2. Скрипт для включения/выключения поддержки trim.
Эти работы проводятся из-под обычного пользователя ОС (не root).
Сохраняем скрипт как trim_support.sh:
#!/bin/bash
# Backup original file:
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_$(date +%m%d%y)
echo "Original IOAHCIBlockStorage backuped."
case $1 in
'enable')
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
echo "Trim support enabled!"
;;
'disable')
perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00).{9}(\x00\x51)|$1\x41\x50\x50\x4C\x45\x20\x53\x53\x44$2|sg' \
/System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
echo "Trim support disabled!"
;;
esac
echo "Please wait for kextcache work completion.."
kextcache -system-prelinked-kernel
kextcache -system-caches
echo
echo "### Please reboot your Mac! ###"
Назначаем права скрипту:
chmod 700 trim_support.sh
Чтобы включить поддержку TRIM для non-Apple SSD выполните:
sudo trim_support.sh enable
Чтобы выключить поддержку TRIM для non-Apple SSD выполните:
sudo trim_support.sh disable
Не забудьте перезагрузить компьютер после выполнения скрипта.
Чтобы убедиться, что ничего кроме строки «APPLE SSD» не было заменено, выполняем команды:
strings /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage.orig_$(date +%m%d%y) > ./IOAHCIBlockStorage.orig
strings /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage > ./IOAHCIBlockStorage.patched
echo "Difference between IOAHCIBlockStorage original and pathed:"
diff ./IOAHCIBlockStorage.orig ./IOAHCIBlockStorage.patched
localhost:programs admin$ diff ./IOAHCIBlockStorage.orig ./IOAHCIBlockStorage.patched
184d183
< APPLE SSD
Надеюсь, данная информация будет вам полезной!