Компиляция ядра Linux
Узнайте текущую версию ядра, установленного на вашем компьютере:
uname -r
Авторизуйтесь как root бессрочно:
sudo -s -H
apt-get update && apt-get install kernel-package libncurses5-dev fakeroot wget bzip2
Также рекомендуется установить ccache - это позволит сократить время перекомпиляции и компилировать в несколько потоков:
apt-get install ccache export CONCURRENCY_LEVEL="5"
Нужно на http://www.kernel.org/ найти ссылку на ядро в архиве .bz2 и скачать в папку /usr/src.
cd /usr/src wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.tar.bz2
Затем распаковать исходники и создать символическую ссылку на папку с исходниками ядра.
tar -jxvf linux-2.6.29.tar.bz2 ln -s linux-2.6.29 linux cd /usr/src/linux
Хорошей мыслью будет использование конфигурации вашего текущего ядра в качестве основы для конфигурирования нового ядра. Скопируйте текущую конфигурацию в /usr/src/linux:
cp /boot/config-`uname -r` ./.config
Дальше есть 2 пути:
- Скомпилировать ядро с настройками из существующего
.config:make oldconfig
- Сконфигурировать вручную:
make menuconfig
Вы попадете в меню конфигурации ядра. Выберите "Load an Alternate Configuration File", затем выберите .config (который содежит вашу текущую конфигурацию ядра) в качестве файла конфигурации.
Затем просмотрите меню конфигурации ядра и… сделайте ваш выбор! (о том, что нужно убрать, а что – оставить, можно книгу написать. В 2.6.18 много экспериментальных фич, многое из поддержки железа вам не понадобится в силу того, что этого железа у вас не и не будет… смотрите сами). Когда вы закончите, выберите Exit и на последующий вопрос (Do you wish to save your new kernel configuration?) ответьте Yes.
См. Параметры компиляции в Linux
В секции Block layer я отключаю строку
[ ] Support for Large Block Devices
за ненадобностью: ну нет у меня дисковых устройств более 2 терабайт объемом.
В секции Processor family следует подобрать возможно близкий тип процессора. В моем случае (32-битный Sempron) это будет, очевидно,
(X) Athlon/Duron/K7
Сам по себе Sempron в списке доступных типов процессоров отсутствует.
Здесь же можно отключить такие явно ненужные вещи, как
< > Toshiba Laptop support < > Dell laptop support
Если, конечно, ядро не собирается именно для этих ноутбуков. Ну и такие Intel-специфические вещи, как
< > /dev/cpu/microcode - Intel IA32 CPU microcode support < > /dev/cpu/*/msr - Model-specific register support < > /dev/cpu/*/cpuid - CPU information support
также выглядят лишними. В общем, для отключения в ядре архитектурных излишеств - перспективы огромные. Главное - не увлечься и не отключить что-либо критически важное. И еще: поскольку ранее решено было отказаться от initrd при загрузке, следует очень внимательно проверить, что поддержка устройств и файловых систем, несущих корневую файловую систему, была встроена в ядро, а не собиралась как загружаемый модуль.
То же самое относится к чипсету - очевидно, что в конкретной машине он будет один, наример, в моем случае
<*> ATI IXP chipset IDE support
Поддержку же прочих, не имеющих быть в наличии, чипсетов можно спокойно отключить. Аналогично поступив и с многочисленными SCSI-адаптерами - хотя сама по себе поддержка SCSI-интерфейса
<M> SCSI device support
родового класса SCSI-устройств
<M> SCSI disk support
и SCSI-дисков
<M> SCSI generic support
в разделе SCSI device support следует оставить - они обеспечивают работу с USB-накопителями любого рода и носителями цифровых камер.
В большинстве случаев можно смело отключать и опцию
[*] Multiple devices driver support (RAID and LVM)
в разделе Multi-device support (RAID and LVM). Если, конечно, LVM и программный RAID действительно не используются.
Наконец, нет ни малейшей необходимости в поддержке всего наличного изобилия сетевых устройств и протоколов.
Источник: http://exs.elm.ru/wordpress/?p=259
- dev.rtc.max-user-freq
- dev.hpet.max-user-freq
Определяет количество опросов таймеров обычной и высокой точности в секунду. Значение по-умолчанию небольшое, всего 64, в принципе для сервера вполне потянет, в серверах не часто используется непосредственное взаимодействие с таймерами ядра. Однако, если у вас не сервер, а система, которая пользуется медиа подсистемой (воспроизводит и/или записывает например звук и/или видео), то это значение наверняка стОит поднять. Обычно рекомендуют значение 1024, однако я предлагаю значение чуть более высокое 3072 или даже 4096.
- kernel.threads-max
Задаёт количество потоков которые может обслужить ядро. Достаточно часто сервера бд, в частности Oracle, рекомендуют повысить это значение, но ставить что-то типа 16777216 я бы не советовал, ибо переключение между потоками тоже отжирает некоторое количество ресурсов процессора, значения 16384 или на крайняк 32768как правило вполне достаточно даже в очень тяжёлых случаях.
Чтобы скомпилировать ядро, выполните следующие команды:
make-kpkg clean fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
Здесь
- fakeroot задает "правильное" root-окружение,
- make-kpkg выполняет собственно сборку ядра и модулей (подменяя собой обычные make vmlinuz и make modules),
- --append_to_version, --sempron и --revision=rev.01 задают дополнения к имени собираемого пакета, каковым в качестве basename выступает kernel_image.
После –append-to-version= вы можете вписать все что угодно – все, что поможет вам в дальнейшем идентифицировать «ваше» ядро, но это название должно начинаться на минус («-») и не содержать пробелов.
Теперь потерпите – компиляция ядра может занять несколько часов, все зависит от того, как вы сконфигурировали ядро и от того, насколько быстр ваш процессор.
После того, как компиляция нового ядра успешно завершится, в директории /usr/src появятся два deb-файла:
cd /usr/src ls -l
Установить их:
dpkg -i ./*.deb
Теперь можно проверить grub - в него добавится новое ядро:
vi /boot/grub/menu.lst
- Ускоряем debian
- HowTo: Компиляция ядра - The Ubuntu Way
- Собери свой Ubuntu
- Как изменить ядро Ubuntu Linux
- Компилируем ядро
- Оптимизация make.conf
- Ставим ядро 2.6, или Ядерная физика для домохозяйки. Версия 2.0
- Некоторые замечания о сборке ядра Linux: как собрать ядро в Линукс
Параметры ядра Linux