Меню Рубрики

Компиляция ядра linux debian

Компиляция и установка Linux из исходников в Debian

Впервые опубликовано 2008-10-11.

1. Подготовка

Для начала, следует установить пакеты, необходимые для сборки ядра:

Если вам потребуется перенастроить ядро средствами menuconfig, нужно будет также установить пакет libncurses5-dev .

2. Получение и распаковка исходников Linux

Исходники текущей версии ядра можно скачать с www.kernel.org, они выложены там под названием linux- .tar.bz2 (к примеру, linux-2.6.31.tar.bz2 ). Распаковать их:

После чего перейти в созданный при распаковке каталог.

3. Настройка компилятора

Данные шаги выполнять в том же терминале, где в дальнейшем будет запущена сборка ядра.

Для того, чтобы ускорить компиляцию на многоядерных (или многопроцессорных) системах, можно задать количество одновременно запускаемых процессов для сборки не зависящих друг от друга частей ядра:

При желании использовать для сборки ядра версию gcc , отличающуюся от установленной в системе по умолчанию (например — новее, чтобы получить преимущества от добавленных в ней возможностей, либо старее, чтобы избежать проблем с совместимостью), перед вызовом make-kpkg следует также выполнить (к примеру, для версии gcc 4.4):

Если же собираем ядро для архитектуры, отличающейся от текущей (к примеру, для 32-битных x86-машин, находясь в системе amd64), следует указать желаемую архитектуру в переменной окружения ARCH:

…и непосредственно при запуске make-kpkg , добавить соответствующий ключ:

4. Настройка будущего ядра

Прежде всего, стоит удостовериться, что в текущем каталоге с исходниками не осталось никаких старых временных файлов и прочего мусора:

Если у вас нет заранее сохранённых .config -файлов, но вы не хотите конфигурировать ядро с нуля, можно взять настройки, использовавшиеся при компиляции текущего ядра:

Либо скачать настроечные файлы официальных ядер Debian вот отсюда.

Запускаем утилиту настройки:

Значения всех уже существовавших в прошлой версии опций ядра будут взяты из старого настроечного файла. Для завершения процесса, достаточно лишь принять решение по опциям, появившимся в версиях новее её.

5. Компиляция ядра и создание deb-пакетов

Для создания пакетов c ядром и заголовочными файлами, нужно выполнить следующее:

Вместо -custom , в качестве обозначения вашего ядра можно указать что угодно, от вашего имени или псевдонима (чтобы не забыть, что это ядро собиралось именно вами), до сугубо технически-полезной информации (что-нибудь в духе -foobarfs-patch8-debug1 ).

6. Установка deb-пакетов

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

Источник

Сборка и установка ядра под Debian

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

Для начала ставим пакеты fakeroot, kernel-package, libncurses5-dev:

Все зависимости будут подтянуты автоматом…
Затем берём нужный архив с kernel.org и сливаем и распаковываем его в /usr/src (берём для примера ядро 2.6.31.4).

Тут есть один момент. Так как у нас уже есть рабочее ядро в установленной системе то, если не хотим выставлять все галочки в конфигурации нового ядра с нуля, берём готовый config либо из /boot либо из /proc:

В итоге имеем предварительную заготовку к конфигурации нашего нового ядра.

Теперь конфигурируем ядро под специфические для нас цели, либо добавляем опции для новых модулей, либо… Одним словом — творчество:

Тут интересно будет отметить, что если мы сразу-же выйдем из меню, то можем увидеть что-то подобное этому:

имеет смысл найти эти опции при конфигурировании нового ядра и посмотреть что да к чему…
Или, как мне подсказали, использовать:

для компиляции новой версии, которая все совпадающие опции трогать не будет, а насчёт остальных, которые изменились, спросит.
Кстати, если кому интересно под X-ами заниматься конфигурированием, то может сделать так:

Важно! Не забываем сказать «Kernel module loader» в «Loadable module support», так как возможны варианты.
Ну всё. Пимпочки поотмечали, кнопочки понажимали, из окошек вышли, новый конфиг сохранили, теперь приступим к сборке. Для начала сделаем:

Увидим что-то наподобие этого:

Ну, а теперь, собственно, собираем ядро:

og.091015.00 — означает лишь ревизию нашей сборки (меньше букв, но больше цифр, иначе получите ошибку в под самый конц сборки и придётся всё повторять с самого начала), а в остальном может быть любой — у кого насколько фантазии хватит 🙂
После того как предыдущая команда нормально выполнится, можно также дать такой «джентельменский набор»:

После этого получим набор из следующих deb-пакетов:

  • linux-image-2.6.31.4_og.091015.00_i386.deb
  • linux-headers-2.6.31.4_og.091015.00_i386.deb
  • linux-manual-2.6.31.4_og.091015.00_all.deb
  • linux-doc-2.6.31.4_og.091015.00_all.deb
  • linux-source-2.6.31.4_og.091015.00_all.deb

располагаться они будут в /usr/src.
Нам остаётся их только установить через dpkg:

и т.д.
Конфигурация к GRUB’у должна будет выполниться автоматически, равно как и собраться initrd.
Финальный шаг:

Источник

Собираем ядро Linux для deb-ориентированных систем

Добрый день всем, кто оказался на данном сайте. Ядро Linux является важным компонентом системы. От него так же зависит поддержка того или иного оборудования. В самом ядре Linux имеется множество параметров, которые по умолчанию выключены. А так же, некоторые дистрибутивы вносят в ядро Linux свои изменения, например, те же патчи. Вы можете например пересобрать уже имеющееся в системе ядро Linux. Либо, собрать новое, самой последней версии скачав его с официального сайта. Чем мы сегодня и займемся. Собирать ядро мы будем для deb ориентированных систем (Debian / Ubuntu).

Подготовка к сборке ядра Linux

Для того что бы собрать ядро, нам нужно скачать его исходники, которые находятся на сайте. Для этого переходим на сайт по этой ссылке и качаем исходники нажав на кнопку:

Так же можно скачать необходимые патчи для процессора. Что собственно позволит вам собрать ядро именно под ваш процессор. Для этого нужно перейти по данной ссылке и скачать zip архив:

После чего нам нужно будет распаковать скаченные архивы. Для этого вы можете воспользоваться либо терминалом, либо, какой нибудь графической утилитой, например, Ark:

После того, как вы распаковали скаченные ранее архивы, можно переходить к установке патчей для процессора.

Ставим патч поддержки процессоров

После чего если вы не хотите ставить патчи для своего процессора, можете переходить к сборке ядра. А для тех кто хочет оптимизировать ядро именно под свой процессор, необходимо узнать к какому семейству он относится. Для этого можно воспользоваться поиском и посмотреть в характеристиках вашего процессора. В моем случае на стационарном компьютере стоит “i5-3450”, это семейство “Ivi Bridge”. Соответственно, запоминаем и двигаемся дальше:

После чего нам нужно выяснить какой из представленных патчей нам нужно поставить. Для этого возвращаемся на github где мы скачивали патчи и смотрим каждый из них, для того что бы выяснить какой нам нужен. Для этого вы можете прямо в браузере нажать на название патча, так же обращаем внимания на то, для какого ядра этот патч (kernel_v5.5-v5.6.patch):

Далее откроется список, где вам нужно найти именно ваш процессор, пролистав немного вниз открывшийся список:

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

Теперь, когда мы выяснили что за процессор и какой из патчей ставить, переходим в папку с ядром. Для этого в терминале вводим команду “cd и путь до папки”. В моем случае это:

После чего вводим команду “patch -p1

Настройка ядра Linux

После всех проделанных манипуляций, можно переходить к настройке ядра. Для этого мы воспользуемся псевдографическим интерфейсом. Так же можно воспользоватся командами “make oldconfig” Для автоматической настройке ядра, основываясь на установленном ядре в вашей системы. Для вывода псевдографического интерфейса вводим команду:

После чего в открывшемся окне заходим в пункт “Processor type and features”, затем переходим в пункт “Processor family”. Перемещаться по списку можно при помощи стрелочек на клавиатуре:

И тут выбираем наш процессор, а для тех кто не ставил патч, выбираем “Generic-x86-64”. Перемещаемся используя все те же стрелочки на клавиатуре. А отметить нужный пункт при помощи пробела. Когда вы выберете нужный пункт и нажмете пробел, вас сразу же перебросит обратно. Так устроенно ядро, по факту, нажав пробел, вы отметите нужный вам пункт. При желании можно проверить, вернувшись обратно и посмотреть на результат:

После чего вы можете пробежаться по всем пунктам и настроить ядро в соответствии с вашими пожеланиями. Но, это только для тех, кто знает какое оборудование стоит в его компьютере (ноутбуке). А так же для тех, кто хоть немного знаком с устройством самого Linux. То есть, вы можете настроить в ядре поддержку например файловых систем, опять же, если вы знаете что вам нужно, а что нет. Так же виртуализацию и остальные параметры, но, для этого нужно разбираться в системе. Ну а мы двигаемся дальше. Теперь с помощью все тех же самых стрелочек на клавиатуре выбираем пункт “Save” и нажимаем “Enter”, после чего выбираем пункт “OK”, а затем нажимаем “Exit”:

После чего выходим из параметров ядра, нажав на “Exit”, затем еще раз “Exit”:

Редактируем .config

После того как вы настроили ядро и вышли из его настроек, нужно будет отредактировать скрытый файл “.config”. Что нам это даст, это отключит так называемый “Debug” при сборке ядра. По сути, это не обязательный пункт, и его можно пропустить. То есть, если вы хотите видеть вывод информации при сборке ядра, оставьте данный пункт включенным и переходите к дальнейшим действиям. Открыть его можно любым текстовым редактором. Находится данный файл все в том же каталоге ядра. Я буду редактировать его с помощью редактора “Nano”, как пользоваться данным редактором вы можете прочесть в этой статье . Находясь все в том же каталоге вводим команду:

После чего нужно найти параметр “CONFIG_DEBUG_INFO” и изменить его значение вместо “y” на “n”:

Сборка ядра Linux

Собственно, теперь переходим к сборке самого ядра, но, сначала давайте установим необходимые зависимости. Для этого вводим команду в терминале:

sudo apt-get install build-essential git gcc make bc fakeroot dpkg-dev libncurses5-dev libssl-dev

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

После чего вам придется ответить на некоторые вопросы. По большому счету, вы можете просто нажимать “Enter”. В моем же случае вопросы не задавались, так как я раньше уже выполнял данную команду:

Теперь можно запускать сборку нашего ядра. Для этого вводим команду “make – j4 bindeb-pkg”, цыфру “4” меняем на количество ядер вашего процессора:

Данный процес сборки ядра может занять продолжительное время. Тут все зависит от вашего компьютера, а именно от его мощности:

После того как процесс сборки ядра завершится, у вас появится несколько deb, которые будут лежать на каталог выше. То есть, в данном случае они лежат в каталоге “Загрузки”. Эти файлы вам следует установить в вашу систему. Для этого можно воспользоваться командой в терминале, либо, установить при помощи gdebi. Смотрите как вам удобней, так и устанавливайте:

Я же буду устанавливать при помощи утилиты dpkg. Для этого открываем терминал, переходим в папку где у вас лежат файлы собранного ядра и вводим команду:

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

Заключение

Когда вы будете собирать ядро, возможно, могут возникнуть проблемы. Например с зависимостями, для их решения рекомендуется воспользоваться поиском. Что же касается других дистрибутивов Linux, например, RPM ориентированных, то данный способ для них не подойдет. Как собрать ядро в RPM ориентированных системах, мы рассмотрим в одной из следующих статей.

А на этом сегодня все. Надеюсь данная статья будет вам полезна.
С уважением Cyber-X

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Компиляция файла в linux
  • Компиляция программ в linux
  • Компиляция модуля ядра linux
  • Компиляция и запуск c в linux
  • Компиляция в linux программы