По-моему неплохо для первой темы. Конечно начинать нужно не с этого, но я как раз сейчас этим занимался и решил рассказать по горячим следам, пока ничего не забыл.
По умолчанию в 11.2 идет ядро 2.6.17. Набрав в консоли из-под рута yum install kernel, с подключенным репозиторием asplinux-updates, можно быстро и безболезненно обновить ядро до версии 2.6.20. Мне этого показалось мало, ядро не самое новое, да и поковыряться в нем самому нельзя. Поэтому я решил установить последнее стабильное ядро из исходников. Для этого скачиваем с kernel.org файл linux-2.6.22.2.tar.bz2 . Потом переносим файл в более подходящую папку.
mv linux-2.6.22.2.tar.bz2 /usr/src/
распаковываем архив
tar -xf linux-2.6.22.2.tar.bz2
переходим появившуюся папку
cd linux-2.6.22.2
там набираем
make menuconfig
Появляется меню конфигурирования ядра. Теперь начинается самое интересное. Многие советуют копировать конфиг с установленного ядра или брать готовые конфиги под определенную архитектуру. Так сделать конечно можно, но по своему опыту могу сказать, что это совсем не гарантирует, что ядро нормально запустится с первого раза. Мне, чтобы ядро нормально работало, потребовалось сделать следующее.
Первым делом я включил поддержку своего SATA контроллера. Без нее ядро выдавало Panic kernel в самом начале и грузиться наотрез отказывалось. Когда ядро начало загружаться, я просмотрел остальные сообщения об ошибках. Ошибки выдавали сервисы hidd, auditd и где-то в конце проскакивало сообщение об отсутствии fuse. Кроме этого не работал звук, сетевая карта и nvidia модуль ядра.
Исправлял я это таким образом
hidd - Networking -> Networking support -> Bluetooth subsystem support -> HIDP protocol support =Y
auditd - General setup -> Auditing support
fuse - File systems -> Filesystem in Userspace support
звук(звуковая карта PCI SB Audigy)
-> Device Drivers -> Sound -> Advanced Linux Sound Architecture -> PCI Devices -> Emu10k1 (SB Live!, Audigy, E-mu APS)
Когда вы закончили(в очередной раз?) конфигурирование ядра, нужно вбить магические команды:
make
sudo make install
make modules
sudo make modules install
В качестве загрузчика я использую ASPLoader, и этими командами ядро туда вписывается автоматически. Поэтому после них можно сразу перезагружаться и проверять работоспособность.
Потом у меня были небольшие проблемы с модулем nvidia. Для его установки нужно скачать последний бинарник с драйверами.
Потом нужно выключить Х-сервер и из-под рута в консоли этот файл запустить. По поводу выключения Х. Можно выставить в /etc/inittab id:3:initdefault: и перезагрузиться, но есть способ чуть быстрее, это нажать Ctrl+Alt+Backspace, а потом 2 раза Ctrl+C.
Следующей проблемой было то, что драйвер не смог найти исходники моего ядра. Это решается опцией --kernel-source-path=путь. После этого модуль без ошибок компилируется, но при перезагрузке выдает module not found. Я подозреваю где-то можно указать к нему путь, но я не нашел, поэтому просто сделал так.
mkdir /lib/modules/2.6.22.2/extra/
mkdir /lib/modules/2.6.22.2/extra/nvidia/
cp /lib/modules/2.6.22.2/video/nvidia.ko /lib/modules/2.6.22.2/extra/nvidia/
И тогда наконец-то все загрузилось и заработало.
Еще хотел сказать по поводу make clean. Во всех инструкциях по сборке ядер настойчиво рекомендуют делать его перед каждой пересборкой. Не могу сказать насколько это оправдано, но мне часто было лень из-за одного мааааленького дополнительного крестика ждать полной пересборки 20-30 мин. Поэтому я пересобирал без make clean. И работало все замечательно. Make clean я делал всего раза 3, когда у меня компиляция прерывалась на середине с ошибкой.
Вот собственно и все чем я хотел поделиться по этому вопросу. Если вспомню еще что-нибудь, обязательно допишу.
P.S. Забыл предупредить, это не инструкция "от и до", а всего лишь описание некоторых особенностей и оно предполагает, что читатель уже знаком с чем-то вроде этого, конкретнее этого, ну и вообще хорошо если здесь.
воскресенье, 12 августа 2007 г.
Сборка ядра.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий