Установка кастомного ядра 3.6.2-pf на ноутбук HP 635 (AMD E-450 APU)

supported_features.png

Универсальные ядра хороши своей универсальностью, как ни банально это звучит. Поставил на что угодно - заработало. Однако это неоспоримое преимущество может стать и недостатком. Как в моём случае - являясь счастливым обладателем не самого быстрого процессора вкупе с интегрированной графикой, и имея при этом порочную тягу к красивому рабочему столу, чтобы оно не тормозило, приходится прилагать дополнительные усилия. Иногда довольно значительные.

Собственно, претензии к стоковому ядру следующие:

  • неудовлетворительная работа стандартных планировщиков. Не в курсе, как там оно на 4096 процессорах, но на моих двух все имеющиеся в стоке планировщики работают в диапазоне от плохо до отвратительно, что с ними ни делай. Это касается как процессорного планировщика, так и планировщика в/в. Бился с iowait-ами долго и упорно, безусловная победа осталась за ними. При интенсивной работе с диском (проигрывание тяжёлого видео + торренты + раздача интернета) - iowait до 85-87% на процессор. Не знаю, что они там намудрили, но там, где ядра 2.4 бодро справлялись, 2.6 и последующие сливают безоговорочно. Шаманство с ionice и параметрами планировщика ситуацию улучшило незначительно. Помогло бы включение threadirqs, но при включении оного через полдня отпадает одна сетевая карта с руганью IRQ 18 - nobody cares. Подискутировал этот вопрос с Аланом - nobody cares, включая Алана. Пришлось, скрепя сердце, вырубить.
  • неизвестно откуда берущиеся огромные тормоза при работе с сетью и флешками. Начинает бодро, а под конец - как через модем. После записи нескольких Гб на SD карточку отмонтируется последняя до минуты. WTF???
  • мой радеон активно пилят. Драйверы, особенно в области 3D, развиваются очень интенсивно. На пороге OpenCL, что тоже довольно интересно - по работе приходится обрабатывать изображения. А проц не самый быстрый - GPU просто просится. (кстати, если кому-нибудь взбредёт в голову тот же iptables перевести на OpenCL - будет просто здорово. Однако, в ближайшем будущем это не светит - как минимум надо, чтобы ядро компилировалось llvm. Проект такой есть, но готового к употреблению продукта пока нет). Короче, чем новее ядро/драйверы/mesa, тем мне интереснее.
  • и, в последнюю очередь, но всё же… Явная избыточность - включена не только поддержка отсутствующего у меня железа, но и огромного количества ненужных мне на ноутбуке функций. Плюс оптимизация “для всего” явно хуже оптимизации под конкретную задачу.

Итак… Неохота, но придётся лезть в ядро.
Выбор пал на pf-kernel, как на максимально подходящее, для которого есть живой (и свежий!) ебилд. У zen набор патчей похожий, но с версиями неразбериха (= я так и не разобрался), а патчить каждый раз ручками влом. По крайней мере, пока.

Как основа были взяты конфиги текущего 3.3.3-calculate и Kernel Seed для сравнения (http://www.kernel-seeds.org/). На том же сайте недописанные, к сожалению, инструкции по конфигурированию. Плюс всезнающий гугл, разумеется. Весь процесс занял больше месяца долгими зимними вечерами.

ГРАБЛИ.

Свежесобранное без initrd ядро при запуске, разумеется, запаниковало, высыпав на экран разноцветный мусор (а кто бы сомневался?)
После нескольких дней интенсивного гугления оказалось, что:
# Нужно включать в ядро не только родные прошивки (сиречь radeon/PALM*), но также и весь родственный набор. Нелогично, но иначе не работает. Баг, однако. Не у одного меня так.
# Нужно выключить нафиг всё, связанное с фреймбуфером. Вообще всё. Сам фреймбуфер конфигуратор выключить не даёт, и этого достаточно, чтобы лицезреть процесс загрузки в высоком разрешении.
# Нужно убрать из параметров запуска ядра всё, связанное с видео и фреймбуфером и вписать туда video=1366x768-3260 radeon.modeset=1@ Казалось бы, есть специальный параметр CONFIG_DRM_RADEON_KMS=y, ан нет. Без этого паникует.
# 4. Без initrd никаких UUID. Явное указание раздела спасёт отца русской демократии.

После этого ядро наконец запустилось и заработало. Но без OpenCL. Виной была “повышающая производительность” опция ColorTiling2D в xorg.conf, добавленная “впрок”, т.к. на 3.3.3 никакой разницы замечено не было. А тут вот появилась… Закомментировал - и всё встало на свои места.

Уже пару дней работает (тьфу, тьфу, тьфу) стабильно.

ЗАМЕЧЕННЫЕ ПРОБЛЕМЫ.

  1. Не работает autofs. Каталоги видит, но при попытке зайти выдает

    [kanyck: /usr/src/linux]$ cd /net/deb/export
    [kanyck: /net/deb/export]$ ll
    ls: невозможно получить доступ к movies: Устройство или ресурс занято
    ls: невозможно получить доступ к Music: Устройство или ресурс занято
    ls: невозможно получить доступ к Audio: Устройство или ресурс занято
    ls: невозможно получить доступ к Downloads: Устройство или ресурс занято
    ls: невозможно получить доступ к Hotplug: Устройство или ресурс занято
    ls: невозможно получить доступ к stuff: Устройство или ресурс занято
    итого 0
    ??? ? ? ? ? ? Audio
    ??? ? ? ? ? ? Downloads
    ??? ? ? ? ? ? Hotplug
    ??? ? ? ? ? ? movies
    ??? ? ? ? ? ? Music
    ??? ? ? ? ? ? stuff
    [kanyck: /net/deb/export]$

И что самое неприятное, после такого эксперимента shutdown виснет на попытке localmount отмонтировать корень… а ручками NFS монтируется нормально…

Что-то явно забыл включить в ядре, но вот что??? (Точно не AUTOFS4_FS. Это включено)))

2. Мелочь, не неудобно. При отключении кнопкой вайфая диодик не меняет цвет. Перерыл весь конфиг - какая опция за это отвечает - не нашёл. В кальковском работало.

А в остальном - впечатления исключительно положительные пока. Помимо на глаз заметной лучшей отзывчивости, особенно под нагрузкой (за что и боролись), в качестве бонуса выросла и производительность по сравнению с 3.3.3-calculate, несмотря на 1000Hz + NO_HZ - вероятно в т.ч. за счёт уменьшения паразитных задержек (сиречь бессмысленных iowait-ов, привет 12309). Полностью исчезли фризы при отмонтировании флешек, графика ускорилась процентов на 20. На очереди покорение mesa 9.0. У меня не заработала (точнее, заработала, но с 5FPS)))

UPD: в связи с багом в autofs пришлось откатиться на pf-3.4.6. Сижу на нём уже почти месяц. Работает хорошо, хотя периодически ядро умирает после suspend-a, но стандартное 3.3.3 делало то же самое. Зато напрочь перестал отваливаться тачпад после сильных перегрузок (вероятно, до этого доходило дело, когда включался двухэтажный swap плюс загрузка по 5-6 задач в очереди на процессор и комп тупил настолько, что начинали теряться события, отчего у тачпада сносило крышу).

Mesa 9.0 заработала после отключения MLAA, сдуру мною включённого. Ну кто же знал, что фраза “0 to disable, 8 to default quality” на практике означает “включать индивидуально, только для игр в случае крайней необходимости, а default таки 0”? Спасибо разработчикам за разъяснения. Хотя сам виноват: “default quality” вовсе не означает “defaul mode”, как мне вначале показалось.

И да, в xf86-video-ati 7.0.0 + Mesa 9.0 ColorTiling2D нормально заработал. С ним действительно побыстрее.

Теперь осталось дождаться, пока починят autofs…