The OpenNET Project
 
Поиск (ключи):  ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
ССЫЛКИ НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

Сборка и компилирование ядра Linux (linux kernel compile)


<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: linux, kernel, compile,  (найти похожие документы)
From: Dr.Pixel <usama13@rambler.ru.> Newsgroups: email Date: Mon, 23 May 2005 18:21:07 +0000 (UTC) Subject: Сборка и компилирование ядра Linux [1]---// Intro Замечательной чертой Linux-подобных осей является то, что при необходимости можно не только изменить некоторые системные параметры, но и полностью перекомпилировать всю ось! Чем мы в сущности и займемся... [2]---// Этапы сборки ядра -> 1 Приобретение исходников ядра. -> 2 Подготовка каталогов с исходниками ядра. -> 3 Конфигурирование ядра. -> 4 Компиляция ядра и установка модулей. -> 5 Перемещение ядра. -> 6 Настройка и запуск lilo. Для нормальной сборки и компиляции ядра следует выполнять все этапы по порядку. Рассмотрим каждый из этапов подробнее... 1. Приобретение исходников ядра: Исходники своего ядра можно найти на дистрибутиве со своей осью. Но на нем не всегда последняя версия ядра =(. Исходники последней версии ядра для Linux можно найти на ftp://ftp.kernel.org (или на каком-нибудь зеркале). Там ядра лежат в /pub/linux/. Загрузи ядро себе на хард и помести его в каталог /usr/src. Там-же создай каталог для файлов и каталогов ядра (обычно создают что-то типа linux-2.X.X, где 2.X.X - версия нового ядра) командой mkdir linux-2.X.X. После этого создай связь с каталогом linux (ln -s linux-2.X.X linux). Если каталог linux-2.X.X уже существует, то его предварительно надо удалить. Ну все, вроде сырцы нашли, да папку создали... Продолжаем... 2. Подготовка каталогов с исходниками ядра. После успешно завершенного этапа 1 пришло время подготовить древо каталогов для файлов исходных кодов ядра. Синтаксис команды для восстановления древа зависит от формата скаченного файла. В нашем случае это могут быть файлы linux-2.X.X.tar.gz и linux-2.X.X.tar.bz2. Для каждого из файлов используется определенный набор команд. Для linux-2.X.X.tar.gz: tar xzvf linux-2.X.X.tar.gz Для linux-2.X.X.tar.bz2: bzcat linux-2.X.X.tar.bz2 | tar xv При выполнении этих команд содержимое файлов развернется в каталог, определенный связью linux. После этого командой cd перейди в каталог linux (cd linux). Этот каталог называется каталогом верхнего уровня исходного древа. В нем много каталогов, одним из которых является Documentation, в котором хранится дополнительная информация по ядру. Для начала компиляции нового ядра выполни команду: make mrproper Ядро скомпилировано... Попробуем его настроить для своих потребностей... 3. Конфигурирование ядра. На этом этапе придется выбрать опции, которые будут использоваться в новом ядре. Не обязательно вникать в подробности массы опций. В большинстве из них можно воспользоваться настройками по умолчанию (плохо не посоветуют =)). Существуют три метода создания файла конфигурации, используемого при сборке нового ядра (подробно опишу метод 3): 1 make config 2 make menuconfig 3 make xconfig make config - это наиболее простой пошаговый сценарий. make menuconfig - это более удобный метод (требует наличие ncurses). make xconfig - это графическая утилита для настройки ядра. Перед тем, как ей воспользоваться необходимо перейти в среду X Window. После выполнения этой команды сначала скомпилируются необходимые элементы, затем появится диалоговое окно. Для каждой из представленных опций есть 3 установочных параметра: y,m,n. y(yes) - Включает или встраивает опцию в ядро. m(module) - Создает для выбранной опции загружаемый в динамическом режиме модуль (без reboot'a). Существует не для всех опций. n(no) - Отключает поддержку опции. Для использования конфигуратора на базе X в системе должны буть установлены библиотеки TCL/TK. Вроде все... Ядро настроено... 4. Компиляция ядра и установка модулей. В свою очередь этот этап делится на шаги: 1 Подготовка -> make dep -> make clean 2 Непосредственно сборка ядра -> make bzImage|bzdisk|bzlilo 3 Сборка и установка модулей -> make modules -> make modules_install Первый из них - make dep и make clean - являются типа подготовкой. После выполнения make dep создаются файлы зависимостей (.depend), которые располаются в каждом из подкаталогов древа исходных кодов. Если нет нарушений в расположении компонентов древа, то процесс пройдет спокойно. Далее используется команда make clean, которая удалит все лишние (вспомогательные) файлы, созданные от предыдущих процессов компиляции. Далее идет шаг, при котором необходимо непосредственно собрать ядро. Для сборки ядра придется выбрать одну из 3-х команд: make bzImage, make bzdisk или make bzlilo. Каждая из команд выполняет фактически одну и ту-же операцию, только две последние выполняют одно дополнительное действие. Рассмотрим подробнее каждую из команд: make bzImage - стандартная операция, при которой будет только скомпилировано ядро. Если все прошло без проблем, то созданное в результате компиляции ядро будет расположено в каталоге /usr/src/linux/arch/i386/boot. В этом случае ядру присваивается имя bzImage. Диспетчер загрузки lilo|grub должен найти это ядро и загрузить его. Для этого достаточно скопировать файл bzImage и выполнить команду lilo для переустановки диспетчера загрузки. make bzdisk - этот метод позволяет выполнить практически ту-же задачу, что и bzImage, но после завершения компиляции будет автоматически выполнено копирование нового ядра на дискету. В дальнейшем эту дискету можно будет использовать для загрузки системы. make bzlilo - это рекомендуемый метод формирования и инсталляции нового ядра, требующий предварительной подготовки lilo. При использовании этого метода map-файл ядра не перемещается в другой каталог. Более того новое ядро может быть записано поверх уже существующего, причем записано с ошибками, поэтому его использование не рекомендуется. Этот метод очень похож на bzImage и отличается только наличием дополнительной операцией, которая выполняется после совершения компиляции ядра. После компиляции ядра происходит копирование файлов созданного ядра в каталог / в качестве vmlinuz (при этом сохраняется резервная копия файла vmlinuz), затем выполняется команда lilo, в результате чего происходит переустановка диспетчера загрузки (и распознавание нового ядра). Третим шагом является сборка и установка модулей ядра. Этот процесс выполняется с помощью 2-х команд make modules и make modules_install. Название команды make modules говорит само за себя: при выполнении этой команды происходит сборка модулей, которые соответствуют ядру, созданному на предыдущем этапе. Команда make modules_install, в сою очередь, перемещает созданные модули из исходного древа ядра в каталог /lib/modules/<kernel-version>/kernel/<module-type>. В качестве типа модуля (<module-type>) используется имя категории, к которой относятся созданные модули (Например: block, misk, net, pcmcia, etc...). 5. Перемещение ядра. После завершения процесса сборки тебе необходимо инсталлировать как ядро, так и его map-файл в каталог, где они будут постоянно находиться (/boot). Скопируй (или перемести) файл System.map в каталог /boot, добавив номер версии ядра в конец строки: cp System.map /boot/System.map-2.X.X Затем точно так-же скопируй (или перемести) и само ядро: cp arch/i386/boot/bzImage /boot/bzImage-2.X.X Когда ядро и map-файл будут на своем новом месте жительства тебе останется выполнить только два коротких действия, после которых ты сможешь перезагрузиться уже с новым ядром (или со старым, если возникнут траблы =)). 6. Настройка и запуск lilo. Диспетчер загрузки lilo дает возможность определить несколько образов загрузки. Вставив новый раздел образа в файло /etc/lilo.conf можно получить дополнительный образ загрузки. Для этого необходимо продублировать последние 6 строк файла и изменить адрес до загружаемого ядра. старый lilo.conf, последние 6 строк) image = /boot/<Уже стоящее в системе ядро> lable = linux root = /dev/hda1 vga = 274 read-only append = "debug=2 noapic nosmp" Покоцано (Модифицированный lilo.conf с ) image = /boot/<Уже стоящее в системе ядро> lable = linux.orig root = /dev/hda1 vga = 274 read-only append = "debug=2 noapic nosmp" image = /boot/<Новое ядро> lable = linux root = /dev/hda1 vga = 274 read-only append = "debug=2 noapic nosmp" Обрати внимание на lable = linux.orig (это метка старого ядра). После конфигурации файла /etc/lilo.conf следует пеановить диспетчер начальной загрузки системы. Для этого выполни следующие команды: # lilo Added linux * Added linux.orig Все. Если все прошло без ошибок, то пора перезагрузить систему. В случае, если новое ядро является причиной некорректной работы системы во время ее загрузки, то ты можешь воспользоваться исходным ядром. Для загрузки системы необходимо ввести имя метка желаемого образа загрузки. Чтобы вывести на экран перечень доступных меток следует нажать на клавишу <Tab>. [3]---// Outro все... Надеюсь что все вышеописанное в статье вам как-либо образом поможет... /=====================================\ | (С) DKCS security team | Автор: Dr.Pixel | E-mail: usama13@rambler.ru | Url: http://DKCS.void.ru \=====================================/

<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ Ajax режим | Смотреть все | RSS ]
 
  • Сборка и компилирование ядра Linux (linu, tricky, 23:22, 23/05/2005 [ответить] (1)
  • +/
    пересказывать главы из книг на сайтах сейчас стало модным?
    все что здесь написано черным по белому изложено в книге Д.Бендела и Р.Нейпира
    "Специально издание. Linux 6-е издание".
    не кузявисто как то...

  • Сборка и компилирование ядра Linux (linu, dubanoze, 07:23, 24/05/2005 [ответить] (2)
  • +/
    Просто, и понятно, спасибо!

  • Сборка и компилирование ядра Linux (linu, const, 09:05, 24/05/2005 [ответить] (3)
  • +/
      Ведро воды и ни крупинки соли!
      Не думаю, что человек, не умеющий распаковывать архивы без пошаговых инструкций, возьмётся за сборку ядра ОС.
      Такая длиннющая цепочка команд make - это чтобы отпугнуть или попонтоваться? Мне хватает make mrproper menuconfig binrpm-pkg для 2.6 и make mrproper menuconfig dep rpm для 2.4.
      Я считаю, что собирать своё ядро требуется для выбора необходимых компонентов в соответствии с имеющимся железом и установки параметров в соответствии с предполагаемыми задачами для компьютера. Почему-то этой мысли я не нашёл в статье. Описано только 5% работы. А расстановку галочек в конфигураторе (95%) оставили другому автору...

  • Сборка ядра из пакета, Денис, 09:11, 24/05/2005 [ответить] (4)
  • +/
    Все жду когда кто-нибудь напишет статью про пересборку ядра из пакетов дистрибутива,с наложением дополнительных патчей.

  • Сборка и компилирование ядра Linux (linu, ImnepaTop, 09:14, 24/05/2005 [ответить] (5)
  • +/
    Расстановку галочек уже описали :)

     
  • где линк пожалуйста ..., andre, 10:00, 24/05/2005 [ответить] (7) 
  • +/
    текст скрыт [посмотреть] [смотреть все]

     
  • В каталоге Documentation Вообще-то довольно трудн..., const, 10:26, 24/05/2005 [ответить] (10) 
  • +/
    текст скрыт [посмотреть] [смотреть все]

  • Сборка и компилирование ядра Linux (linu, anonim, 09:27, 24/05/2005 [ответить] (6) 
  • +/
    Надо бы немного уточнить по поводу make dep для
    сборки ядер ветки 2.6.x, а то ведь некоторые так и будут пытаться сделать.

     
  • Надо бы немного уточнить по поводу make dep для сборк..., greendog, 07:01, 09/07/2005 [ответить] (22) 
  • +/
    текст скрыт [посмотреть] [смотреть все]

  • Сборка и компилирование ядра Linux (linu, Vasya, 10:05, 24/05/2005 [ответить] (8) 
  • +/
    просвятите, а какое счастье принесет запуск mrproper? Почему не make clean?

  • Сборка и компилирование ядра Linux (linu, Stas, 10:25, 24/05/2005 [ответить] (9) 
  • +/
        ДЕйствительно ни крупинки соли -  одна вода. Согласен с Денисом -  написал бы кто-нибудь про сборку с патчами. Вот у меня 2.6.9 не патчится,  чертыхается на отсутствие чего-то, что надо
    патчить.  А обычные how-to ничего не говорят....        

     
  • Хм Обычно patch довольно внятно ругается на то, в чем..., Sergey, 19:31, 26/05/2005 [ответить] (20) 
  • +/
    текст скрыт [посмотреть] [смотреть все]

  • Сборка и компилирование ядра Linux (linu, Sperling, 15:03, 24/05/2005 [ответить] (11) 
  • +/
    Da i nafiga nam instruktiya po kernel 2.4.x,
    kogda uje 2.6.x vovsy stavitsya ?!?!?!?!?

  • Сборка и компилирование ядра Linux (linu, Dr.Pixel, 16:13, 24/05/2005 [ответить] (12) 
  • +/
    2tricky, я книги не читаю...
    2const, =) про расстановку галочек можно целую книгу написать.... да и default imho плхого не посоветуют...
    ============================
    Я пытался описать унаверс. способ компиляции, со всевозможными проишествиями, которые могут произойти в процессе установки. Да и немного описать команды =)...
    P.S.
    Не судите строго

     
  • Так-то оно так, но зачем что-то пересобирать, если полу..., const, 16:28, 24/05/2005 [ответить] (13) 
  • +/
    текст скрыт [посмотреть] [смотреть все]

     
  • Это очень востребованно среди новичков, вот уже довольн..., alpha_Qu4z4r, 16:42, 22/02/2007 [ответить] (34) 
  • +/
    текст скрыт [посмотреть] [смотреть все]

  • Сборка и компилирование ядра Linux (linu, Enmar, 18:52, 24/05/2005 [ответить] (14) 
  • +/
    Нет в тексте нормального описания опций ядра

     
  • Смотри, какое у тебя железо стоит, какие задачи оно буд..., Profan, 21:07, 24/05/2005 [ответить] (17) 
  • +/
    текст скрыт [посмотреть] [смотреть все]

  • Сборка и компилирование ядра Linux (linu, Profan, 21:02, 24/05/2005 [ответить] (15) 
  • +/
    негусто...
    Конечно, описывать расстановку галочек - труд неблагодарный... Но проблема не в том, как СОБРАТЬ ядро, а в том, как правильно его сконфигурить...
    вот где репу чесать приходится...

  • Сборка и компилирование ядра Linux (linu, Profan, 21:05, 24/05/2005 [ответить] (16) 
  • +/
    А ежели по default  все делать, так тогда и пачкаться не стоит... :)))

  • Сборка и компилирование ядра Linux (linu, Alexei4, 12:21, 25/05/2005 [ответить] (18) 
  • +/
    >Для начала компиляции нового ядра выполни команду:
            make mrproper
    Ядро скомпилировано...

    Честно?


  • Сборка и компилирование ядра Linux (linu, MikeM, 18:43, 25/05/2005 [ответить] (19) 
  • +/

    <Для начала компиляции нового ядра выполни команду:

            make mrproper


    Ядро скомпилировано... Попробуем его настроить для своих потребностей... >
    ???? "Это как ? КАК ЭТО? нет слов. Остались термены. Сначала конфигурируем, а потом компилируем. А команда make clean всё же должна присутствовать для очистки переменных среды.

    Вообще стоит описывать процесс сборки ядра как частный случай сборки программы. То есть нет смысла описывать как работает tar, bzip, make и тд, но отсылать к манам стоит. В конце концов зная как работают эти программы можно просто понять что нужно делать для сборки ядра. Пошаговые инструкции - для виндов "Чтобы открыть файл щёлкните мышью на меню файл-открыть" остаётся только пускать слюни и щёлкать...


  • Сборка и компилирование ядра Linux (linu, keks, 14:09, 01/07/2005 [ответить] (21) 
  • +/
    По критике, которую сдесь выложили, лично я негодую. Я ламер, и эта статья мне в принципе помогла. А книги, все достойные книги по Линксу, сразу не купишь и не прочтёшь. Хотя если бы сдесь и про галочки было и про девайсы наверное было бы лучше...

  • Сборка и компилирование ядра Linux (linu, arktur, 14:36, 03/08/2005 [ответить] (23) 
  • +/
    а почему никто не напишет как пересобрать ядро , например для Pentium II 400 265RAM and etc.
    Для примера бреновськой комп Simens
    я думаю што на одном примере можна понячть і научитса собирать на других платформах,
    Хочетса штоби тот ГУРУ в етом деле написал Статтю
    За ранеє благадарен

  • Сборка и компилирование ядра Linux (linu, ven00m, 12:22, 19/09/2005 [ответить] (24) 
  • +/
    статья так себе....ничего конкретного, просто базовые комманды, которые можно получить набрав "make help" ....

  • Сборка и компилирование ядра Linux (linu, Vit, 15:16, 22/09/2005 [ответить] (25) 
  • +/
    а как собрать, например на интелле П4  9ый редхат для установкие потом этого собранного в доисторический K6 ?
    как заставить ядро при загрузке писать все что грузит (или не грузит) на экран (у меня например просто после начала загрузки К6 виснет молча ) чтобы можно было определить проблему? ...

  • Сборка и компилирование ядра Linux (linu, Krovogad, 21:52, 10/10/2005 [ответить] (26) 
  • +/
    Такое ощущение, что критика исходит в основном от тех, кто со свистком (у кого не получилось), иначе она была бы конструктивной :)

  • Сборка и компилирование ядра Linux (linu, Krovogad, 22:32, 27/01/2006 [ответить] (27) 
  • +/
    А где брать этот system.map?
    Вместе с ядром он не создаётся!

     
  • Сборка и компилирование ядра Linux (linu, Michail Tz, 00:54, 26/01/2007 [ответить] (33) 
  • +/
    >А где брать этот system.map?
    >Вместе с ядром он не создаётся!
    bzImage у нас лежит в /usr/src/~linux/arch/.../boot/
    А System.map в /usr/src/~linux/
    ИМХО.



  • Сборка и компилирование ядра Linux (linu, Krovogad, 14:26, 28/01/2006 [ответить] (28) 
  • +/
    И не грузицца больше :(

  • Сборка и компилирование ядра Linux (linu, Paraman, 18:02, 01/02/2006 [ответить] (29) 
  • +/
    У меня отмерла сетёвка после такой зборки.

  • Сборка и компилирование ядра Linux (linu, AbysS, 13:17, 19/04/2006 [ответить] (31) 
  • +/
    Данная статья нагло содрана с "Использование линукс" 6-е издание 2004 г. даже ghj initrd ничего не добавлено.

  • Сборка и компилирование ядра Linux (linu, krz, 16:20, 27/04/2006 [ответить] (32) 
  • +/
    Для инструкции "Первая сборка ядра" вполне пойдёт
    Как вспомню свои кривые первые bzImage или паник кернел : ))))))
    за сутки раз по 20 пересобирал
    (благо что камень хороший был)

     
  • Сборка и компилирование ядра Linux (linu, Romeo, 00:08, 08/03/2007 [ответить] (35
  • +/
    >Для инструкции "Первая сборка ядра" вполне пойдёт
    >Как вспомню свои кривые первые bzImage или паник кернел : ))))))
    > за сутки раз по 20 пересобирал
    >(благо что камень хороший был)


    ...был :)


     
  • Сборка и компилирование ядра Linux (linu, chupz, 15:12, 06/06/2008 [ответить] (37
  • +/
    Статья - просто как ман, если кто не понимает или не хочет понимать - то можно в мастдай сходить назад и сидеть (там ядро не надо компилить).
    Я компилил своё первое ядро именно по такому-же ману но только с книги. Всё нормально заработало, правда стормозил - вырубил framebufer и моё ядрышко грузилось только в сейвмоде - но ничего, самый лучшый опыт тот, ктоторый "руцями" и ошибками.
    А описывать "галочки" - щетаю бредом (опять ссылаюсь на мастдай, там нет галочек ;)) у каждого своё железо у каждого свои надобности к ОС. И даже с моими скудными навыками инглиша, я по тем ремаркам смог определить что надо, а что - нет.
    А вообще понял одно - для того, чтобы ПРАВИЛЬНО ПЕРЕСОБРАТЬ ЯДРО, нужно сначала УЗНАТЬ КАКОЕ У ВАС ЖЕЛЕЗО ВПЛОТЬ ДО КОНТРОЛЛЕРОВ И ПРОИЗВОДИТЕЛЕЙ ОНЫХ. прошу прощения за капс.

     
  • Сборка и компилирование ядра Linux (linu, serge, 20:33, 12/08/2008 [ответить] (38
  • +/
    Задолбали "умники" , кто нибудь может описать начинающему человеку как всё-таки под линуксом компилиться ядро ? если нет ,то зачем это всё ?
    Почему под фрёй все без проблем? три команди и всё готово, под линуксом же хрен найдёшь
    толковое описание только одни мыльные пузыри вроде большинства вышенаписанных комментов.

  • Сборка и компилирование ядра Linux (linu, Юрий, 13:18, 06/01/2010 [ответить] (39
  • +/
    Не надо автора ругать, мне все помогло.
    Если хотите подробнее то вот ссылка:
    http://www.linuxcenter.ru/lib/articles/system/kernel26_install.phtml



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



    Подпишись на Linux Format и получи один из 3 ценных призов!

    Началась подписка на журнал Linux Format на 2010 год. Спешите оформить подписку на единственный в России ежемесячный журнал о Linux!

    Все, оформившие подписку на печатную версию журнала, получают диск с архивом журнала Linux Format за 2005-2009г. в подарок. Также в подарок вы получаете именную электронную версию в формате PDF. Теперь вы можете приступить к чтению журнала сразу в момент выхода свежего номера, не дожидаясь, пока вам доставят бумажную версию.

    Кроме того, все, оформившие подписку на первую половину или весь 2010 год в интернет-магазине ГНУ/Линуксцентра, автоматически становятся участниками розыгрыша ценных призов:


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