:: Компиляция ядра Linux
Автор: Krot
Итак, наконец, ты поставил себе Линух и сидишь под ним
вот уже который день/неделю/месяц (нужное подчеркнуть :) ).
Но вот продвинутый друг/подруга намекнул тебе (а может, ты и
сам догадался), что ядро твоей операционки, как бы это
помягче сказать... морально устарело и его требуется
обновить. Намекнуть то намекнул (догадаться то догадался), а
вот как это сделать? Не дрейфь, объясню "на пальцах"...
Итак... пристегнуть ремни и... прямым ходом на http://ftp.kernel.org,
а если влом тратить бабло на трафик или повремёнку, то
сливай с какого-нибудь диска (а на сэкономленные деньги купи
пива: отпраздновать твою первую компиляцию ядра :) ). С http://ftp.kernel.org
качаешь подходящую версию ядра... здесь скажу пару слов о
существующих ядрах Linux. Сейчас существуют, можно сказать,
четыре ветви развития ядер:
1. Ядра версии 2.4.xx - наиболее "качественные" на мой
взгляд ядра, xx - цифра, чем она выше, тем новее ядро (далее
везде: x - цифры версии слитого ядра).
2. Ядра версии 2.5.xx - так называемые экспериментальные,
нестабильные ядра, если ты в душе экспериментатор и в
детстве взрывал на балконе магний или селитру, можешь смело
качать :) , ощущения получишь незабываемые.
3. Ядра версии 2.2.xx - скажу честно, что ЭТО такое я не
знаю, не знаю и того, ПОЧЕМУ до сих пор развивается эта
ветвь, когда существует 2.4.xx. Себе я эти ядра не ставил,
так что советовать не буду.
4. Ядра версии 2.6.xx эти ядра вобрали в себя всё
наиболее стабильное из ветки 2.5.xx. Ядро работает
значительно быстрее всех остальных, но есть маленькое но:
новый формат модулей и как следствие проблемы с установкой
дров(всё описанное ниже к этой ветке не применимо).
Ядро слил? Слил... Теперь логинишься в систему под
root'ом. Далее, если у тебя дистриб "Красной шапки" или "Мандрэйка"
даёшь команду:
rpm -q kernel-headers kernel-source make dev86
Если эти rpm'ы не установлены, поставь их. Возможно, на
других дистрибах тоже придётся проверить их наличие.
Потом идёшь в папку, куда слил ядро (заметь папка должна
находиться на Linux-разделе, т. е. Ext2/Ext3/ReiserFS(нужное
подчеркнуть)) и даёшь команду:
tar zxvf имя_слитого_файла.tar.gz
Эта команда распакует ядро. Теперь идёшь в появившуюся
папку (что-то вроде linux-x.x.xx) и даёшь одну из следующих
команд, на выбор:
если ты сидишь под Иксами:
make xconfig
если ты - консольник:
make config
или
make menuconfig
Все эти команды запускают утилиту настройки будущего
ядра. На мой взгляд, наиболее удобна утилита, вызываемая
последней командой. Все эти тулзы делают ОДНО И ТОЖЕ и выбор
одной из них, определяется лишь личными предпочтениями.
По конфигурированию ядра могу дать лишь общие советы, т.
к. настройка ядра индивидуальна для каждого компа. Общие
советы:
1. Если у тебя PentiumPro/II/III/IV, Celeron или AMD K6 и
выше, включи поддержку MTRR;
2. Запрети установку модулей для чипсетов, которых у тебя
нет, например: CMD640, etc;
3. Разреши поддержку Generic PCI bus-master DMA и
использование DMA по умолчанию(Use DMA be defaults);
4. Разреши поддержку твоего чипсета, например: VIA82C586
для VIA VP2/3 и MVP3 материнских плат;
5. Разреши только те SCSI-контроллеры, которые у тебя
есть, если их у тебя нет, запрещай все нафиг;
6. Запрети все сетевые устройства, которых у тебя нет, и
поддержка которых тебе нафиг не сдалась;
7. Установи значение Unix98 PTYs равное 128;
8. Установи 'persistant dma buffer' в настройках звука;
9. Запрети все файловые системы, которые тебе не нужны,
оставь лишь те, которые у тебя действительно есть, например:
ISO 9660 CDROM, VFAT, Second extended fs, Ext2, Ext3,
/dev/pts, /proc;
10. Если твой комп не сервак, то запрети все сетевые
файловые системы(NFS);
11. Если у тебя нет ISDN-модема, запрети все
ISDN-устройства;
12. Запрети поддержку IPv6;
13. Если у тебя нет ноутбука или PCMCIA-карт запрети их
поддержку;
14. Если юзаешь dial-up, разреши поддержку протокола
PPP(Point to Point Protocol);
В общем, разреши поддержку только тех устройств, которые
у тебя есть! И ещё: в некоторых пунктах можно выбрать одно
из трёх значений: Y/M/N, так вот:
Y - разрешить поддержку на уровне ядра;
M - разрешить поддержку на уровне модуля ядра;
N - запретить поддержку.
"Что же выбирать, если хочешь включить поддержку, Y или
M" - спросишь ты. Мой совет: если хочешь, чтобы ядро быстрее
грузилось и не хочешь лишнего геморроя с подключением
модулей, выбирай - Y; если же хочешь, чтобы ядро занимало
меньше памяти, выбирай - M, но тогда придётся возиться с
подключением модулей, а это тема для другой статьи...
которая может быть и появится... Когда закончишь, сохрани
все изменения и вываливайся в консоль. Теперь даёшь команду:
make dep
Создаётся так называемый файл зависимостей. Следующие
команды с пояснениями:
make clean - убираем лишний исходный код;
make bzImage - создаём сжатый модуль ядра;
make modules - создаём модули;
make modules_install - устанавливаем модули;
Всё, ядро скомпилено, но не спеши давать команду reboot,
необходимо внести изменения в загрузчик. Сначала копируй
файлик /путь_к_ядру/arch/i386/boot/bzImage в папку /boot.
Далее привожу пример конфигурации LILO. Правь файл
/etc/lilo.conf. Вот пример:
boot=/dev/hda
map=/boot/map
timeout=50
prompt
message=/boot/message
default=kernel-2.2.16
vga=normal
read-only
install=/boot/boot.b
image=/boot/bzImage
label=kernel-2.2.16
root=/dev/hda3
image=/boot/kernel-x.x.xx
label=kernel-x.x.xx
root=/dev/hda3
Вместо hda3 ставь свой Linux-раздел и вместо
kernel-2.2.16 будет стоять твоё собственное старое ядро.
Код, выделенный зелёным, - код загрузки нового
ядра(подробнее смотри в доках по LILO). После сохранения
даёшь команду:
lilo
Вот и всё!
reboot
После чего в меню выбираешь kernel-x.x.xx и смотришь:
если не грузится, загрузи старое ядро и проверь все свои
шаги, особенно, конфигурирование; если ядро загрузилось,
даёшь команду:
uname -r
Должна появиться версия слитого ядра. Потом создаешь
загрузочную дискету, так, на всякий случай:
mkbootdisk --device /dev/fd0 x.x.xx
Всё! Идёшь пить пиво... если деньги сэкономил :) .
|