The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Компиляция Linux-ядра под заданный ..."
Отправлено auto_tips, 20-Мрт-11 12:02 
Пример компиляции ядра в таких  дистрибутивах как Debian и Ubuntu с целью задействования всех возможных оптимизаций для текущего процессора (core-duo). Все произведённые действия подойдут для ubuntu 9.10 - 10.10

Для начала загрузим исходные тексты ядра и заголовочные файлы:

   sudo aptitude install linux-source-2.6 linux-headers

Установим утилиты для компиляции ядра

   sudo aptitude install build-essential kernel-package libncurses-dev

Полученное ядро нужно распаковать:

   cd /usr/src/
   sudo tar -xjf linux-source-*

Затем нужно выставить опции компиляции для gcc c оптимизацией под нужный процессор. Для Intel-процессоров опции можно найти на [[http://en.gentoo-wiki.com/wiki/Safe_Cflags/Intel данной странице]]. Так же начиная с GCC версии 4.2 можно указать опцию "-march=native", тогда GCC автоматически определит оптимальные настройки для вашего процессора. Так давайте же и мы воспользуемся этой замечательной возможностью. Так же рекомендуется добавлять опции "-pipe -fomit-frame-pointer".

В итоге вот какие опции у нас получаются:

   CHOST="i686-pc-linux-gnu"
   CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer"
   CXXFLAGS="${CFLAGS}"

"CFLAGS" - опции для С программ
"CXXFLAGS" - опции для C++ программ
"-march" -  архитектура процессора (в нашем случае определяется автоматически)
"-O2" - это средняя оптимизация кода - компромис между быстродействием и объемом получаемого исполняемого файла (00, 01 - отсутствие оптимизации и маленькая оптимизация, маленький размер исполняемого файла, 03 - жёсткая оптимизация, большой размер исполняемого файла) Вообще не факт, что с оптимизацией 03 везде будет работать быстрее, большой размер получаемой в итоге программы ставит повышенные требования к быстродействию подсистемы памяти.

Это переменные окружения, и что бы они сохранились в системе после перезагрузки надо их поместить в .bashrc файл пользователя, который будет компилировать. Я помещаю их в .bashrc своего пользователя и root, на случай если мне вздумается компилировать от рута. В конец .bashrc этих пользователей добавляем:


   export CHOST="i686-pc-linux-gnu"
   export CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer"
   export CXXFLAGS="${CFLAGS}"

Для вступления в силу изменений надо заново зайти пользователем, так как компиляция будет происходить в консоли, и в GUI нам эти параметры не нужны, достаточно просто открыть новую консоль.

Теперь все программы, которые мы будем компилировать, будут оптимизированы согласно этим опциям. Теперь можно переходить непосредственно к компиляции ядра.

Все операции с ядром производятся в корне директории с исходными текстами ядра, поэтому недолго думая переходим туда:

   cd /usr/src/linux-source-*

Создадим файл конфигурации текущего ядра командой

   sudo make oldconfig

Эта команда создаст файл .config, где будут указаны опции ядра, используемого в данной системе. Эти настройки будут основой для наших настроек. Приступим к конфигурации ядра:

   sudo make menuconfig

С помощью этой утилиты указываем необходимые нам опции.
Обращаю ваше внимание на следующую опцию:

   Processor type and features  ---> Processor family

Здесь выбираем свой процессор. Остальные опции, которые мы взяли из ядра идущего с дистрибутивом вполне работоспособны для большинства применений, поэтому изменяйте их по своему усмотрению, или оставляйте как есть.

Далее, выполним команду, которая удалит файлы (если они имеются), оставшиеся от предыдущей компиляции:

   sudo make-kpkg clean

Далее компилируем ядро командой:

   sudo nice -n 19 make-kpkg --initrd --append-to-version=-mykernel kernel_image kernel_headers

"nice -n 19" понизит приоритет компиляции на 19 пунктов
Ключ "-append-to-version" используется, чтобы добавить к имени файла образа ядра, который мы получим после компиляции, строку "-mykernel", чтобы было проще идентифицировать свое ядро.

И, через несколько минут/часов или может у кого то и дней, мы получим оптимизированное для нашей архитектуры ядро. На Celeron 3.06GHz это заняло два с половиной часа.

Если всё пройдёт удачно, в итоге в /usr/src/  получим два deb-пакета linux-headers-*.deb и linux-image-*.deb, которые следует установить в систему:

   sudo dpkg -i linux-headers-*.deb linux-image-*.deb

Установщик так же обновит конфигурацию grub и поставит новое ядро во главе списка. Теперь можно перезагрузить в систему с новым ядром!


URL: http://www.comeinadmin.ru/article/compile-kernel-linux.html
Обсуждается: http://www.opennet.ru/tips/info/2549.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру