Как пересобрать ядро Linux?

Автор shiko, 09 Октября 2008, 14:10

« предыдущая тема - следующая тема »

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

shiko

Здравствуйте! Постепенно продвигаясь в изучении linux, все чаще приходится сталкиваться с проблемой пересборки ядра (то одно нужно добавить, то другое и т.д). Решился попробовать и пройти этот таинственный процесс. Почитал литературу, статьи в интернете и естественно возникли кой какие вопросы. Вот к примеру я зашел на сайт htttp://www.kernel.org что бы скачать ядро, где увидел следующее:
The latest stable version of the Linux kernel is: 2.6.26.6  2008-10-09 03:33 UTC   F V VI C Changelog

F = full source, B = patch baseline, V = view patch, VI = view incremental, C = current changesets
  кликнув по ссылке F, я закачал ядро. У меня вопрос по ссылке V, зайдя на нее я увидел:
/pub/linux/kernel/v2.6/patch-2.6.26.6.bz2
Show entire file
 Documentation/ftrace.txt                                        0 +    1353 -       0 !
 Documentation/networking/udplite.txt                   1 +       1 -       0 !
 Documentation/video4linux/cx18.txt                      3 +       9 -       0 !
 Makefile                                                                   3 +       2 -       0 !
 arch/ia64/kvm/kvm-ia64.c                                       6 +       2 -       0 !
 arch/powerpc/kernel/ppc32.h                                  2 +       0 -       0 !
 arch/powerpc/kernel/ptrace32.c                              27 +       0 -       0 !
 arch/powerpc/kvm/powerpc.c                                 4 +       0 -       0 !
 arch/powerpc/platforms/cell/cbe_cpufreq_pmi.c          6 +       0 -       0 !
 arch/s390/kernel/compat_ptrace.h                          1 +       0 -       0 !
 arch/s390/kernel/ptrace.c                                       28 +       0 -       0 !
 arch/s390/kvm/kvm-s390.c                                    4 +       0 -       0 !
 arch/sparc64/kernel/irq.c                                        61 +       1 -       0 !
 arch/sparc64/kernel/kstack.h                                 60 +       0 -       0 !
 arch/sparc64/kernel/ldc.c                                       19 +      19 -       0 !
 arch/sparc64/kernel/of_device.c                             4 +       5 -       0 !
 arch/sparc64/kernel/pci.c                                        1 +       1 -       0 !
 arch/sparc64/kernel/pci_psycho.c
  из описания понятно что это список патчей (т.е заплаток или каких то добавлений), и они могут быть установлены все вместе или каждый в отдельности, так это или нет? Что означают эти цифры в конце каждой строки? И последний вопрос который меня волнует на данном этапе это - насколько безопасна процедура пересборки ядра на рабочей машине т.е может ли пострадать система от неумелых действий во время этого таинства, следует ли перестраховаться и сохранить данные или это совершенно безопасно в этом плане?

Vicpo

Цифры это показатели модификации кода, не программисту они не нужны
Опасность только в том, что машина может вообще не загрузиться с новым ядром либо не все сервисы будут корректно работать.
В случае с мандривой то тут вообще не рекомендуется собирать новое ядро из ванильного ядра.
Так как разработчики накладывают свои патчи на ядро, которые не публикуются и возможны серьезные проблемы с системой. Для сборки ядра достаточно получить исходники ядра из репозитария мандривы

shiko

То есть если я правильно вас понял, после сборки ядра оно сразу становиться на место стоящего, да? А я думал его после этого можно закатать на диск и в дальнейшем использовать для своих нужд. Я подключал депозитарии, но вот где там скачать ядро что то не видел, не дадите ссылочку?

Vicpo

Оно не заменяет, при правильном конфигурировании, а ложится рядом и есть возможность выбора ядра при загрузке системы.
linux-sources либо  kernel-sources точно не помню пакет называется добавляется ещё версия в названии

shiko

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

Vicpo

Если собрать универсальное ядро, типа того которое ставится при инсталяции системы, пересборку обычно делают для уменьшения ядра и заточки его под конкретное железо

shiko

Тогда получается, что если у меня на машине стоит Mandriva и мне необходимо опримизировать работу ядра, то и пересобирать я должен ядро той же мандривы и не какое другое? Я так понимаю это относится ко всем дистрам или нет, просто в статье которую я читаю, да и в книге ничего про это не говорилось. Сразу "качаем ядро и начинаем его пересобирать ....", складывается такое впечатление, что любое ядро для любого дистра бодойдет, главное скачать последнию версию!

Vicpo

Есть дистры где не рекомендуется использовать ванильное ядро, мандрива как раз к таким относится

shiko

Теперь, что вы мне посоветуете сделать чтобы попрактиковаться в этом деле? Если я правильно понял не стои этого делать на рабочей станции, а лучше взять для эксперимента другую машину. И еще скажите пожалуйсто, тогда получается, что пересборку ядра следует как правило делать сразу после установки OS в целях дальнейшей ее настройки и выполняемых задач, правильно?

Vicpo

ну собственно да по всем пунктам  :)

shiko

Спасибо за разъяснения, пойду пособираю инфу почитаю литературу, а то чувствую что багаж еще маловат! :)

shiko

Скажите пожалуйста, что значить установить из исходников? Я тут на форуме прочитал

Лучше поставить из исходников - ничего сложного в этом нет, к тому же можно отключить всё лишнее.
Запусти "Центр управления"->"Установка пакетов", набери в строке поиска kernel-source

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

Vicpo

это команда установка из репозитария исходников ядра

Iskander

shiko - есть понятие "ванильное ядро". Это ядро, которое на kernel.org, мэйнтейнер ядра - Линус Торвальдс.
Но многие дистрибутивы вносят изменения в ядро. Со временем эти изменения могут перейти в ванильное. К примеру RedHat и Novell добавляют проприетарные модули в свое ядро, естественно их в ванильном нет. Свободные патчи тоже не обязаны появится в ванильном - они например могут быть пробой пера, платформой для каких-то программ которые этот дистр продвигает. Лучше брать исходники ядра из репозитариев своего дистра.
Любовь и массовые расстрелы спасут мир.

shiko

Все понятно, значить если сказать проще "ванильные ядра" которое на kernel.org - это ядра чистые без всяких примесей внешних разработчиков, на которые в последствии и накручивается примочки других компаний, я во всяком случаи так понял! Да, тогда конечно собирать такие ядра на своей машине с другим дистром, было бы пустой тратой времени. Спасибо за разъяснение!!
    К стати я нашел через drakconf в "менеджере пакетов" kernel-source т.е версии ядер которые были загружены из репозитария, когда я подключался к нему. Только теперь мне непонятно как действовать дальше, во всех статьях описания сборки из скаченых tar архивов, а у меня rpm. Ну поставлю, я галочку на одной из версий ядра, дам команду на установку а что дальше мне делать :help:  Как мне в данной ситуации запустить процесс пересборки, для того чтобы я мог что то отключить или наоборот? Подскажите пожалуйста, ну или дайте наводку где почитать. :)

Vicpo

Все тоже самое, установишь пакет в каталоге /usr/src появится каталог linux-<версия ядра> вот с этого места действия одни и те же 

Zavr

вот кстати очень удобно, почти всегда так делаю
# make cloneconfig ; make ; make modules_install install ; halt
и пашол спать
ночь, полная луна, по кладбищу бродят пингвины... готишно...

shiko

Цитировать# make cloneconfig ; make ; make modules_install install ; halt
и пашол спать
А на вопросы по конфигурации ядра, что отвечать не надо???

Zavr

Цитировать
Цитировать# make cloneconfig ; make ; make modules_install install ; halt
и пашол спать
А на вопросы по конфигурации ядра, что отвечать не надо???
cloneconfig создает конфиг
я если компиляю ядро, использую версию уже установленого чтобы поставить дрова на nvidia например, а не для того чтобы обновить
ночь, полная луна, по кладбищу бродят пингвины... готишно...

dalvis

Здравствуйте! Подскажите кто знает! Вопрос в следующем, необходимо задействовать несколько пунктов в конфигурации ядра OS Linux Mandriva, на уже  установленной и работающей машине. Версия ядра 2.6.22.9 . Из собранной информации понял что можно это сделать через конфигурационный файл ядра, когда стал разбираться дальше возник спорный вопрос "какой конфиг править?", дело в том что конфигов два, один лежит в директории: /usr/src/linux-2.6.22.9-desktop-1mdv/.conf , а другой в : /proc/config.gz.  Вопрос, какой файл править т.е с каким мне работать и что это за файл  config.gz, он по содержанию один в один как .conf ???