Информационно развлекательный портал
Поиск по сайту

Установка ядра ubuntu. Собираем своё собственное ядро Linux. Определяем текущую версию ядра в Ubuntu

Сборка ядра Linux
Здравствуйте, уважаемые читатели. Сегодня я расскажу о таком интересном занятии как сборка ядра Linux . Зачем может понадобиться самостоятельно собирать ядро? На самом деле причин может быть множество: необходимость задействовать дополнительные возможности ядра, оптимизировать ядро под ваш компьютер, обновить ядро до самой свежей версии. В этой статье я продемонстрирую процесс получения исходных кодов, настройки, компиляции и установки в систему ядра Linux, в рамках решения задачи включения в ядро поддержки cryptoloop(петлевые шифрующие устройства).

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

Apt-cache search linux-source

Команда выведет список доступных пакетов:


Как видите, у меня есть только пакет с текущей версией и пакет с версией 3.5 (на самом деле текущая версия ядра тоже 3.5). Расширить список ядер, доступных таким образом, стоит подключить дополнительные репозитории. Получить ядро мы можем командой: sudo apt-get install linux-source

linux-source - имя пакета с исходным кодом, в вашем случае может быть другим.
После завершения работы команды в директории /usr/src появится файл, в моем случае - linux-source-3.5.0.tar.bz2. Перейдем в папку, распакуем архив и ради удобства создадим символическую ссылку:

Cd /usr/src sudo tar -xjvf linux-source-3.5.0.tar.bz2 sudo ln -s linux-source-3.5.0 linux

Если же вам нужна самая свежая версия ядра, то её всегда можно скачать с сайта kernel.org. Стоит заметить, что на сайте выкладываются как стабильные версии ядер так и версии предназначенные для тестирования и доработки(обычно в их названии есть содержится аббревиатура «RC» - Release candidate). Если вы не желаете лишних проблем с системой, советую скачивать стабильную версию:

Сохраним архив с исходниками в папку /usr/src. Чтобы распаковать полученный архив вам может понадобиться установить дополнительные утилиты:

Sudo apt-get install xz-utils

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

Cd /usr/src sudo tar -xpJf linux-3.8.5.tar.xz sudo ln -s linux-3.8.5.tar.xz linux

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

sudo apt-get install build-essential kernel-package libncurses-dev

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

Cd /usr/src/linux sudo make oldconfig

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

Sudo make menuconfig

В терминале запустится программа конфигурирования:

Здесь параметры конфигурации разделены на разделы, чтобы в них было удобнее ориентироваться. Как я уже говорил выше, мне нужно включить в ядро поддержку cryptoloop. Для этого нужно перейти в раздел «Device Drivers», а из него в подраздел «Block Devices»:

Находим параметр «Cryptoloop Support», рядом с ним стоит буква «М» что означает что поддержка шифрующих устройств будет добавлена как модуль ядра, который можно будет включить командой modprobe. Нам же надо включить поддержку данной технологии непосредственно в ядро, чтобы она поддерживалась всегда. Переводим фокус на параметр «Cryptoloop Support» и нажимаем на пробел. Буква «М» должна смениться символом "*" это означает что поддержка данной технологии будет «вшита» в ядро. Осторожно, пробел означает что технология вообще поддерживаться не будет.

Нажимаем клавишу «Tab» и нажимаем на кнопку «Exit» до тех пор пока не появится запрос на сохранение изменений:

Отвечаем «Yes». Мы успешно закончили конфигурирование!
Приступим к компиляции. Сначала удаляем файлы оставшиеся от предыдущих сборок, если вы запускаете сборку впервые выполнять эту команду не обязательно: sudo make-kpkg clean

Запускаем компиляцию:

Sudo make-kpkg -j4 --initrd --append-to-version=-mykernel kernel_image kernel_headers

J4 - флаг, указывает какое количество потоков использовать для компиляции. Позволит сильно ускорить компиляцию на многоядерных процессорах. Цифра 4 тут указывает на 4 потока. Ставьте столько потоков сколько ядер вашего процессора «видит» система.
-mykernel - префикс указывающий что ядро было собрано вручную, можете его изменить, фактически ни на что не влияет.

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

Установка ядра в систему

После завершения компиляции, в директории /usr/src должны появится два файла с расширением «deb» они являются установочными пакетами нашего нового ядра и установить их можно с помощью утилиты dpkg:

sudo dpkg -i linux-image-3.8.5-mykernel_3.8.5-mykernel-10.00.Custom_i386.deb
sudo dpkg -i linux-headers-3.8.5-mykernel_3.8.5-mykernel-10.00.Custom_i386.deb

Поздравляю! Ядро установлено, теперь система будет загружаться с этим ядром по умолчанию, но если у вас возникнут проблемы с новым ядром вы всегда можете загрузится со старым выбрав его на экране загрузки - Grub. На этом я завершаю сегодняшнюю статью и желаю успехов, вам, уважаемые читатели!

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

С каждой новой версией в ядре Linux появляется поддержка нескольких новых устройств, например, новых процессоров, видеокарт или даже сенсорных экранов. За последнее время, поддержка нового оборудования очень сильно улучшилась. Также в ядро включаются новые файловые системы, улучшается работа сетевого стека, исправляются ошибки и баги.

Если вам нужна более подробная информация об изменениях в какой-то определенной версии ядра смотрите ее Changelog на kernel.org, а в этой статье мы рассмотрим обновление ядра Linux до самой новой версии. Я попытаюсь не привязывать инструкцию к определенной версии ядра, новые ядра выходят достаточно часто и она будет актуальна для каждого из них.

Рассмотрим обновление ядра Ubuntu и CentOS. Сначала давайте рассмотрим как обновить ядро в Ubuntu 16.04.

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

Например, у меня сейчас используется версия 4.3, и я могу обновиться к самой новой версии. Разработчики Ubuntu уже позаботились о том чтобы их пользователи не собирали ядро вручную и сделали deb пакеты новой версии ядра. Их можно скачать с официального сайта Canonical.

Я мог привести здесь команды wget для загрузки, если была бы известна версия ядра, но в нашем случае лучше будет использовать браузер. Откройте сайт http://kernel.ubuntu.com/~kernel-ppa/mainline/. Здесь находятся все, собираемые командой Ubuntu ядра. Ядра собираются как для определенных дистрибутивов, с кодовым именем дистрибутива, так и общие. Причем ядра от Ubuntu 16.10, скорее всего, будут работать в 16.04, а вот от 9.04 в Ubuntu 16.04 ставить ядро не стоит.

Пролистайте в низ, именно там находятся более новые версии ядер:

Кроме того, в самом верху есть папка daily/current, в которой находятся самые свежие, ночные сборки ядер. Выберите нужную версию ядра и скачайте два файла linux-headers и linux-image для своей архитектуры:

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

Перейдите в папку с установочными пакетами, например, ~/Downloads:

Запустите установку:

Если эта команда не сработала, можно пойти другим путем. Установите утилиту gdebi:

sudo apt-get install gdebi

Затем с помощью нее установите ядро:

sudo gdebi linux-headers*.deb linux-image-*.deb

Ядро установлено, осталось обновить загрузчик:

sudo update-grub

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

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

Автоматическое обновление ядра Linux в Ubuntu

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

Устанавливаем скрипт:

cd /tmp
$ git clone git://github.com/GM-Script-Writer-62850/Ubuntu-Mainline-Kernel-Updater
$ bash Ubuntu-Mainline-Kernel-Updater/install

Проверяем наличие обновлений:

KernelUpdateChecker -r yakkety

Опция -r позволяет указать ветку дистрибутива, для которой нужно искать ядра. Для xenial ядра больше не собираются, но здесь будут отлично работать ядра от следующей версии. Кроме того, опцией -no-rc можно указать утилите не использовать кандидаты в релизы, а опция -v задает точную версию ядра, которую нужно установить. Если вам неважно для какого дистрибутива ядро, лишь бы самое новое, используйте опцию --any-release. Скрипт выдаст такой результат:

Перед тем как устанавливать ядро, можно посмотреть подробности открыв файл /tmp/kernel-update:

Здесь мы видим, что выполнялся поиск для yakkety, а также на данный момент доступна версия ядра 4.7-rc6. Можем устанавливать:

sudo /tmp/kernel-update

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

Старые ядра, на всякий случай не удалять (n):

Готово, обновление ядра до самой новой версии завершено, теперь перезагрузите компьютер (y):

Проверяем действительно ли обновление ядра Ubuntu сработало:

Более того, скрипт был добавлен в автозагрузку и теперь будет проверять автоматически обновления через 60 секунд после входа в систему. Ярлык автозагруки находится в файле:

vi ~/.config/autostart/KernelUpdate.desktop

Вы можете изменить его как вам нужно или удалить. Если хотите удалить скрипт полностью из системы, выполните:

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

Не загружается

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

А чтобы восстановить работу системы выберите пункт Advanced options for Ubuntu в меню Grub:

И запустите предыдущее работающее ядро:

После загрузки останется удалить неверно установленное ядро и еще раз обновить Grub, подставьте нужную версию ядра вместо 4.7:

sudo apt remove linux-header-4.7* linux-image-4.7*

sudo update-grub

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

Обновление ядра Linux до 4.4 в CentOS

А теперь давайте рассмотрим как обновить ядро Linux самой новой версии в CentOS. Инструкция проверена на CentOS 7, но скорее всего, будет работать и на RedHat 7, Fedora и других подобных дистрибутивах.

Как правило, новые ядра не включены в официальные репозитории CentOS, поэтому чтобы получить последнюю стабильную версию нам необходимо будет добавить репозиторий ELRepo. Это репозиторий коммерческих пакетов (Enterprise Linux Packages) он также поддерживается в RedHat и Fedora.

Для добавления репозитория выполните следующие действия:

Сначала необходимо импортировать ключ:

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

Добавляем репозиторий и необходимые компоненты в RHEL/Scientific Linux/CentOS-7:

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

yum install yum-plugin-fastestmirror

В Fedora 22 и выше:

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

1. Установка исходников ядра

Вначале нам нужны будут исходники ядра. Для Ubuntu 7.04 в репозитарии они уже есть, нужно найти пакет linux-source-тратата (в нашем случае это будет linux-source-2.6.20 ), и установить его (все это можно сделать через Synaptic ). После установки данного пакта, в каталоге /usr/src появится файл с именем linux-source-2-6-20.tar.bz2 .

Делаем под sudo команду

chmod 777 /usr/src

Заходим обычным пользователем в каталог /usr/src и распаковываем этот файл

tar -jxvf linux-source-2-6-20.tar.bz2

Появится каталог с исходниками /usr/src/linux-source-2-6-20 . Архивный файл удаляем (нужны будут права рута).

2. Установка сопроводительных пакетов

Для сборки понадобятся еще пакеты kernel-package , libncurses5-dev , fakeroot . Устанавливаем их через Synaptic . Само собой, в системе также должен быть установлен компилятор gcc и dev -пакеты для системных библиотек, такие например как libc6-dev .

3. Создание файла конфигурации ядра

Теперь нам нужен конфиг ядра, с которым собиралось ядро для убунты. Заходим в каталог /boot , и видим там файл типа config-2.6.20-15-generic . Он нам и нужен. Копируем его в каталог с исходниками /usr/src/linux-source-2-6-20 и переименовываем его в .config . Обратите внимание, что имя файла начинается с точки, это не опечатка.

Теперь, находясь в каталоге /usr/src/linux-source-2-6-20 , даем под обычным пользователем команду

это запустится текстовый интерфейс настройки ядра. Можно так же запустить настройку в графическом режиме

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

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

В конце конфигурирования выбираем пункт "Save тратата кофигурацию", указываем имя файла, отличного от .config , например .config_my_01 . Выходим.

Теперь переименовываем .config в .config_ubuntu . И у вас получается два файла - .config_ubuntu и .config_my_01 . Вы можете посмотреть различия между стандартной и вашей конфигурацией, например так

diff .config .config_my_01

Теперь копируем вашу конфигурацию .config_my_01 под именем .config . Т.е. у вас получится 3 конфиг файла. При компиляции будет использоваться файл .config . Файлы .config_ubuntu и .config_my_01 нам помогут в будущем для новой компиляции. Это на тот случай, если новое ядро окажется неработоспособным или глючным.

4. Компиляция

Перед компиляцией обязательно проверяем наличие свободного пространства (на том разделе, где лежат исходники). Хорошо бы меть 4-5Gb (!) в запасе. При компиляции размер каталога с исходниками может разрастись до 3,5Gb . Проверить свободное пространство можно командой

Теперь, находясь под обычным пользователем в каталоге /usr/src/linux-source-2-6-20 , даем команду, которая удалит в исходниках скомпилированные кем-то объектники, которые остались от предыдущей компиляции и находились в архиве.

Потом через sudo получаем права рута и запускаем компиляцию.

make-kpkg --initrd --revision=mybuild.1.0 kernel_image kernel_headers

Где вместо "mybuild.1.0 " пишите что вам нужно. Допустимы английские буквы, цифры, точки. Символы подчеркивания и тире не допускаются.

Вообще-то, по-хорошему, компиляцию ядра надо делать под правами обычного пользователя. Формально, создание бинарника ядра ничем не отличается от компилирования бинарника любой другой программы. Но мы делаем компиляцию не в ручном режиме (через команды типа make bzImage modules ), а в полуавтоматическом (через make-kpkg ). А эта программа, после прохождения компиляции, будет запускать из-под себя программу dpkg-deb чтобы получить deb -пакет с ядром. Вот в этот момент и потребуются права рута.

Теперь давайте разберемся, что же делает вышеприведенная команда. Она запускает компиляцию ядра, и затем создает deb -пакет с именем linux-image-версия.deb , в котором будут находиться бинарник ядра и модули ядра (это сделается благодаря цели kernel_image ). А так же будет создан deb -пакет с именем linux-headers-версия.deb , в нем будут находиться заголовочные файлы ядра (это сделается благодаря цели kernel_headers ). Полученные пакеты будут лежать в каталоге /usr/src .

Посмотреть, какие файлы находятся в этих deb -пакетах, можно в konqueror (в Kubuntu), щелкнув правой клавишей по на интересуемом deb -файле и выбрав "Kubuntu package menu " -> "Show package info ". Информация будет формироваться довольно медленно, около минуты, так как пакеты большие.

5. Установка ядра

Теперь устанавливаем ядро. Находясь с правами суперпользователя в каталоге /usr/src , даем команду

dpkg -i linux-image-версия.deb

после которой ваше ядро (файл vmlinuz-2.6.20.3-ubuntu1 ) будет помещено в каталог /boot (все предыдущие ядра тоже никуда не денутся, останутся на своих местах), а в каталоге /lib/modules , рядом с каталогом с модулями обычного ядра (в Ubuntu 7.04 называется /lib/modules/2.6.20-15-generic ) появится каталог с модулями вашего нового ядра (в нашем случае это будет /lib/modules/2.6.20.3-ubuntu1 ). Новое ядро будет автоматически прописано в /boot/grub/menu.lst .

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

dpkg -i linux-headers-версия.deb

которая установит хедеры ядра в каталог /usr/src/linux-headers-версия , в нашем случае это будет каталог /usr/src/linux-headers-2.6.20.3-ubuntu1 . Эти хедеры нам понадобятся, например, для перекомпиляции драйверов nVidia для нового ядра.

6. Перезапуск

Перегружайтесь, и в меню Grub вы увидите два новых пункта - обычная загрузка с вашим ядром, и загрузка в минимальном консольном режиме. Выбирайте первый пункт. Если ядро сразу не выпало в Kernel panic , то это хороший признак. Ждите конца загрузки. Если вам повезет, то Ubuntu загрузится в графический режим и покажет графическое приглашение входа в систему. В этом случае дальше можете не читать.

Но для пользователей карт nVidia , которые пользовали драйвера, установленными через "Менеджер проприетарных драйверов" или пользовали драйвера из пакета nvidia-glx (или там nvidia-glx-new ), даю 99% гарантии, что вам не повезет! И графики под новым ядром вы не увидите!

7. Установка драйверов nVidia с сайта nvidia.com

Чтобы получить работающие иксы под новым ядром, первое что приходит в голову - это установить под новым ядром драйвера с сайта nvidia.com. И это неправильное решение! Как только установятся дрова под новым ядром, графика в вашем старом проверенном ядре работать перестанет (по причине того, что файлы драйверов nVidia жестко завязаны на версию и название ядра). А так как работоспособность нового ядра вы еще толком не проверили, вы можете получить систему "с родным ядром, но без графики" и "глючным ядром, зато с графикой". Думаю, никого такая ситуация не устроит.

В популярной статье "Ядерная физика для домохозяек", есть рекомендации, как получить графику под обоими ядрами. Предлагается следующий путь - иметь на готове установочный пакет дров с nvidia.com, и при желании загрузиться под конкретным ядром, надо сначала загрузиться в консольном режиме этого ядра, установить дрова, и потом загрузиться уже нормально. Думаю, такой подход тоже мало кого обрадует.

Мы сделаем так, что графика будет работать и в старом ядре, и в новом ядре, и для этого не нужно будет каждый раз запускать установку (компиляцию) дров. Для этого нам нужно будет выполнить только одно условие - чтобы графические дрова под разными ядрами были одной версии.

Краткий план действий - ставим дрова с сайта nvidia.com для стандартного ядра в полном объеме. Убеждаемся что они работают. Потом из этого же пакета ставим дрова для самодельного ядра, но в режиме "только графический модуль".

8. Установка драйверов nVidia под обычное ядро

Все, что ниже написано, подходит и для тех, кто просто решил установить новые дрова nVidia под стандартное ядро!

Качаем с сайта nvidia.com дрова под линух. Я себе качал дрова версии 96.43 . Файл называется NVIDIA-Linux-x86-96.43.01-pkg1.run . Но вы можете попробовать другие стабильные релизы, которые присутствуют на сайте nVidia .

Для установки, создаем в каталоге /usr/src подкаталог с именем nvidia , копируем туда этот файл. Находясь в этом подкаталоге, даем файлу разрешение на выполнение

chmod 777 NVIDIA-Linux-x86-96.43.01-pkg1.run

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

  • aptitude. Это интерфейсная оболочка над пакетным менеджером для text-mode.
  • linux-headers-2.6.20-15. Это заголовочные файлы (хедеры) вашего стандартного ядра.
  • linux-headers-2.6.20-15-generic. Точно не скажу на кой хрен этот пакет, но пусть будет.

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

Перегружаемся в консольный режим обычного ядра (в Grub есть такой пункт). В Ubuntu вы автоматически получите права рута, даже пароль вводить ненадо. Теперь надо удалить дрова nVidia , которые есть в системе. Если вы устанавливали дрова через "Менеджер проприетарных драйверов" (или путем установки пакета nvidia-glx или nvidia-glx-new ), то пакет nvidia-glx/nvidia-glx-new нужно удалить из системы, причем не просто деинсталлировать, а деинсталлировать в режиме purge .

Я достаточно тупой пользователь, и вместо того, чтобы разбираться с опциями dpkg , в консоли пользуюсь программой aptitude . Наберите команду

и вы попадете в оболочку, оталенно напоминающую Synaptic . Вверху будет подсказка по клавишам. Чтобы попасть в меню, нажимаем Ctrl+t (неудобно, но что делать). В меню
стрелками и клавишей Enter находим и выбираем пункт "Find ". Пишем строку поиска - nvidia-glx . Засветка попадет на нужный пакет. Снова вызываем меню, и находим там пункт "Purge ". Нажимаем его, и пакет, на котором стоит засветка, будет помечен для полного деинсталлирования всех его файлов из системы (сам пакет останется в кеше, его можно будет заново установить при необходимости). Внизу появится подсказка - "e - Examine, ! - remove ". Нажимаем "e " - и видим какие пакеты будут удалены. Если от nvidia-glx будут зависеть пакеты, то они тоже будут деинсталлированы. Обычно это пакет nvidia-glx-dev . Ничего страшного, что он удалится тоже.

Теперь нажимаем "! " (для особо одаренных - Shift+1 ), тем самым мы соглашаемся с нашими изменениями. Потом нажимаем "q " (выход). При выходе программа удалит отмеченные нами пакеты.

Теперь такой момент. Мы сейчас находимся на уровне init 1 (только консоль, куча сервисов не запущена). Если запустить инсталляцию драйвера nVidia , то она будет ругаться, что возможно у вас не запущен сервис devfs , который обычно запускается на уровне 3 . Поэтому даем команду

telinit 3

и система догрузит нужные сервиса, а заодно выйдет из однопользовательского режима (появится несколько консолей, которые можно переключать клавишами ALT+F1 ...ALT+F6 ). Для дальнейшей работы нам как раз понадобится две консоли. Кстати, система попробует загрузить графику, ей это не удасться, т.к. драйвер мы только что удалили. И она останется в 7 -й консоли с пустым экраном. Не паникуем, нажимаем ALT+F1 , видим первую консоль, там вводим логин, пароль так же как и в графическом входе (только после логина и пароля нажимаем Enter а не TAB ).

Залогинившись, вызываем mc под суперпользователем

Заходим в каталог /usr/src/nvidia

./NVIDIA-Linux-x86-96.43.01-pkg1.run -e

Опция "-e " позволит нам видеть отчет о действиях и увидеть конфликтующие файлы. Начинаем установку. Соглашаемся с лицензией. Отказываемся от докачки исходников с ftp нвидии. Говорим OK что будут создаваться модули нами. На вопросы ввода путей просто нажимаем Enter .

В конце концов, перед самой установкой будет показан список файлов которые будут установлены. А в начале этого списка (если будут найдены) покажутся конфликтующие файлы . Будет написано "Backup file ... " - вот это они и есть. В моем случае это были файлы

/usr/lib/xorg/modules/extensions/libGLcore.so
/usr/lib/xorg/modules/extensions/libglx.so
/usr/lib/libGL.so
/usr/lib/libGL.so.1
/usr/lib/libGL.so.1.2
/lib/modules/2.6.20-15-generic/volatile/nvidia.ko
/usr/include/GL/glext.h
/usr/include/GL/gl.h
/usr/include/GL/glxext.h
/usr/include/GL/glx.h

Это файлы от пакета nvidia-restricted-modules . Дело в том, что если просто удалить этот пакет, то вместе с данными файлами удалятся и все файлы для nVidia -чипсетов (nVidia ведь не только видеокарточки делает). А так же потребуется удаление зависимых пакетов linux-restricted-modules-2.6.20-15-generic , linux-restricted-modules-generic и linux-generic . Поэтому удалять данный пакет нежелательно. Поэтому мы поступим по-другому.

Как только увидите такой список, логинтесь во вторую консоль (переход - ALT+F2 ), запускайте

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

После того, как удалили все файлы, предназначенные для Backup , возвращайтесь в первую консоль. Прерывайте установку (Ctrl+c ) и запускайте ее заново. Если "Backup file ... " больше не будет, то завершайте установку. Все должно пройти гладко. Можете согласиться с исправлением xorg.conf , всеравно содасться резервный файл.

Теперь внимание! Самое главное, в этот момент не перегрузиться! А зайти в файл /etc/default/linux-restricted-modules-common , и добавить в опцию DISABLED_MODULES модули nv и nvidia_new . У меня это сделано так

DISABLED_MODULES="nv nvidia_new"

Если этого не сделать, то при следующей загрузке файл (который вы удалили!) /lib/modules/2.6.20-15-generic/volatile/nvidia.ko будет автоматически восстановлен из пакета nvidia-restricted-modules . А ваш файл, который вы скомпилировали при установке драйверов, называется /lib/modules/2.6.20-15-generic/kernel/drivers/video/nvidia.ko . Так вот, при запуске иксов будет найден первый файл. А до вашего файла дело не дойдет. И иксы не смогут загрузиться.

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

9. Установка драйверов nVidia под самодельное ядро

Теперь остался последний шаг - заставить работать графику в новом ядре. Тут все достаточно просто. Загружаемся в консольном режиме самодельного ядра. Даем команду

логинимся, и в первой консоли запускаем

Заходим в каталог /usr/src/nvidia и начинаем установку дров командой

./NVIDIA-Linux-x86-96.43.01-pkg1.run -Ke

Опции "-Ke " позволяют собрать только графический модуль nvidia.ko под текущее ядро (и файл будет помещен в каталог /lib/modules/имя_текущего_ядра/kernel/drivers ). Никаких других общих файлов, которые например были бы размещены в /usr/lib... как при компиляции с опцией "-e", создаваться не будет.

Точно так, же как и при компиляции в стандартном ядре, соглашаемся с путями нажатием Enter . Доходим до экрана, где будут перечислены файлы, которые будут установлены. Если в начале этого списка есть конфликтущие файлы "Backup file ... ", переключаемся в соседнюю консоль и удаляем (переносим) эти файлы.

После удаления конфликтующих файлов, в первой консоли прерывайте установку (Ctrl+c ), и снова ее запускайте (с опцией "-Ke " естественно). После завершения установки перегружайтесь, выбрав в меню Grub в полный режим с вашим ядром.

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

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

Ядро дистрибутивов 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. Как видите, для осуществления каждого из них придется выполнить ряд консольных команд, но выбор самого варианта уже зависит от ваших потребностей. Используйте представленную в конце статьи инструкцию, чтобы быстро решить возникшие неполадки с загрузкой ПК после инсталляции новой версии ядра.

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

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