Конфигурирование и компиляция ядра Linux. Обновление ядра Linux до новой версии Распаковываем исходный код ядра

Ягоды 15.04.2022
Ягоды

Ядро (англ. kernel ) – то, вокруг чего строится всё остальное. Именно оно и называется Linux. Сейчас словом Linux в быту называют построенную на нём операционную систему, хотя по-хорошему она называется GNU/Linux (ядро Linux и ПО от проекта GNU, многие десятилетия находящейся в разработке).

В Ubuntu исппользуется ядро с большим количеством патчей , часть из которых добавляет нестабильные и экспериментальные возможности .

Каждый релиз Ubuntu имеет собственную версию ядра. LTS -релизы начиная с 10.04 получили возможность обновить ядро до версий, входящих в состав более новых релизов.

Версия Ubuntu Версия ядра
4.10 2.6.9
5.04 2.6.11
5.10 2.6.13
6.06 LTS 2.6.15
6.10 2.6.18
7.04 2.6.19
7.10 2.6.20
8.04 LTS 2.6.24
8.10 2.6.27
9.04 2.6.28
9.10 2.6.31
10.04 LTS 2.6.32
10.10 2.6.35
11.04 2.6.38
11.10 3.0.4
12.04 LTS 3.2
12.10 3.5
13.04 3.8
13.10 3.11
14.04 LTS 3.13
14.10 3.16
15.04 3.19

Форки

Нумерация версий ядра Ubuntu и на сайте kernel.org не совпадает, так как для обозначения добавленных патчей разработчики из Canonical добавляют микроверсию. Например, версия 3.2.0-23 будет означать, что ядро базируется на ветке 3.2, на которую было наложено 23 патча.

В репозитории Ubuntu поддерживаются следующие типы ядер:

generic-pae ядро позволяет 32-битной системе использовать до 64ГБ общего объёма оперативной памяти, выделяя под нужды конкретного процесса не более 4ГБ, в то время как простое ядро generic работает не более чем с 4ГБ ОЗУ.

64-битное ядро позволяет адресовать до 1ТБ памяти, потребляемой процессами.

Если требуется обновить ядро на более новую мажорную версию (обычно это связано с тем, что в новых версиях добавляется поддержка нового оборудования, устраняются регрессии) можно воспользоватся официально поддерживаемым архивом http://kernel.ubuntu.com/~kernel-ppa/mainline/ .

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

Сборка ядра из исходных кодов требует некоторых навыков и знаний о работе ОС.

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

Build-essential fakeroot ncurses-dev libssl-dev

Все дальнейшие действия необходимо выполнять от лица суперпользователя :

sudo su

Получение исходного кода

Исходный код ядра, используемого в Ubuntu можно получить установив пакет linux-source:

apt-get install linux-source

После установки в директории /usr/src появится архив называющийся linux-source-верися_ядра.tar.bz2 .

Так же можно скачать архив и с исходным кодом ядра с сайта kernel.org .

Скачивая ядро с сайта kernel.org, вам придётся наложить на него патчи

Конфигурирование

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

cd / usr/ src tar xjf ./ linux-source-3.2.0.tar.bz2 ln -s ./ linux-source-3.2.0 ./ linux cd ./ linux

Для упрощения процесса конфигурации ядра можно скопировать настройки текущего.

Ядро дистрибутивов Linux — основа операционной системы, которая отвечает за совместимость с устройствами и выполняет другие важные опции. Сейчас разработчики стараются раз в несколько месяцев или даже чаще выпускать обновления ядер для введения новых функций и поддержки производимого оборудования. К Ubuntu эта тема тоже относится, поэтому некоторые обладатели данного дистрибутива сталкиваются с необходимостью инсталляции апдейтов. Выполняется данная процедура относительно сложно, поскольку каждое действие будет производиться через «Терминал» . Далее мы хотим продемонстрировать два способа, позволяющих справиться с поставленной задачей.

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

Определяем текущую версию ядра в Ubuntu

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


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

Способ 1: Ручной режим обновления

Ручной режим обновления ядра в Ubuntu займет немного больше времени, нежели автоматический, но при этом вы получите вариативность в выборе версий и даже сможете их скачать заранее с другого компьютера, например, на флешку, если подключение к сети на главном ПК отсутствует. От вас потребуется лишь предварительно выбрать подходящую сборку и задействовать приведенные команды, чтобы инсталлировать ее.

  1. Откройте браузер и перейдите по указанной выше ссылке. Здесь вы можете выбрать первую директорию под названием «daily» . В ней находятся последние версии ядра, обновляемые каждый день. В противном случае просто опускайтесь в самый низ по списку, чтобы отыскать последнюю подходящую сборку.
  2. Откройте директорию с версией, чтобы получить DEB-пакеты.
  3. Скачайте «linux-headers» и «linux-image» подходящих архитектур и одинаковых версий в удобное расположение. Для этого достаточно будет кликнуть по синим ссылкам.
  4. При появлении уведомления об обработке файлов отметьте маркером пункт «Сохранить файл» .
  5. Перейдите к расположению загруженных пакетов и щелкните по одному из них правой кнопкой мыши.
  6. В появившемся контекстном меню вас интересует пункт «Свойства» .
  7. Обратите внимание на сноску «Родительская папка» . Скопируйте этот путь, если вы затрудняетесь ввести его самостоятельно в консоли при необходимости.
  8. Теперь запустите новый сеанс в «Терминале» , откуда перейдите к папке назначения, определенной ранее, введя cd + путь.
  9. Если перемещение прошло успешно, в новой строке ввода дополнительно появится надпись текущей директории, из которой и будут выполняться последующие команды.
  10. Задействуйте команду dpkg -i *.deb для запуска инсталляции.
  11. Если появится уведомление о том, что операция требуется привилегий суперпользователя, добавьте перед основной строкой слово sudo .
  12. Для подтверждения прав суперпользователя потребуется ввести пароль. Учитывайте, что символы при написании не отображаются, но вводятся. Как только наберете свой пароль, нажмите на Enter для подтверждения.
  13. Начнется распаковка имеющихся архивов. Она займет определенный промежуток времени. Не прерывайте терминальную сессию и не выполняйте других действий во время данной операции.
  14. Вы будете уведомлены об успешном завершении операции или же на экране может появиться ошибка, свидетельствующая о нарушении зависимостей. Если этого не произошло, обратите внимание только на последние действия следующей инструкции, а если установка прервалась, потребуется выполнять дополнительные манипуляции.

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

  1. Вы можете задействовать эту же сессию «Терминала» или создать новую. Введите в ней команду sudo apt-get install gdebi и нажмите на Enter .
  2. Для подтверждения прав доступа потребуется ввести пароль суперпользователя.
  3. При появлении уведомления о расширении объема занятого дискового пространства выберите вариант Д .
  4. После этого снова переместитесь к тому пути, куда были помещены DEB-пакеты, например, через команду cd ~/Загрузки.
  5. Используйте строку sudo gdebi linux-headers*.deb linux-image-*.deb .
  6. Ожидайте окончания чтения и распаковки файлов.
  7. Подтвердите операцию инсталляции пакетов.
  8. Для применения всех изменений потребуется обновить загрузчик путем ввода sudo update-grub .
  9. Вы будете уведомлены, что обновление прошло успешно.

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

Способ 2: Автоматическое обновление ядра

Этот метод подойдет тем пользователям, которые хотят получать обновления регулярно, задействовав для этого одно и то же средство, устанавливающее на ПК самую последнюю версию ядра. Осуществляется эта операция путем использования скрипта. Давайте рассмотрим, как создать его и инсталлировать апдейты для ядра Ubuntu.

  1. Для начала перейдите в папку, куда будет инсталлирован скрипт. Запустите консоль и введите команду cd /tmp .
  2. Используйте команду git clone git://github.com/GM-Script-Writer-62850/Ubuntu-Mainline-Kernel-Updater .
  3. Если вы получили уведомление об отсутствии команды git , следуйте приведенной рекомендации по инсталляции.
  4. После останется только записать скрипт путем вода bash Ubuntu-Mainline-Kernel-Updater/install .
  5. Подтвердите добавление файлов, выбрав положительный вариант ответа.
  6. Проверка обновлений запускается через KernelUpdateChecker -r yakkety . Учтите, что ветка -r используется для определения версии дистрибутива. Указывайте опцию в соответствии со своими потребностями.
  7. Если апдейты ядра будут найдены, установите их через sudo /tmp/kernel-update .
  8. По окончании обязательно проверьте текущее активное ядро через uname -r и обновите GRUB.

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

rm ~/.config/autostart/KernelUpdate.desktop
sudo rm /usr/local/bin/KernelUpdate{Checker,ScriptGenerator}

Решение проблем с загрузчиком GRUB после обновления ядра

Иногда во время инсталляции апдейтов для ядра происходят ошибки или же пользователь сам завершил установку файлов невовремя. В таких ситуациях возникает неполадка, при которой операционная система попросту перестает загружаться. Касается это и обладателей проприетарных драйверов от компании NVIDIA. Решение здесь одно: загрузиться со старого ядра и удалить новое с дальнейшей переустановкой или выбором более стабильной версии.

  1. Включите компьютер и сразу же нажмите на клавишу Esc , чтобы перейти к меню загрузок. Используйте стрелки для перемещения к пункту «Дополнительные параметры для Ubuntu» , а затем нажмите на Enter .
  2. Отыщите здесь ваше старое рабочее ядро и выберите его для загрузки.
  3. Войдите в свою учетную запись, и после успешного включения графической оболочки запустите консоль.
  4. Введите sudo apt remove linux-header-5.2* linux-image-5.2* , где 5.2 — версия установленного ранее ядра.
  5. Укажите пароль для предоставления прав суперпользователя.
  6. После успешного удаления обновите загрузчик через sudo update-grub .
  7. Вы будете уведомлены о том, что генерация файла прошла успешно, и теперь вы снова будете загружаться со старого ядра.

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

В данном пошаговом руководстве вы узнаете, как правильно собрать и установить ядро ветвей >2.6 в семействе ОС Ubuntu.

Шаг 1. Получение исходного кода ядра

Исходники ядра Ubuntu можно получить двумя способами :

    Установив архив из репозитория, с автоматическим наложением последних официальных патчей. При этом скачается пакет размером ~150 Мб в текущую папку. Чтобы получить исходники ядра, версия которого установлена на компьютере выполните команду: apt-get source linux-image-`uname -r`

    Или вместо `uname -r` можно указать конкретную версию из имеющихся в репозитории.

Список имеющихся в репозитории версий можно увидеть набрав команду: «apt-get source linux-image-» и, не нажимая Enter , нажать два раза клавишу Tab .

Не забудьте включить общий доступ к исходникам в репозитории (Параметры системы → Программы и обновления → Программное обеспечение Ubuntu → Исходный код). Из консоли это сделать можно раскомментировав строки начинающиеся с deb-src в файле /etc/apt/sources.list, а затем выполнить обновление командой: «sudo apt-get update».

    Самая свежая версия ядра доступна по git . Размер скачиваемого пакета ~500-800 Мб. git clone git://kernel.ubuntu.com/ubuntu/ubuntu-.git

    Где - имя релиза, например:

    Git clone git://kernel.ubuntu.com/ubuntu/ubuntu-xenial.git

Другие ядра

Также существуют ядра, работоспособность которых в Ubuntu не гарантируется. Например, известна проблема с рядом популярных системных приложений (в частности драйвера NVidia, VirtualBox), которые при своей установке компилируются под установленное ядро. Поэтому для их установки на ядро, нестандартное для данной версии Ubuntu (например, Ubuntu 16.04 идёт с ядром 4.4.0), может потребоваться их отдельная компиляция вручную или специальные патчи, а последние версии ядер с kernel.org приложение может вообще не поддерживать.

    Архив с базовой версий без патчей, т.е. например «4.8.0», «4.8.10»: sudo apt-get install linux-source

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

Cd ~/ tar -xjf linux-2.6.x.y.tar.bz2

Или в случае с linux-source:

Cd /usr/src tar -xjf linux-source-2.6.x.y.tar.bz2

Шаг 2. Получение необходимых для сборки пакетов

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

Выполните следующие команды для установки основных пакетов:

Sudo apt-get update sudo apt-get build-dep linux sudo apt-get install kernel-package

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

    oldconfig - файл конфигурации создаётся автоматически, основываясь на текущей конфигурации ядра. Рекомендуется для начинающих.

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

    menuconfig - псевдографический интерфейс ручной конфигурации, не требует последовательного ввода значений параметров. Рекомендуется для использования в терминале.

    xconfig - графический (X) интерфейс ручной конфигурации, не требует последовательного ввода значений параметров.

    gconfig - графический (GTK+) интерфейс ручной конфигурации, не требует последовательного ввода значений параметров. Рекомендуется для использования в среде GNOME.

    localmodconfig - файл конфигурации, создающийся автоматически, в который включается только то, что нужно данному конкретному устройству. При вызове данной команды большая часть ядра будет замодулирована

В случае, если вы хотите использовать config , oldconfig , defconfig , localmodconfig или localyesconfig , вам больше не нужны никакие дополнительные пакеты. В случае же с оставшимися тремя вариантами необходимо установить также дополнительные пакеты.

menuconfig выполните следующую команду:

Sudo apt-get install libncurses5-dev

Для установки пакетов, необходимых для использования gconfig выполните следующую команду:

Sudo apt-get install libgtk2.0-dev libglib2.0-dev libglade2-dev

Для установки пакетов, необходимых для использования xconfig выполните следующую команду:

До Ubuntu 12.04: sudo apt-get install qt3-dev-tools libqt3-mt-dev

Sudo apt-get install libqt4-dev

Шаг 3. Применение патчей

Данный шаг не является обязательным.

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

Apt-get source linux-image-`uname -r`

Если вы никогда до этого не применяли патчей к исходному коду, то выполните следующую команду:

Sudo apt-get install patch

Эта команда установит программу patch, необходимую для, как можно догадаться, применения патчей. Теперь скачайте файл патча в папку, куда вы распаковали ядро. Это может быть либо архивный файл (напр. Bzip2 или Gzip), либо несжатый patch-файл.

На данный момент подразумевается, что вы уже сохранили файл в ту папку, куда ранее распаковали ядро, и установили программу patch.
Если скачанный вами файл был в формате Gzip (*.gz), тогда выполните следующую команду для распаковки содержимого архива:

Gunzip patch-2.6.x.y.gz

Если скачанный вами файл был в формате Bzip2 (*.bz2), тогда выполните следующую команду для распаковки содержимого архива:

Bunzip2 patch-2.6.x.y.bz2

где 2.6.x.y - версия патча ядра. Соответствующие команды распакуют файл патча в папку с исходным кодом ядра. Прежде чем применить патч, необходимо удостовериться, что он заработает без ошибкок. Для этого выполните команду:

Patch -p1 -i patch-2.6.x.y --dry-run

где 2.6.x.y - версия патча ядра. Эта команда сымитирует применение патча, не изменяя сами файлы.

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

Patch -p1 -i patch-2.6.x.y

где 2.6.x.y - версия патча ядра. Если не было никаких ошибок, значит к исходному коду был успешно применён патч.

Внимание! Перед тем, как применять патч, проведите следующие действия: 1. Скачайте с http://www.kernel.org патч той же версии, что и ваших исходников. 2. Выполните следующую команду: patch -p1 -R

где 2.6.x.y - версия патча и ваших исходников

Шаг 4. Конфигурация будущей сборки ядра

Перейдите в папку, куда вы распаковали ядро, выполнив команду

Cd ~/linux-2.6.x.y

где 2.6.x.y - версия загруженного вами ядра.

На данный момент вы уже должны были определиться с методом конфигурации ядра (если нет, то ознакомьтесь с ними в разделе «Получение необходимых для сборки пакетов». В зависимости от этого, выполните следующую команду для запуска выбранного вами способа конфигурации:

    config - традиционный способ конфигурирования. Программа выводит параметры конфигурации по одному, предлагая вам установить для каждого из них свое значение. Вызывается командой make config

    oldconfig - файл конфигурации создаётся автоматически, основываясь на текущей конфигурации ядра. Рекомендуется для начинающих. Вызывается командой make oldconfig

    defconfig - файл конфигурации создаётся автоматически, основываясь на значениях по-умолчанию для данной конкретной архитектуры. Вызывается командой make defconfig

    menuconfig - псевдографический интерфейс ручной конфигурации, не требует последовательного ввода значений параметров. Рекомендуется для использования в терминале. Вызов: make menuconfig

    gconfig и xconfig - графические конфигураторы для ручной настройки. Вызов: make gconfig

    Make xconfig

    соответственно

    localmodconfig и localyesconfig - автоматические конфигураторы. Конфиг создается на основе вызванных в данных момент модулей и запущенного ядра. Разница между этими двумя конфигураторами в количестве модулей. В первом случае их будет не менее 50% ядра, а во-втором не больше 2 модулей. Вызов: make localmodconfig

    Make localyesconfig

    соответственно

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

Шаг 5. Сборка ядра

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

Fakeroot make-kpkg -j 5 --initrd --append-to-version=-custom kernel_image kernel_headers #-j <количество ядер процессора>+1

Сборка ядра может занимать от 20 минут до нескольких часов в зависимости от конфигурации ядра и технических параметров компьютера. Сборка при многодерном процессоре может быть в несколько раз быстрее

Шаг 6. Установка образов и заголовков ядра

Когда сборка ядра подошла к концу, в вашей домашней папке появятся два deb-пакета. Их и необходимо установить. Для этого выполните команды:

Cd ~/ sudo dpkg -i linux-image-2.6.x.y-custom_2.6.x.y-custom-10.00.Custom_arc.deb sudo dpkg -i linux-headers-2.6.x.y-custom_2.6.x.y-custom-10.00.Custom_arc.deb

где 2.6.x.y - версия собранного ядра, arc - архитектура процессора (i386 - 32-бит, amd64 - 64-бит).
Если вы не знаете точного названия пакета, выведите список файлов в домашнем каталоге командой

и найдите эти самые два пакета.

Шаг 7. Генерация начального RAM-диска

Для корректной работы Ubuntu требует наличия образа начального RAM-диска. Чтобы его создать, выполните команду:

Sudo update-initramfs -c -k 2.6.x.y-custom

где 2.6.x.y - версия собранного ядра.

Шаг 8. Обновление конфигурации загрузчика GRUB

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

Sudo update-grub

Файл menu.lst (для GRUB версии 1) или grub.cfg (для GRUB версии 2) обновится в соответствии с наличием установленных операционных систем и образов ядер.

Шаг 9. Проверка ядра

Сборка и установка ядра успешно выполнены! Теперь перезагрузите компьютер и попробуйте загрузить систему с новым ядром. Чтобы удостовериться, что система запущена с новым ядром, выполните команду

Uname -r

Она выведет на экран используемую версию ядра.

Если всё сделано правильно, то вы можете удалить архивы с исходным кодом и весь каталог linux-2.6.x.y в вашей домашней папке. Это освободит около 5 ГБ на вашем жёстком диске (размер освобождаемого пространства зависит от параметров сборки).

На этом процесс сборки и установки завершён, поздравляю!

Иногда может потребоваться собрать своё собственное ядро Linux . Причины для этого могут быть следующими:

  • вам нужно чистое ядро, без дистрибутивных патчей;
  • вы хотите наложить собственные патчи (коих очень много);
  • вы хотите собрать ядро под свою конфигурацию железа, выкинуть из него лишнее и/или заточить под определённые задачи;
  • вы хотите включить в состав ядра эксперементальный драйвер или файловую систему, которой нет в "ванильном" ядре (например ZFS или Raiser 4 );
В сборке ядра нет ничего сложного. Важно лишь понимать, для чего это делается, а также не трогать те параметры, которые вам непонятны. В этой заметке я опишу два примера сборки ядра в Debian-based дистрибутивах. В первом примере я покажу как просто собрать чистое, что называется "ванильное" ядро (такое, каким его выпускает Линус Торвальдс ), а во втором - как применить собственные патчи и провести оптимизацию ядра. Сразу напишу два предупреждения:
  • вам нужно будет пересобирать ядро при каждом его обновлении (качать "обновляющий патч", накладывать его и собирать ядро);
  • пересобранное ядро может не заработать, если в вашей системе используются какие-нибудь хаки для обеспечения работоспособности того или иного оборудования;
  • при неправильном конфигурировании ядра, особенно в случае неграмотного или бездумного наложения патчей, вы можете получить либо тормозящую до ужаса систему, либо лишиться её вовсе.
ВСЕ ДЕЙСТВИЯ ВЫ ПРОИЗВОДИТЕ НА СВОЙ СТРАХ И РИСК!

Простая сборка ядра без применения патчей.

Исходные коды ядра Linux находятся на сайте kernel.org . Там же находятся "обновляющие патчи" . Что нам нужно? Качаем с сайта тарболл (архив) с последней стабильной версией ядра (на момент написания статьи, это версия 4.3 ). Качаем любым удобным способом. Далее нам потребуются инструменты для сборки:

sudo apt install build-essential gcc kernel-package patch
sudo apt-get build-dep linux

После того как установятся все необходимые инструменты, распакуйте архив с кодом ядра в любую удобную директорию. Пусть это будет /home/user/KERNEL , где "user" - имя пользователя системы. Далее откройте терминал и перейдите туда:

cd /home/user/KERNEL

Осталось собрать ядро:

fakeroot make-kpkg -j 3 --initrd --append-to-version=-custom kernel_image kernel_headers #-j 3

Цифра 3 после j - это количество ядер вашего процессора + 1. То есть для двухядерного это 3, для 4-х ядерного это 5 и так далее.
-custom - здесь можете указать удобное имя для ядра, чтобы было легче его отличить от дистрибутивного.
kernel_image и kernel_headers - это само ядро и его заголовочные файлы соответственно. Headers необходимы для сборки драйверов и модулей ядра, а также для некоторых других целей. После выполнения этой команды, начнут появляться несколько вопросов по конфигурированию ядра. Так как мы всё оставляем по умолчанию, просто жмите Enter пока не начнётся сборка. В зависимости от мощности вашего компьютера, сборка может занять от 15-20 минут до нескольких часов. После сборки, в директории /home/user появятся два deb-пакета : ядро и заголовки. Установите их командой:

sudo dpkg -i linux-image-4.3*deb linux-headers-4.3*deb
sudo update-grub

И перезагрузитесь. В меню GRUB теперь можно будет выбрать для загрузки системы другое ядро.

Сборка ядра с применением патчей и дополнительной конфигурации.

В этот раз мы соберём оптимизированное ядро для работы со звуком и видео, а также для большей отзывчивости системы. Для этого мы применим два патча: так называемый патч для режима реального времени (PREEMPT RT ) и патч для компилятора GCC , чтобы добавить дополнительные опции для процессорных оптимизаций. Для начала, что такое патч? Патч - это текстовый файл, который создаётся программой diff , содержащий в себе изменения кода в определённых частях, которые при применении патча, заносятся в нужные места. Так как RT-патч выходит с большим запаздыванием, последняя его версия - для ядра 4.1 . Впрочем это не так важно. По той же схеме, качаем ядро 4.1 с kernel.org и распаковываем в директорию /home/user/KERNEL-CUSTOM . Теперь качаем патчи. PREEMPT_RT и GCC Patch . Из скачанных архивов, нам нужны файлы с расширением.patch, которые необходимо положить в каталог с исходным кодом ядра. То есть в /home/user/KERNEL-CUSTOM . Перед применением патчей нужно убедиться, что не будет никаких ошибок. Открываем терминал:

cd /home/user/KERNEL-CUSTOM
patch -p1 -i patch-4.1.13-rt15.patch --dry-run


Опция --dry-run позволяет симулировать применение патча, без внесения изменений в файлы. Если ошибок не обнаружено (см. скриншот) - примните патч уже без опции --dry-run . Аналогичные действия проведите и со вторым патчем. Не применяйте одновременно больше одного патча! Теперь нам нужно сконфигурировать наше ядро. На выбор нам предлагаются следующие варианты:

make config - в терминал будут поочерёдно выводиться вопросы о конфигурации той или иной подсистемы ядра. Крайне долгий и утомительный процесс. Забудем о нём:)
make oldconfig - будет задействована конфигурация работающего в данный момент ядра. Так как мы собираем своё с нуля, этот способ также бесполезен.
make defconfig - аналогично предыдущему, только значения будут по умолчанию. Такими, какими его задали разработчики ядра. Аналог первого способа сборки.
make menuconfig - псевдографический интерфейс на основе библиотеки Ncurses . На экран будет выводиться интерфейс с удобным иерархическим меню. Управления с помощью клавиш направления, пробела и клавиши TAB. Рекомендуется если вы собираете ядро в системе, не имеющей графической оболочки.
make gconfig GTK , рекомендуется в окружениях GNOME, Mate, Xfce, Cinnamon, Unity и прочих, использующих GTK.
make xconfig - графический интерфейс на основе Qt . Рекомендуется в KDE. Так как в моей системе используется KDE, я воспользуюсь этим способом. Помимо этого есть ещё пара способов, но их применения ни чем особенным не отличается. Итак, после применения патчей, запускаем make xconfig и перед нами предстаёт вот это:


Первым делом выключаем dynticks . Для этого идём в Timers subsystem и выбираем Periodic timer ticks


Теперь самое вкусное. Идём в Processors type and features , ищем пункт Processor famaly и указываем вашу серию процессора. К примеру если у вас Intel Core i5-4xxx , указывайте Hasswell (4 поколение процессора). Если вы точно не уверены, то можете выбрать пункт Native optimizations autodetected by GCC . В этом случае, при сборке, компилятор сам определит что поддерживает ваш процессор, и включит все его фичи.


Идём ниже и включаем параметр Full preemptible kernel (RT) . Режим жёсткого реального времени.


Листаем ниже и в пункте Timer frequency выставляем частоту системных прерываний на 1000 Гц


Полностью выключаем любое энергосбережение. Это важно! Слева ищем пункт Power management and ACPI options и снимаем галочку с ACPI. Также выключаем энергосбережение процессора

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

fakeroot make-kpkg -j 3 --initrd --append-to-version=-rt-custom kernel_image kernel_headers #-j 3
sudo update-grub

На моём компьютере с процессором Intel Core i3-550 (3.2 ГГц), прирост производительности был довольно ощутимый. Но самое главное - при работе в LMMS и Kdenlive , исчезли периодические заикания рассинхронизация звуковой и видеодорожек, а также подвисания при сильной нагрузке на жёсткий диск. Вывод - работает! Напоследок опишу два модифицированных ядра, которые весьма популярны в кругах линуксоидов:

PF-kernel - самый популярный набор патчей от украинца Александра Наталенко (aka post-factum) . Это набор патчей, которые не входят в основное ядро, но обеспечивают повышенную отзывчивость системы, предоставляют альтернативную подсистему гибернации, более быструю, нежели основная, а также уменьшают использование памяти с помощью техники объединения одинаковых страниц. В набор входят:

  • планировщик процессов BFS от Кона Коливаса (Con Kolivas) с дополнительными исправлениями от Альфреда Чена (Alfred Chen);
  • планировщик ввода-вывода BFQ от Паоло Валенте (Paolo Valente), Арианны Аванзини (Arianna Avanzini) и Мауро Маринони (Mauro Marinoni);
  • подсистема гибернации TuxOnIce от Найджела Каннингема (Nigel Cunningham);
  • реализация техники слияния одинаковых страниц в памяти UKSM от Най Ся (Nai Xia);
  • патч от Graysky, расширяющий список процессоров для оптимизации ядра компилятором (тот, что мы применили выше)
Репозиторий модифицированного ядра . Официальный сайт .

Zen-kernel - второй по популярности, но первый по количеству патчей набор. Zen Kernel использует комбинацию нескольких проектов, обновляет код через git-репозиторий, а также имеет несколько специфичных для Zen вещей, стремящихся удовлетворить большинство потребностей пользователей, реализовав их в одном ядре. Некоторые возможности патча: drm-next, wireless-testing, выбор планировщиков CPU (CFS/BFS), BFQ-планировщик ввода-вывода, aufs, unionfs, reiser4, tuxonice, PHC и многие другие вещи, которые замечательно подойдут для оптимизации настольных систем или ноутбуков. Всё это доступно в виде одного патча к ванильному ядру. Официальный сайт . GIT- репозиторий . Пакеты для Debian/Ubuntu .

На сегодня, пожалуй, всё. Больше информации вы можете найти в ссылках к статье. Всё описанное в статье проверено мной на многих конфигурациях.

Linux - это ядро операционной системы. Ubuntu - это операционная система построенная на ядре Linux. Грубо говоря, ядро Linux - это "головной мозг" всей операционной системы, который контролирует работу устройств между собой.

Для чего нужно обновлять ядро в Ubuntu?

Ничего не стоит на месте, все технологии двигаются вперед и развиваются. Выпускаются новые процессоры, чипсеты и другие компоненты, которые для корректной работы требуют поддержки со стороны операционной системе.

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

В этой статье предлагается обновить системное ядро в ОС Ubuntu без компилирования ядра Linux из исходного кода.

Немного теории

Как сообщает Wikipedia , в названии ядра заложена достаточно важная информация, которая не просто показывает его версию.

Обычно ядро обозначается так: 2.6.33.3 , где:

  • первое число 2 - это версия ядра, которая меняется очень редко,
  • второе число 6 - это старшая версия ревизии ядра, где четные числа обозначают стабильные версии, а нечетные числа - не стабильные версии ядра,
  • третье число 33 изменяется в том случае, если были внесены в состав ядра дополнительные драйвера и улучшения,
  • четвертое число 3 - это число изменяется в том случае, если были внесены небольшие исправления, но требующие незамедлительного добавления.

Как определить версию установленного ядра?

Чтобы посмотреть версию установленного ядра можно открыть Системный монитор или в консоли набрать:

Оба действия покажут версию установленного ядра.

Обновление стабильного ядра в Ubuntu

На официальном сайте ядра Linux можно посмотреть текущую версию доступного стабильного ядра (stable kernel). Если доступное ядро имеет более высокую версию, то вам необходимо обновить ОС Ubuntu стандартными командами из официального репозитория Canonical:

# sudo apt-get update && sudo apt-get upgrade

Стабильные версии ядер включаются в официальный репозиторий Ubuntu с исправной регулярностью.

Обновление нестабильного ядра в Ubuntu

В некоторых случаях необходимо установить версию ядра, которое еще не до конца протестировано и находится в разделе нестабильного ядра (unstable kernel). Установка нестабильного ядра в Ubuntu требуется, к примеру, для корректной работы нового устройства.

Для unstable-версии ядра нет полноценного репозитория, как для других приложений Ubuntu. Это сделано из соображений безопасности и стабильности работы дисрибутива Ubuntu.

Для обновления такого ядра в Ubuntu требуется загрузить 3 deb-пакета, которые находятся здесь: http://kernel.ubuntu.com/~kernel-ppa/mainline , где можно выбрать любую доступную версии.

Пакеты следует загружать согласно разряду вашего дистрибутива (i386 - для 32bit, amd64 - для 64bit):

  • linux-headers- ... _i386.deb
  • linux-headers ... _all.deb
  • linux-image- ... _i386.deb

После этого устанавливаем вручную загруженные пакеты и перезагружаем компьютер.

На заметку:

Наши любимые женщины всегда ждут от нас знаков внимания. К примеру, женщине можно подарить красивый дизайнерский кулон. Цена не такая уж высокая, а блеска много. В сети Интернет бижутерия продается на большом количестве интернет-сайтов. Поэтому выбор всегда есть. Лучший подарок - это подарок сделанный от всего сердца.

Так же можно удивить девушку, доставив ей расширенный оргазм , о котором можно прочитать на сайте kamasutra21veka.ru

Случайные 7 статей:

Комментарии

  1. Сергей Луконин
    30 Апрель, 16:20

    Проще обновлять ядро через Ubuntu-Tweak тогда уж)

  2. Дмитрий
    14 Май, 14:39
  3. Mut@NT
    16 Май, 12:14

    Дмитрий: У меня ядро 2.6.32-22-generic, а на сайте 2.6.33.4. Выполнил написанную вами команду, пообновляло чёто там, но версия ядра осталась та же. В чём прикол?

    Нужно всего лишь закачать 3 пакета и установить их в системе.

    В Grub по-умолчанию на верхнюю строчку помещает загрузку с новым ядром, т.ч. загрузиться он автоматически с новым ядром.

    P.S. Может все-таки не установились пакеты?

  4. Дмитрий
    16 Май, 17:46

    Я имею ввиду обновление стабильного ядра.
    “На официальном сайте ядра Linux можно посмотреть текущую версию доступного стабильного ядра (stable kernel). Если доступное ядро имеет более высокую версию, то вам необходимо обновить ОС Ubuntu стандартными командами из официального репозитория Canonical: # sudo apt-get update && sudo apt-get upgrade”
    Я так сделал, но ядро не обновилось. Возмоджно стабильное ядро, которое зазначено на офсайте http://kernel.org/, ещ’ не включено в офрепозиторий Canonical?

  5. Mut@NT
    19 Май, 06:38

    Дмитрий: Я имею ввиду обновление стабильного ядра. “На официальном сайте ядра Linux можно посмотреть текущую версию доступного стабильного ядра (stable kernel). Если доступное ядро имеет более высокую версию, то вам необходимо обновить ОС Ubuntu стандартными командами из официального репозитория Canonical: # sudo apt-get update && sudo apt-get upgrade” Я так сделал, но ядро не обновилось. Возмоджно стабильное ядро, которое зазначено на офсайте http://kernel.org/, ещ’ не включено в офрепозиторий Canonical?

    Стоит подождать, наверное, скоро включат. Можете посмотреть приведенную ссылку в посте. Там я думаю найдете, что ищете.

    Стоит, наверное, внести это в пост.

  6. ainur101
    15 Август, 22:59

    Как то обновлял ядро по данной схеме, некоторые драйвера дали сбой((

  7. Mut@NT
    24 Август, 12:07

    ainur101: Как то обновлял ядро по данной схеме, некоторые драйвера дали сбой

    В последней версии ядра наконец-то допилили все функции для моего нетбука. Проблем замечено не было. А вообще ставя тестовые версии ядра стоит готовится к сюрпризам))

  8. Дмитрий
    14 Март, 21:51

    Большое спасибо за статью. Все получилось, на моей 10.04 теперь красуется 3 ядро

  9. dima1978
    6 Февраль, 14:59

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

Рекомендуем почитать

Наверх