Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Как правильно собрать ядро?  (Прочитано 2606 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ploop

  • Автор темы
  • Активист
  • *
  • Сообщений: 762
    • Просмотр профиля
Как правильно собрать ядро?
« : 05 Февраля 2010, 10:26:12 »
Не решив проблему копирования больших файлов (этот вопрос), осталось последнее - попробовать собрать ядро. По мотивам повести "Ядерная физика для домохозяек" скачал яро 2.6.32.7, запустил make config и ...

1. Обнаружил, что 80-90% опций, описанных в статье, не совпадают с вопросами конфигуратора.
2. Пытаясь понять суть данных опций пришел к выводу, что я могу понять что это, и нужно ли оно мне, только в 10% случаев.
3. Английский не проблема, но утомляет.
4. Устав, тупо зажал enter и опупел. Список вопросов не помещался в буфере терминала несколько раз.

Ладно, файл конфигурации сздался. Запустил сборку, ошибок нет, а вот установка почему-то не добавила ничего в /boot. Не проблема, скопировал вручную. Grub2 умная штука, увидел ядро и прописал его.

Загружаюсь. Работает! Драйвера видео не стал настраивать, т.к. пользоваться собранным "на авось" ядром не собираюсь. Решил проверить, как проявит себя проблема. Копировал с/на ntfs-раздел 8-9Гб файлы несколько раз, и РАБОТАЕТ! При том скорость на дефолтном ядре была ~30Мб/сек тут аж 45! Правда к самому концу приближалась к 30, но общее время всё равно меньше.

-----------------
Собственно вопрос: как правильно сконфигурировать ядро под своё железо, выкинув ненужное, и не поседеть от старости, отвечая на тысячи вопросов?


Оффлайн athost

  • Старожил
  • *
  • Сообщений: 1897
    • Просмотр профиля
Re: Как правильно собрать ядро?
« Ответ #1 : 05 Февраля 2010, 10:43:30 »
Цитировать
Собственно вопрос: как правильно сконфигурировать ядро под своё железо, выкинув ненужное, и не поседеть от старости, отвечая на тысячи вопросов?
  

А выход только один -- разбираться в своем железе и что обозначает, на что влияет каждая опция ядра. Нажимаешь на конкретной опции знак вопроса "?" и вдумчиво читаешь, а если совсем непонятно, то лезешь в гугль.

Оффлайн ploop

  • Автор темы
  • Активист
  • *
  • Сообщений: 762
    • Просмотр профиля
Re: Как правильно собрать ядро?
« Ответ #2 : 05 Февраля 2010, 10:50:49 »
Цитировать
Нажимаешь на конкретной опции знак вопроса "?" и вдумчиво читаешь, а если совсем непонятно, то лезешь в гугль.
Так там только единицы из всех вопросов дают представление о настраиваемой опции. Большинство же в стиле "нажмите  кнопку "выход", если хотите выйти" , т.е. вопрос звучит "Enable ты-ры-пы-ры support [y/n/?]" а ответ типа "If you want to include support ты-ры-пы-ры ... "
 
А вот с гуглом проблема. Пока дома живу в оффлайне...

Оффлайн БТР

  • Заслуженный пользователь
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6165
    • Просмотр профиля
Re: Как правильно собрать ядро?
« Ответ #3 : 05 Февраля 2010, 11:33:28 »
Нужно использовать make xconfig (для сессии с иксами), ну или на худой конец make menuconfig.
С помощью make config ядро собирают те, кто может потратить пару-тройку часов на нажатие Enter раз за разом.

Оффлайн ploop

  • Автор темы
  • Активист
  • *
  • Сообщений: 762
    • Просмотр профиля
Re: Как правильно собрать ядро?
« Ответ #4 : 05 Февраля 2010, 11:44:55 »
на make xconfig и  make menuconfig он заругался, может, какие пакеты доустановить надо?

Оффлайн dsh

  • Участник
  • *
  • Сообщений: 229
    • Просмотр профиля
Re: Как правильно собрать ядро?
« Ответ #5 : 05 Февраля 2010, 12:36:05 »
собственно читай здесь:

Оффлайн ploop

  • Автор темы
  • Активист
  • *
  • Сообщений: 762
    • Просмотр профиля
Re: Как правильно собрать ядро?
« Ответ #6 : 05 Февраля 2010, 13:48:40 »
Читал, в принципе, ничего нового. Но всё равно спасибо.

Наверное послушаю совета athost, хоть и сложно, но эффективно. И полезно :)

Оффлайн immors

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Как правильно собрать ядро?
« Ответ #7 : 05 Февраля 2010, 13:56:10 »
собственно статье про ядерную физику уже очень очень много лет, не стоит удивляться несоответсвиям, и все же это лучшее руководство, имхо. да и ядра сейчас делают так, что особо править ничего не надо. есть смысл только выбрать опцию ядра для конкретного процессора (это описано в ядерной физике)), а от выкидывания поддержки лишнего оборудования ядро не сильно похудеет и быстродействия не прибавится, только возрастут шансы накосячить, особенно первый раз. идеальный вариант - взять старый конфиг, положить в папку с исходниками и запустить menuconfig или xconfig, как уже сказали. menuconfig требует dev пакетов для библиотеки ncurses, ну и стоит внимательно поглядеть на что он там еще ругается. а xconfig требует dev пакетов для qt, опять же надо смотреть на что ругается и доустагавливать. http://wiki.kryukov.biz/wiki/%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D1%8F%D0%B4%D1%80%D0%B0_Linux а это проект по переводу пояснений к опциям ядра, там тоже есть различия с последними версиями ядер, но надеюсь поможет))
linux being

Оффлайн ploop

  • Автор темы
  • Активист
  • *
  • Сообщений: 762
    • Просмотр профиля
Re: Как правильно собрать ядро?
« Ответ #8 : 05 Февраля 2010, 14:01:25 »
Спасибо.

Оффлайн Alexandr Krjazhev

  • Активист
  • *
  • Сообщений: 373
    • Просмотр профиля
    • записки прозапас
Re: Как правильно собрать ядро?
« Ответ #9 : 05 Февраля 2010, 14:03:56 »
В январском номере LXF описывают такую штуку: http://kcheck.sourceforge.net/
Пишут, что это очень ловкий графический интерфейс для сборки и установки своего ядра. Сам я ещё не пробовал...

Оффлайн ploop

  • Автор темы
  • Активист
  • *
  • Сообщений: 762
    • Просмотр профиля
Re: Как правильно собрать ядро?
« Ответ #10 : 05 Февраля 2010, 14:27:15 »
Скачал, попробую.

Пользователь решил продолжить мысль 05 Февраля 2010, 15:01:22:
Интересный скрипт. На первых порах не хотел работать через прокси - поправил. Далее на хотел соединяться с kerhel.org - неверная ссылка была, опять поправил в нескольких местах. Далее опять не может соединиться, там еще ссылок куча! Какая битая - искать надо. Хоть бы в переменные в начале вынесли  :)
« Последнее редактирование: 05 Февраля 2010, 15:01:22 от ploop »

Оффлайн dimas000

  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
Re: Как правильно собрать ядро?
« Ответ #11 : 05 Февраля 2010, 16:55:16 »
собственно, по такой методе собирал на дебиане и на убунте. работает ведь!

качаем сырцы с кернельорга (с сырцами от kernel.ubuntu.com, как я понял, лучше не связываться)
добавляем себя в группу src:
sudo gpasswd -a username srcпробуем писать в /usr/src, например
echo "111" > /usr/src/tmpfileу меня почему-то не получилось с первого раза, а только после ребута. в любом случае, это более правильный способ, чем "chmod 777 -R /usr/src". получив права, кидаем сырцы в /usr/src
mv ~/somewhere/linux-xxxxx.tar.bz2 /usr/srccd в /usr/src и распаковываем архив
cd /usr/src
tar -xvjf linux-xxxx.tar.bz2
операция займет минут пять. далее доставляем необходимое, если чего-то еще нету:
sudo aptitude install kernel-package libncurses5-dev fakeroot wget bzip2 build-essentialидем в свежераспакованный каталог
cd linux-xxxxзапускаем
make mrproper(это не "мистер Пропер", с которым веселей, но хз...)
теперь возьмем готовый ядерный конфиг лежат они в /boot, берем конфиг старшей версии, например
cp /boot/config-2.6.31-16-generic .configи после этого
make oldconfigданная операция считает наши старые настройки. для новых фич, появившихся в собираемой версии ядра - задаст вопросы. тут уж или думаем, или просто жмем энтер, соглашаясь на вариант по умолчанию. ну и после этого, собственно
make menuconfigтут уж разбираемся самостоятельно. лично я вполне себе сам все проковырял без всяких статей. хелпы к параметрам более-менее внятные, во многих даже написано, дескать, "если вы ваще не понимаете, что это такое, выберите Y". собственно, нужно знать конфигурацию своего железа (lshw в помощь), те железяки, которых нет - можно смело вырубать. то же самое  со всякими джойстиками и прочими тв-тюнерами - если все это не планируется к использованию - жмем N.
в принципе, ничего нереально сложного. просто нужно будет один раз потратить часок на раздумья, в следующие разы все будет совсем просто.
что хочу отметить: компрессию лучше оставить gzip и не трогать, initrd нужно включить. и еще важный момент: корневую фс лучше сразу вкомпилить монолитом. в принципе, можно моголитом и ту, что под хомяк. остальные модульно, лишние выключить совсем.
настроив все это дело, выходим в корень менюшки и выбираем "save file ...".
бэкапим куда-нибудь в укромное место (не сюда же!) полученный .config, он нам еще пригодится. после этого
make-kpkg cleanпроверяем, на месте ли конфиг.
и мы готовы, собственно, к сборке. нижеприведенный метод - дебиан-вэй, на выходе получим deb-пакеты (в отличие от канонического make install):
fakeroot make-kpkg --initrd --append-to-version=-custom --revision=2010-036 kernel_image kernel_headersвместо "-custom" указываем то, что хотим видеть в названии версии (ядро будет именоваться примерно так: 2.6.33-rc6-custom). revision виден в версии не будет, но будет виден в имени deb-пакета. пишем что хотим, но оно должно содержать цифру. я советую использовать дату сборки, так оно понятней будет потом.
ну и все, запускаем. и идем пить чай. на моей конфигурации процесс занял 29 минут. да, если хочется статистики, запускаем через "time fakeroot ...". кроме того, полезно будет получить лог процесса. для этого перед началом сборки выполняем
script -f /somewhere/filenameтеперь все, что будет показано на консоли, запишется и в указанный файл.
по заершении получаем два deb-пакета. и ставим их
sudo dpkg -i linux-image-xxxx.deb
sudo dpkg -i linux-headers-xxx.deb
grub2 обновится сам.
но есть один нюанс. initrd должен собраться сам, но может и не собраться. зрим в /boot
ls /bootесли есть vmlinuz-xxx, но нет к нему initrd.img-xxxx - соберем его ручками:
sudo update-initramfs -c 2.6.33-rc5-customверсия должна соответствовать той, что после vmlinuz-. после этого grub2 снова обновится. и можно грузить свежеиспеченное ядро.
могу заметить, что ничего старшного в этом нет. я урезал все, что только нашел, и ничего, оно работает. а если и не станет работать - можно удалить в aptitude и собрать по новой. самый, на мой взгляд, сложный момент в настройке - это ide/sata/atapi-контроллеры, вот здесь надо аккуратно, иначе хард вообще не определится. с другой стороны, если терзают сомнения - можно оставить все модулями.
вот как-то так. вроде каких-то иных особых сложностей не замечал
лучше на "ты"

Оффлайн yurik11

  • Любитель
  • *
  • Сообщений: 82
    • Просмотр профиля
Re: Как правильно собрать ядро?
« Ответ #12 : 05 Февраля 2010, 21:22:15 »
Цитировать
а от выкидывания поддержки лишнего оборудования ядро не сильно похудеет и быстродействия не прибавится, только возрастут шансы накосячить
Насчет быстродействия согласен. Объем модулей можно уменьшить в разы, но на современном компе 100 М или 20 М не имеет большой разницы. А вот время сборки можно уменьшить намного. У меня сборка оригинального ядра заняла 2 с хвостиком часа, а урезанного для моей системы 30 минут. Так что если хочешь собирать не один раз, лучше заточить под свою систему.

Оффлайн dimas000

  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
Re: Как правильно собрать ядро?
« Ответ #13 : 05 Февраля 2010, 22:29:12 »
Цитировать
а от выкидывания поддержки лишнего оборудования ядро не сильно похудеет и быстродействия не прибавится, только возрастут шансы накосячить
на убунте не шибко что менялось. а вот на дебиане еще как худело и прибавлялось. а испортить так и не вышло))
чтоб накосячить, по-моему, надо выдрать напрочь:
а) рутовую фс
б) контроллер (sata/ide) харда
в) что-нибудь из области памяти с процом (или установить несовместимые параметры)
насчет остального - даже и не знаю, если только специально вредительством не заниматься...

кстати, кто-нибудь пробовал собирать ядро под другую архитектуру? (в частности собирать на 32 для 64). make-kpkg такое позволяет, но хотелось бы услышать, сколь хорошо выходит
лучше на "ты"

 

Страница сгенерирована за 0.05 секунд. Запросов: 23.