The OpenNET Project / Index page

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

Компиляция Linux-ядра под заданный процессор в Debian/Ubuntu
Пример компиляции ядра в таких  дистрибутивах как 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-*

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

   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 и поставит новое ядро во главе
списка. Теперь можно перезагрузить в систему с новым ядром!



Дополнение от pavlinux:

При необходимости можно внести изменения в используемые опции компиляции для
gcc c оптимизацией под нужный процессор. Опции задаются через переменные
окружения HOSTCFLAGS и KBUILD_CFLAGS, например:


   export HOSTCFLAGS="-O99 -mtune=native -funroll-all-loops"
   export KBUILD_CFLAGS="-O99 -mtune=native -funroll-all-loops"

или могут быть заданы в основном Makefile через переменные "HOSTCFLAGS" и
"HOSTCXXFLAGS". В этих настройках нельзя указывать флаги оптимизации под
конкретный процессор, можно использовать отлько общие параметры оптимизации,
такие как  -06/-O99, -frecord-gcc-switches, -g0 -funroll-all-loops,
-ftree-vectorize, -fno-inline-functions-called-once, -fmerge-all-constants и
так далее.

Для тонкой оптимизации под конкретный процессор нужно менять параметры в
arch/x86/Makefile (под 32 бита в arch/x86/Makefile_32.cpu)
там следует найти свой процессор, после строки "export BITS" есть тройка ifeq-else-endif

Дописывать можно к последнему KBUILD_CFLAGS. Тут можно всё, кроме
FPU/SSE/MMX/3DNOW, "-mcmodel=kernel" менять нельзя.
 
20.03.2011 , Автор: andrewlap , Источник: http://www.comeinadmin.ru/article/c...
Ключи: linux, kernel, compile, build, debian, ubuntu / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Linux специфика / Установка и работа с пакетами программ в Linux

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.2, Аноним, 12:17, 20/03/2011 [ответить] [смотреть все]
  • –1 +/
    Почему-то решил, что в статье описан процесс кросс-компиляции ядра для всяких ар... весь текст скрыт [показать]
     
     
  • 2.11, pavlinux, 22:52, 20/03/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    А накой вам?
     
     
  • 3.43, User294, 15:35, 25/03/2011 [^] [ответить] [смотреть все]  
  • +/
    Дык это, натой чтобы закомпилить свой кернель под такую железяку Благо их как г... весь текст скрыт [показать]
     
     
  • 4.46, pavlinux, 15:51, 25/03/2011 [^] [ответить] [смотреть все]  
  • +/
    Я собственна о том, что покупая МИПС АРМ уже надо знать шо таке кросс-компиляция... весь текст скрыт [показать]
     
  • 1.3, 123qwe, 13:45, 20/03/2011 [ответить] [смотреть все]  
  • +/
    А какие-нибудь performance тесты не проводили? Есть ли какой-нибудь реальный смысл во всем этом?
     
     
  • 2.5, andrewlap, 15:30, 20/03/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    Тесты не проводились, в интернете о подобных тестах ничего нет Я раньше на Gent... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.7, Anonimous, 19:44, 20/03/2011 [^] [ответить] [смотреть все]  
  • +/
    Думаю перекомпиляция ядра в производительности заметно не добавит Вот пересборк... весь текст скрыт [показать]
     
     
  • 4.32, Карбофос, 12:00, 22/03/2011 [^] [ответить] [смотреть все]  
  • +/
    перекомпильни, да замеряй утилитой bootchart. посмотри графики, подумай.
     
  • 4.44, User294, 15:44, 25/03/2011 [^] [ответить] [смотреть все]  
  • +1 +/
    Регулярно вижу криворуких уродов с понятно какой системой , которые сперва как ... весь текст скрыт [показать]
     
  • 4.49, Иван Иванович Иванов, 21:05, 25/03/2011 [^] [ответить] [смотреть все]  
  • +1 +/
    10-15% ???

    я вас жутко разочарую - в общем случае это будет 0-3%.

     
  • 4.54, bircoph, 21:22, 04/04/2011 [^] [ответить] [смотреть все]  
  • +/
    Гентушники тихо хохочут в сторонке Грамотная пересборка всей системы даёт от 10... весь текст скрыт [показать]
     
  • 2.30, non anon, 10:29, 22/03/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +3 +/
    Проводили, и не раз Естественно, толку никакого Задрачивание флагов компиляции... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.36, Вова, 11:02, 23/03/2011 [^] [ответить] [смотреть все]  
  • +/
    Я вполне себе юн и свеж, а под гентой уже более 5 лет, и так и думал, как и вы, ... весь текст скрыт [показать]
     
     
  • 4.37, pavel_simple, 20:21, 23/03/2011 [^] [ответить] [смотреть все]  
  • +/
    gt оверквотинг удален а ведь мог почеловечески перекодировать фильм в mpeg2 ... весь текст скрыт [показать]
     
     
  • 5.42, Вова, 18:43, 24/03/2011 [^] [ответить] [смотреть все]  
  • +/
    Но нам простых дел не поручают.
     
  • 5.45, User294, 15:46, 25/03/2011 [^] [ответить] [смотреть все]  
  • +/
    Что, серебряных пуль и осиновых кольев на всех не хватило Некроманы за человек... весь текст скрыт [показать]
     
  • 4.47, Аноним, 18:26, 25/03/2011 [^] [ответить] [смотреть все]  
  • +/
    Кстати да Правда на 720p, но и на более слабом проце vdpau, как оказалось, н... весь текст скрыт [показать]
     
  • 2.31, crypt, 11:34, 22/03/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Когда я н лет назад развлекался пересборкой ядра, то не стряпал в дцатый раз пос... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.34, andrewlap, 14:59, 22/03/2011 [^] [ответить] [смотреть все]  
  • +/
    кто то тестит, кто то пишет статьи, у каждого свой путь

     
  • 1.4, anoni, 13:49, 20/03/2011 [ответить] [смотреть все]  
  • +/
    Так лабораторка - компиляция ядра, вариант №4 - Core Duo, а вот Саньку не повезло, вариант №7 - armv5tejl. Он теперь себе ищет коробочку с таким :(
     
  • 1.8, Аноним, 20:49, 20/03/2011 [ответить] [смотреть все]  
  • +2 +/
    если при компиляции ядра посмотреть на те опции которые используютя при компиляц... весь текст скрыт [показать]
     
     
  • 2.9, pavel_simple, 21:40, 20/03/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    хоть до одного дошло, что кто-то жОстко троллит ... весь текст скрыт [показать] [показать ветку]
     
  • 2.10, andrewlap, 21:43, 20/03/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Вот сейчас проверял у меня ps af 124 grep cc1 выдаёт следующее _ usr lib ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.12, pavlinux, 23:02, 20/03/2011 [^] [ответить] [смотреть все]  
  • +/
    Сам придумал code native This selects the CPU to tune for at... весь текст скрыт [показать]
     
     
  • 4.13, andrewlap, 23:11, 20/03/2011 [^] [ответить] [смотреть все]  
  • +/
    Не понял чо не так Поправьте если лучше знаете Насчёт -fno-omit-frame-pointer ... весь текст скрыт [показать]
     
     
  • 5.17, pavlinux, 23:34, 20/03/2011 [^] [ответить] [смотреть все]  
  • +1 +/
    Долго рассказывать Хотите поменять флаги компиляции ядра Тогда меняйте их Гл... весь текст скрыт [показать]
     
     
  • 6.19, andrewlap, 00:01, 21/03/2011 [^] [ответить] [смотреть все]  
  • +/
    вот жесть то можот ну его нафик ... весь текст скрыт [показать]
     
     
  • 7.21, pavlinux, 00:47, 21/03/2011 [^] [ответить] [смотреть все]  
  • +/
    Конечно нафиг, там и так всё нормально, тем более, что -pipe и -fomit-frame-poi... весь текст скрыт [показать]
     
  • 3.14, Аноним, 23:12, 20/03/2011 [^] [ответить] [смотреть все]  
  • +/
    -mtune core2 у вас проставлены потому что вы при конфигурировании ядра задали P... весь текст скрыт [показать]
     
     
  • 4.15, andrewlap, 23:13, 20/03/2011 [^] [ответить] [смотреть все]  
  • +/
    вы уверены ... весь текст скрыт [показать]
     
     
  • 5.16, Аноним, 23:29, 20/03/2011 [^] [ответить] [смотреть все]  
  • +/
    у меня -march выставляет только в зависимости от опции в конфиге Processor fami... весь текст скрыт [показать]
     
     
  • 6.18, pavlinux, 23:42, 20/03/2011 [^] [ответить] [смотреть все]  
  • +1 +/
    Да не использует ядро переменную CFLAGS из окружения Проверить легко - надо за... весь текст скрыт [показать]
     
     
  • 7.20, andrewlap, 00:28, 21/03/2011 [^] [ответить] [смотреть все]  
  • +/
    В общем вывод делаем такой 1 переменные окружения на параметры компиляции не ... весь текст скрыт [показать]
     
     
  • 8.22, pavlinux, 00:56, 21/03/2011 [^] [ответить] [смотреть все]  
  • +1 +/
    для 32-х битов есть ещё REGPARM на Core2Duo Athlon64 и выше можно врубить CONFIG... весь текст скрыт [показать]
     
     
  • 9.23, andrewlap, 13:03, 21/03/2011 [^] [ответить] [смотреть все]  
  • +/
    Что то не нашёл я у себя в ядре опций REGPARM и CONFIG_JUMP_LABEL CONFIG_OPTIMIZ... весь текст скрыт [показать]
     
  • 9.39, JL2001, 13:37, 24/03/2011 [^] [ответить] [смотреть все]  
  • +/
    мне бы скриптик который проанализировав моё железо выставил нужные настройки под... весь текст скрыт [показать]
     
     
  • 10.40, andrewlap, 17:44, 24/03/2011 [^] [ответить] [смотреть все]  
  • +/
    весь виндавозный мир сидит на дефолтовом ядре и не гундит ... весь текст скрыт [показать]
     
  • 10.41, pavlinux, 18:02, 24/03/2011 [^] [ответить] [смотреть все]  
  • +/
    gt оверквотинг удален Ну в Венде тоже есть ключи реестра, которые, кроме особо... весь текст скрыт [показать]
     
  • 3.48, Аноним, 18:38, 25/03/2011 [^] [ответить] [смотреть все]  
  • +/
    Кстати, gcc 4 5 может и в более ранних версиях выдаёт чуть больше оптимизаций,... весь текст скрыт [показать]
     
     ....нить скрыта, показать (18)

  • 1.24, suseuser, 17:36, 21/03/2011 [ответить] [смотреть все]  
  • +/
    Компиляция ядра дает выигрыш в том случае, когда вы выбираете нужные драйверы, службы и т.д., а удаляете не нужные. В этом случае ядро становится компактным без лишнего, не нужного ВАМ кода. В остальных случаях ядро компилят с включением каких-то специализированных патчей, например, для протокола SPICE. И в том и в другом случае напортачить можно на раз, поэтому если нужна производительность - отказывайтесь от универсальных дистрибутивов в пользу заточенных под определенную задачу
     
     
  • 2.25, andrewlap, 17:49, 21/03/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Я в это не верю Сейчас в дистрибутивах ядро весит не более 10 Мб, при этом обыч... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.26, slavon, 18:37, 21/03/2011 [^] [ответить] [смотреть все]  
  • +/
    Вопросы веры тут не обсуждаются, здесь в основном люди факты любят Монолит соб... весь текст скрыт [показать]
     
  • 3.28, suseuser, 08:30, 22/03/2011 [^] [ответить] [смотреть все]  
  • +/
    Возьмите в качестве примера звуковую карту на сервере файловом, почтовом, СУБД ... весь текст скрыт [показать]
     
     
  • 4.29, wessenhizer, 10:14, 22/03/2011 [^] [ответить] [смотреть все]  
  • +/
    Ну да, разве что в этом случае, позволит сэкономить несколько тактов процессорно... весь текст скрыт [показать]
     
  • 1.27, vit, 20:27, 21/03/2011 [ответить] [смотреть все]  
  • +/
    под убунтой на ноутах можен не скомпилится. нашел багрепорт
    https://bugs.launchpad.net/ubuntu/+source/linux/+bug/505420
    там костыль есть для быстрого решения проблеммы
    ln -s /usr/src/linux-2.6.35/ubuntu /ubuntu
     
  • 1.33, Евгений, 14:21, 22/03/2011 [ответить] [смотреть все]  
  • +/
    А с какими опциями лучше собирать ядро под процессор core i5 2300(Sandy Bridge) ?
     
     
  • 2.35, Аноним, 09:26, 23/03/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    linux remove, windows install, очевидно же если не знаешь, не лезь ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.55, Пупкин, 09:00, 05/04/2011 [^] [ответить] [смотреть все]  
  • +/
    >> А с какими опциями лучше собирать ядро под процессор core i5 2300(Sandy
    >> Bridge) ?
    > linux=remove, windows=install, очевидно же. если не знаешь, не лезь.

    Класс ответ. А если не лезть то хер когда узнаешь.

     
  • 1.38, nobody, 09:38, 24/03/2011 [ответить] [смотреть все]  
  • +/
    в этой статье неверные данные

    читайте хотя бы http://forums.gentoo.org/viewtopic-t-24849-start-0.html

    автору - сначала хорошо поищи информацию, нечего людей дизинформировать

     
  • 1.50, Андрей, 17:27, 27/03/2011 [ответить] [смотреть все]  
  • +/
    Вот смотрю я на опции выбора CPU в ядре (да и в GCC), и думаю, Intel Core 2 == Phenom II? А то на Athlon 64 всё так с AMD и застыло.
     
     
  • 2.53, kamiram, 00:42, 01/04/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    кажись для xp и x2 есть варианты. или у меня это патчи?
     
  • 1.51, Андрей, 17:30, 27/03/2011 [ответить] [смотреть все]  
  • +/
    И ещё: регулярно исполбзую make-kpkg, но пока не удалось после нанесения очередного patch-2.6.xx.x пересобрать пакет без полного предшествующего make-kpkg clean. А нужно-то было бы всего несколько (пропатченных) файлов перекомпилить, вместо всего ядра. Или есть у make-kpkg где-то такая фича, чтобы гибче было?
     
  • 1.52, Dmitry, 20:31, 31/03/2011 [ответить] [смотреть все]  
  • +/
    Чет не пойму к чему это все и зачем, сделайте нормальную wiki страницу под разными CPU + описание ключей компиляции и типовые тесты, бенчмарки к ним, вот тогда было бы с чем сравнить и видеть куда оптимизировать. А так каждый изобретает свое колесо ....  в своем понимании формата колеса ....
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:



      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor