Краткое вступление:
Я отношусь к тем пользователям Linux, которые не любят вводить много команд в терминале, для таких же, это написано. Просьба к гуру не минусовать это не для вас написано)))))))))
Надеюсь вы изучили комплектацию своего компа и знаете что вам нужно.
Для начала устанавливаем:
apt-get install kernel-package fakeroot libncurses5-dev libqt3-mt-dev
libncurses5-dev (для генерации меню make menuconfig), libqt3-mt-dev (для генерации меню make xconfig).
Сборку можно проводить в домашней папке. Как и каким образом вы разархивируете исходники не важно, что бы не конфигурировать заново, копируем конфиг вашего рабочего ядра из /boot и переимновываем в .config.
Создаем в папке с исходниками фаил build-kernel.sh с содержанием:
#!/bin/sh
make xconfig
sudo make-kpkg clean
sudo make-kpkg --initrd --append-to-version=-mykernel-${1} kernel_image kernel_headers
read -p "Очистить от временных файлов включая .config? (эта операция необратима, рекомендуется сохранить копию .config. Если не уверены, ответьте НЕТ) [y/n]: " myyn
case "$myyn" in
[ДдYy] ) echo "Начало очистки папки ядра...";sudo make mrproper;;
[НнNn] ) echo "Пропускаем...";;
* ) echo "Пропускаем...";;
esac
exit
В скрипте в 4 строке слово "mykernel" можно заменить любым своим.
Даем права на запуск.
Запускаем в mc или из терминала.
./build-kernel.sh
Как скрипт оработает выходим из каталога с исходниками и находим два пакта *.deb
Ну и на всякий случай если скрипт не заработал.
make menuconfig
или make xconfig
далее
make-kpkg clean fakeroot make-kpkg --initrd kernel_image kernel_headers
Выходим из каталога с исходниками и находим два пакта *.deb
PS. Не забудте сохранить скрипт перед удалением каталога с исходниками, если исходники удалять не собираетесь и скриптом не ползовались, то для очистки исходников от продуктов сборки:
make-kpkg clean
из каталога с исходниками, они не мало места занимают.
Комментарии (37)
в подшивку, однозначно!!
Закинул.
Подправил чуток про EXTRAVERSION = .3, после долгих экспериментов выяснил, что в этой строке должна быть только одна точка
Эх доигрался, дрова нвидиа да же на дефолтное ядро не ставятся, ни с сайта, ни из репов. Че делать хз(((
Описать подробно ошибку. А вы для дефолтного все пакеты установили: заголовки и подобное?
Решил проблему:
Установил Ubuntu-tweak, там есть чистка настроек, почистил, дрова поставились.
Есть похожая команда в терминале? Кроме
--purge
при удалнии, а то удалил без этой команды, а как настройки почистить хз((Можно сделать пург удалённым пакетам вроде как.
libqt3-mt-dev? И заодно притащить в систему всё древнее кути3. Можно было поновее мануал скопипастить. Сейчас нужен libqt4-dev
Копипаст только скрипт и то из закромов друзей откуда они взяли хз, остальное по личному опыту написано.
Для тех, кто не любит вводить много команд есть прекрасный топик на хабре
Класс!!! Жаль что неделю назад это не нашел(( сток убитых вечеров на конфиг ядра((
Странно ток, программа GTK а тянет qt3 для
make xconfig
хотя для GTKmake gconfig
Все наигрался))) Поставил дефолтное и успокоился))
И к стати чет не заметил чтоб оно медленней работало))
Похож сборка ядер не для меня.
С дефолтным-то конфигом! Ладно бы вы под свой комп галки проставили.
В том то и дело, что производительность добавляло ток изменение значения HUMA (так вроде) с 100 до 1000 а в дефолтном 11-ом уже стоит 1000 остальное уменьшало размер ядра, но производительности не добавляло. Самому не понятно почему, я из ядра больше 50% процентов вырезал того, что в ядро зашито было, а модулей вообще около 90% вырезал.
Интересно. При конфигурировании под железо система должна до 20% ускоряться...
При изменении HUMA даже больше ускоряется, а в остальном....
Я собирал ядра с kernel.org, мож они плохо с конфигом ubuntu стыкуются, щас вот как раз из ubuntu'ных сырцов собираю посмотрим. На первый взгляд варнингов меньше стало при сборке, но может быть я вижу то что хочу видеть))
А то что у 11 ядра HUMA 1000 это я ошибся прогу из поста повыше тестил, она мне похоже в конфиг от дефолтного ядра сама это значение подставила
чёрт, а у меня KernelCheck выдаёт ошибку на 70% при компиляции ядра, попробую вручную пособирать
Я не дождался пока она мне ядро соберет, как понял что она мало чем от скрипта отличается, так снес ее.
Странно убунтушное ядро не собирается, доходит до сборки в деб и ошибка. 3 попытки и ошибка такая непонятная "2"
Буквально позавчера компилил ядро раза три. Пользовался вот этим мануалом. На мой взгляд куда меньше телодвижений, чем тут...
Здесь их раз сделать надо, а потом ток скрипт запускай, да конфиги подсовывай. Не знаю как вам, а мне удобно тем более, что я еще не нашел идеальный конфиг для своего компа, ядра пересобираю часто. А для "один раз собрать" действительно много телодвижений.
не увидел я пользы скрипта!!! время которое я экономлю запуская файл build-kernel.sh по сравнению с теми же командами набранными вручную ничтожно малое!!!! А с учетом того сколько времени занимает сама работа по сборке.... Ерунда полная!!!
В начале мана сказано, что это для тех, кто не любит вводить команды в терминале. Я сам такой, и мне нравится больше скрипт, у меня скрипт например называется "bk", как думаеш его быстрей запустить чем все команды вводить. К тому же, кому в лом скрипт делать, могут команды из скрипта по очереди вводить.
Было бы здорово иметь тулзу, которая сначала пощупает что у меня за железо, а потом соберет ведро. С впиленными в ведро нужными модулями. В свое время очень сурово занимался садомазо. Ошибки при сборке банальны, но т.к. собирается ведро не очень спешно они адово критичны. Вот впилил в ведро модулем поддержку ext3(ну или че у вас там в корне) и получил кернел паник при старте(это совсем банальности) или же отпилил поддержку вроде бы "не нужного" мне scsi(ну откуда скази контроллер в десктопе? думал я пару лет назад).....ну и так далее.
В итоге собрал. Прирост производительности был таков, что его видно только по load avg. А как тормозил у меня браузер при переключении по вкладкам так и тормозит(железяка на тот момент слабовата была)
Так что как вывод - ну его нафик для домашнего использования. Только если какой нить патч накатить на планировщик или же с флагами оптимизации поиграть. А так не благодарное это занятие. Уж лучше заработать/захалтурить/сфрилансить/пойти своровать/выпросить у мамы/получить в наследство/в подарок/иное железо более живое, чем убивать тонну времени на "кошерную" сборку (гуру последнее предложение не касается).
Но эт для домашнего использования. Соглашусь, что под высоконагруженные решения лучше сесть, основательно подумать. подумать еще разок более основательно, собраться мыслями,
выпить для храбростии таки выбить все лишнее из ведра, потестить разные планировщики/таймера/че_еще_там_есть_уже_и_не_помню и в итоге получить максимальную отдачу от железки(коим образом сэкономить на апгрейде боевого сервака, поразить начальство своим скиллом, удивить коллег и получить премиальный баблос(как раз на плашку памяти/шустрый проц/ssd винт/или_че_там_у_вас_узкое_место) и апгрейднуть домашнюю машину))Вот и я все больше к этому склоняюсь))) Пол отпуска в обнимку с гуглопереводчиком и вики угрохал, думал чего стоящее получится))
Там же написано, развернуть, а потом
qmake
make
./good
А у меня немного иначе все сложилось. Выбил новый комп, а сетевушка не робит. Вот и встал я перед выбором, либо вернуться на старую машину либо собрать ядро с поддержкой сетевушки.))
А просто доставить модули, которых нет искаропки, не пробовали? ;-)
это не по-красноглазному же!
Дык не ставилось ниче. Ваще проблема решилась установкой ядра 2.6.38-33 вместо родного 2.6.33. Хотя и в том и в том дрова были на карточку. Но завелось все только с первым. И, кстати, как сказал Mike, не по красноглазому :D Не, я не маньяк, просто за 3 с небольшим года работы на кубунту не разу ядро не собирал, а тут вроде как и необходимость возникла :)
--append-to-version=-mykernel-1 - и не надо конфиг править.
и ещё перед make-kpkg можно export CONCURRENCY_LEVEL=X - где X количество потоков.
Что бы пошустрей компилилось.
Мануал рассчитан на скрипт и многоразовую сборку, а разницы в правке скрипта или макефайла (при частой сборке) не вижу, а для одиночной сборки ни скрипт ни версии не нужны.
автоматизировать можно + к версии, например беря число от прошлой сборки и прибавляя 1 или
--append-to-version=-${1}
Хотя ладно )
Спасибо не знал, ща мануал немного поправлю.
Кто в bash разбирается, посмотрите правильно команду вставил?
Отправить комментарий