Готовим Linux на Asus U31SD/P31SD и подобных | ||
Дистрибутивы > Ubuntu После приобретения обновки в виде Asus P31SD и последующей установки на него Linux было очень обидно увидеть всего 6 часов автономной работы вместо желаемых 10-12. На Windows обратно вернуться не удалось (тут даже cywgin не помог), поэтому было решено запастись кофе и занять ближайшие выходные решением этих проблем.
Рассматриваем решение на примере Ubuntu 11.10. Важная, для нас, часть конфигурации ноутбука: Процессор: Intel Core i3-2310M (Sandybridge) Видеоадаптер: Nvidia Geforce 520M (Nvidia Optimus) Итак, сразу после установки Linux мы видим следующие проблемы:
ЯркостьСимптом: подсветкой пытаются одновременно управлять хардварный модуль и программный модуль из DE в результате чего случаются скачки в случайном направлении. Проблемы с яркостью в ноутбуках очень распространены и разнообразны но практически все решаются одним методом: добавлением в параметры загрузки ядра acpi_backlight=vendor , который сигнализирует, что управлением яркостью занимается железо и програмно лезть туда не стоит.Открываем /etc/default/grub и вписываем параметр в GRUB_CMDLINE_LINUX , получится:
Сохраняем, обновляем конфигурацию grub ( sudo update-grub ), перезагружаемся и радуемся адекватному поведению подсветки.Режим снаСимптом: при отправке ноутбука в сон устройство яростно сопротивляется и, в конечном итоге, зависает. После недолгих поисков находим виновников: плохо-засыпающие USB-хабы. И рядом находим решение, хук для pm-utils :/etc/pm/sleep.d/20_custom-asus-u31sd:
Сохраняем, делаем исполняемым ( sudo chmod +x /etc/pm/sleep.d/20_custom-asus-u31sd ), проверяем.Работает? Почти. После выходи из сна яркость дисплея падает до минимума… Поправить оплошность можно в этом же хуке. Достать значение яркости можно где-то из /sys. Большинство драйвером называют параметры банально поэтому просто поищем там backlight:
Нашлось! После изучения внутренностей значение яркости оказалось в /sys/devices/platform/asus-nb-wmi/backlight/asus-nb-wmi/brightness . Допишем в предыдущий хук его сохранение и восстановление:
Снова проверяем и… работает! Теперь приступим к основному противнику, энергопотреблению. Повышенное потребление энергииСбивать аппетиты Linux будем аж в 3 этапа. 1. Дискретная графикаНоутбук оборудован двумя видеоадаптерами: интегрированной (Intel) и дискретной (Nvidia). Но не простой Nvidia, а работающей по технологии Nvidia Optimus. Той самой Optimus, поддержки которой в обозримом будущем в Linux не предвидится. Но слава open-sourc'у мир полон энтузиастов. Борьбой (а иногда и дружбой) с Optimus занимается Bumblebee. Они достигли хорошего прогресса:
Естественно проект полон костылей, но это все же лучше чем ничего. Займемся установкой:
К сожалению практически на каждом ноутбуке разная ACPI-команда включения/отключения видеокарты (большая таблица собрана здесь), поэтому управление питанием в Bumblebee по умолчанию выключено. Из таблицы выше берем команды и записываем их в /etc/bumblebee/cardoff и /etc/bumblebee/cardon соответственно:/etc/bumblebee/cardoff: Затем в /etc/bumblebee/bumblebee.conf включаем управление питанием:
и заставляем сервис завершаться (и соответственно выключать дискретную видеокарту) если его никто не использует:
Сохраняем, перезагружаемся, смотрим на потребление энергии — ощутимо уменьшилось. Прежде чем пойти дальше починим снова ждущий режим: дело в том, что при переходе в сон активный видеодрайвер (nvidia или nouveau) будем пытаться подготовить карту, но карта то у нас выключена. Решим просто и «в лоб»: в выше использованный хук добавим 2 команды:
Хук примет следующий вид:
2. Интегрированная видеокартаИгравшись с разными версиями ядер я случайно заметил уменьшенное энергопотребление на версиях до 2.6.39 включительно. Бросившись в поиск по этим параметрам я в своей догадке не ошибся. Проблема была обнаружена: виноват патч принятый в драйвер i915 в 3.0 ядре. Но, к счастью, его можно обойти без последствий. В уже известный /etc/default/grub дописываем параметр i915.i915_enable_rc6=1 . Строка расширится до:
Обновляем конфигурацию grub, перезагружаемся и смотрим на показания батареи. Теперь можно жить. А можно уменьшить еще! 3. Дополнительные мелкие твикиЗапустив powertop и применив все рекомендованные твики можно выжать еще 0,5-1 Wh, что на данном железе может дополнительно дать до часа автономной работы. Все твики от powertop собраны в следующем скрипте:
Сохраним его, к примеру, в /etc/acpi/power-u31sd.sh , сделаем исполняемым (sudo chmod +x /etc/acpi/power-u31sd.sh ), и повесим обработчик на событие battery . Для этого создадим файл, к примеру, /etc/acpi/events/u31sd-power-save , запишем туда:
Так же неплохо бы выполнить данный скрипт при загрузке: добавим его в /etc/rc.local перед exit 0 :
Настройка окончена. Официальный пруф: И результаты диаграммой: |
||
Комментарии | ||