Опыт сборки ядра linux у меня напрочь отсутствует, в связи с этим я решил восполнить этот, поистине, недостойный пробел в образовании и поизучать вопрос.
Активное поскуливание в листе рассылке debian eee дало примерно следующий сценарий:
1. Устанавливаем пакет исходных текстов ядра с версией, совпадающей с версией текущего ядра. Посмотреть можно командой
uname -a
в командной строке.
2. После чего запускаем конфигуратор ядра командной
make menuconfig
Попадаем в весьма понятное меню настроек опций. Вообще-то говоря я особо не страдал головой и свистнул вот этот конфиг ядра.
3. После того, как настройка выполнена, в текущей директории появится файл конфигурации ядра.
Дальнейшие действия описаны в документации по Debian. Необходимо собрать deb-файл c поддержкой initrd (использовать соответствующую опцию). Внимание ! Для сборки ядра лучше использовать «большой» компьютер. Если на нем не установлен Debian, то можно установить его на виртуальную машину.
После сборки ядра нужно будет собрать еще
- Драйвера сетевого интерфейса
- Драйвера WiFi из пакета madwifi
- Драйвер видеокамеры
- Драйвер ACPI
Важное замечание ! При сборке make-файлы нужно подправить так, чтобы использовались header-файлы от вышеописаного ядра !! Иначе модули НЕ загрузятся.
Собранные файлы перекидываем на eee, устанавливаем deb через команду dpkg -i имя_пакета. После этого до перезагрузки закидываем файлы модулей в соотв. ядру директорию modules. Можно перегружаться, после логина в систему можно выполнить команду depmod -a.
В идеале все должно работать. Если не работает – пробуем вручную загрузить модули командой modprobe имя_модуля. Посмотреть модули можно командой lsmod. Эти команды выполняются под суперпользователем.
Зачем вообще пересобирать ядро ? В моем случае потребовалось включить 2 фичи – usb persistent (об этом ниже) и usb sleep (или как оно там – вобщем в конфигах лежит рядом с usb persistant). Последний нужен для того, чтобы «засыпать» порты usb, устройства на которых в данный момент неактивны. Обещают, что это сэкономит целый 1 ватт энергии.
Опция же USB_PERSISTANCE позволит держать порт включенным – это критично при использовании встроенного кардридера, если часть системы живет на нем или он используется для пространства подкачки.
С этой опцией все не так просто. Помимо включения в конфиге ядра необходимы еще патч ядра и скрипт, который собственно отключает или включает выбранное устройство.
Я черпал мудрость из форума на http://eeeuser.com. Ниже приложена копия треда форума (в качестве документации) + патч для ядра 2.6.хх + скрипт включающий/выключающий фичу.
Скрипт, включающий-выключающий USB persistant