В данном мануале будет рассмотрены компиляция и сборка ванильного linux-ядра в debian-пакеты, которые можно устанавливать и удалять с помощью штатных пакетных менеджеров в дебианоподобных дистрибутивах. Тем, кто решит повторить написанное здесь, необходимо хотя бы посредственное знание английского языка, умение делать правильные выводы и стальные нервы , так как с первого раза может и не получиться… Если вас это пугает, лучше закрыть эту страницу и пользуясь любым поисковым сервисом, найти способ установки последних версий linux-ядра с помощью скриптов - там все сделано за вас и использовать свой мозг и тратить нервы нет необходимости.
Если же вы готовы продолжать, хотите примерить на себя шкурку крутого «кулхацкера» и вынести себе моск
, то вам придется сделать несколько легких и один довольно-таки тяжелый шаг на пути к цели. Все необходимые команды для компиляции, сборки и установки можно тупо скопипастить в терминал, усиленно думать вам придется в процессе конфигурирования ядра. В новых версиях дебианоподобных дистрибутивов могут возникнуть проблемы с конфигуратором, работающим в QT-оболочке, решать их будете сами, так как например у меня все работает отлично благодаря тому, что я некродистрофил
. Ему есть несколько альтернатив, но не столь удобных, как он, так что если не осилите пофиксить - воспользуетесь другим. Впрочем главное - конечный результат. Итак - начнём!
Для начала, обновим списки пакетов в репозиториях и обновим сами пакеты. Вызываем терминал привычным вам способом и копируем в него следующее:
sudo apt-get update && sudo apt-get upgrade
ждём окончания операции, затем устанавливаем необходимые для компиляции и сборки пакеты
sudo apt-get install build-essential kernel-package libqt4-dev libqt4-dev-bin qt4-dev-tools qt4-qmake pkg-config libncurses5 libncurses5-dev
если после обновления необходима перезагрузка, выполните ее сейчас и продолжайте со следующего пункта.
Так как впоследствии придется работать в директориях, требующих права ROOT и выполнять команды от его имени, предлагаю один раз ввести команду:
sudo -s
затем переходим в директорию, где будем выполнять все следующие действия:
cd /usr/src/
Где то на просторах интернета встречал такое мнение, что в данной директории не стоит заниматься сборкой ядра во избежание всяких казусов, но поразмыслив, пришел к выводу, что это относится к тому случаю, когда вы используете сорцы вашего текущего ядра, для более старших версий это мнение неактуально, тем более, что вы сами можете изменять имя ядра по своему вкусу… Поэтому смело продолжаем.
Скачиваем отсюда сорцы нужной (последней в данном случае) версии ядра с помощью браузера и копируем скачанный архив в директорию /usr/src с помощью вашего любимого файл-менеджера от имени супер-пользователя,
Если же вы хотите выполнять все действия, ограничив себя только терминалом и избежать при этом массы лишних движений, то вы можете выполнить несколько команд в нем, получив тот же результат… Скачиваем, при условии, что уже находимся в /usr/src:
wget https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.18.1.tar.xz
затем извлекаем архив:
tar -xpJf linux-*.tar.xz
Внимание!
Эта команда распакует все архивы, начинающиеся на слово linux- и имеющие при этом расширение tar.xz, поэтому предварительно удостоверьтесь, что в данной директории находится лишь один такой архив, либо удалите все лишнее - свободное пространство вам не помешает, так как распакованные сорцы имеют немалый объём. Иначе укажите полное имя файла.
Например:
tar -xpJf linux-6.18.1.tar.xz
Создаём линк на директорию с извлеченными сорцами и переходим в /usr/src/linux:
ln -s /usr/src/linux-6.18.1 linux && cd /usr/src/linux
В ряде случаев, если вы используете какое-то специфическое оборудование или хотите добавить поддержку какой-то недокументированной функции в ядро, вам необходимо наложить патч для корректной работы этих устройств… Это отдельная тема, так как существует несколько способов патчинга для различных целей, поэтому не будем заострять на этом внимания, чтобы не вывихнуть себе моск окончательно . К тому же, если у вас до этого все устройства функционировали нормально, то патчинг определенно не нужен. В любом случае, вы сможете нагуглить себе необходимую информацию в любое время, а возможно я как-нибудь напишу отдельное руководство для этих действий… Просто не забывайте, что патчить, если возникла необходимость, надо именно на этом шаге. А пока пропустим его.
Теперь переносим настройки текущей конфигурации ядра в новое
cp /boot/config-`uname -r` .config && make oldconfig
конфигурируем - отмечаем «Y» новые предложенные модули для включения в монолит ядра, либо «M» для создания отдельных, подгружаемых при необходимости модулей или отказываемся «N» от них. Если вы не знаете, для какой цели служит данный модуль, вместо предложенных вариантов «y,m,n» введите «?», чтобы получить его описание. Будьте внимательны, так как если вы отметите что-то не то, у вас может возникнуть ошибка при компиляции и ее процесс прервется. Это и есть тот тяжелый шаг, о котором говорилось в начале статьи, именно на данном этапе вам придется форсировать все свои знания в английском языке, терминологии unix-подобных систем и самое главное - терпение и спокойствие, ибо от них порой больше всего зависит положительных исход. Итак, внесение новых фишек в конфиг ядра завершено, переходим к следующему этапу, по сути являющимся продолжением предыдущего.
Самая важная часть - окончательно правим конфиг, пользуясь удобными инструментами в консольном, псевдографическом или графическом интерфейсе(это на ваш выбор). Существует несколько доступных вариантов, выполняем в терминале один из них:
make config - простой текстовый интерфейс в терминале, вряд ли вам понравится)))
make menuconfig - простой, но мощный псевдографический интерфейс конфигуратора
make nconfig - текстовый вариант с логическим древовидным интерфейсом
make gconfig - красивый, но на мой взгляд бестолковый конфигуратор без поиска(лично я не нашел)
make xconfig - пожалуй, самое элегантное решение из всех предложенных выше, использует «QT», есть удобный поиск, но как раз с ним могут возникнуть проблемы в новых дистрибутивах, как решается проблема - не знаю.
Дополнительные опции:
Не стал переводить оригинал, чтобы не допустить искажений в текст, который и так интуитивно понятен.
Do not skip this step even if you are only upgrading one minor version. New configuration options are added in each release, and odd problems will turn up if the configuration files are not set up as expected. If you want to carry your existing configuration to a new version with minimal work, use «make oldconfig», which will only ask you for the answers to new questions.
На данный момент вы можете скомпилировать файлы локальной справки по сборке ядра, подробнее об этом вы сможете прочитать в файле README в архиве с сорцами ядра. Также не забывайте об архитектуре вашей системы - пользователям 64-битных систем придется немного сложнее. Не рекомендую включать модули «lguest» - выбьет ошибку при компиляции, придется возвращаться назад. и вообще - будьте предельно внимательны, если взялись за это…
Информация для владельцев дискретных видеокарт
В ваших интересах будет выключить все модули, связанные с названием вашего GPU, чтобы при установке проприетарного видеодрайвера с официального сайта не возникло проблем. Например, если вы владелец видеокарты NVidia, то желательно найти и отключить все модули, имеющие в названии nvidia. Если вы владелец интегрированного решения Intel, то вам наоборот желательно отметить нужный вам модуль intel.
Владельцам гибридной графики вообще не стоит браться (если не уверены в своих силах) за сборку ядра во избежание эксцессов с трудно находимым решением, переходящим в холивары, типа линукс - говно, хотя всему виной будет ваше незнание…
Если вы хотите персонализировать версию ядра, например чтобы не путаться в Grub или похвастаться перед друзьями, откройте Makefile:
nano Makefile
и дополните строку EXTRAVERSION примерно таким образом
VERSION = 6 PATCHLEVEL = 16 SUBLEVEL = 6 EXTRAVERSION = -free_custom_name # все, что вы напишете в этой строке, будет отображаться при проверке версии ядра NAME = Baby Opossum Posse
в строке «EXTRAVERSION» после знака «=« необходимо поставить пробел, затем дефис, а уже после него ваше персональное название, допускаются только латинские буквы, цифры и некоторые знаки, какие именно, вы можете перебрать методом тыка, если у вас много времени и терпения . Например я пишу свой nick-name.
Теперь создадим сим-линк на документацию в корень рабочего каталога, ибо этот баг дебиановских утилит для сборки ядра до сих пор не пофиксили (видать всем пофиг на это )
ln ./Documentation/admin-guide/reporting-bugs.rst REPORTING-BUGS
Допустим, вы закончили конфигурацию параметров ядра. Избавляемся от лишнего командой:
make-kpkg clean
Теперь вам осталось лишь скомпилировать и собрать ваше кастомное ядро в пакеты, чтобы была возможность удалить их в случае неудачной/косячной сборки или избавления от старых версий при установке нового ядра, пользуясь пакетными менеджерами системы. Выполняем команду:
make-kpkg -j 16 --initrd --revision=6.18.1-01 kernel_image kernel_headers modules_image
-j 16 означает использование при компиляции шестнадцати ядер или потоков процессора (это в моем случае, естественно пишем соответственно своему железу), в revision пишем что угодно - 386, 64 и так далее, например я пишу версию ядра - 6.6.6 и номер сборки - 01. Ждём, возможно долго ждём, все зависит от количества модулей, которые вы решили впилить в свое ядро и от мощности вашего компьютера.
Итак, настала долгожданная минута, вы за это время наверняка успели как минимум выпить кофе с коньяком и покурить , как максимум посмотреть кино или вздремнуть… Пришла пора установить собственноручно скомпиленное ядро
. Если вы владелец компьютера с дискретной видеокартой, рекомендую заранее переименовать xorg.conf1) во избежание всяких черных экранов при загрузке:
mv /etc/X11/xorg.conf /etc/X11/xorg.conf_backup
если вы собираете ядро в первый раз и не уверены в положительном результате.
Также рекомендую использовать проприетарные драйвера для видеокарт при использовании кастомных ядер - будет гораздо меньше проблем.
Устанавливаем полученные пакеты:
cd .. && dpkg -i *.deb
Закрываем все открытые приложения, перезагружаем компьютер удобным вам способом или например в том же терминале:
sudo reboot
Если вы все сделали правильно, отмечали только необходимые вам модули и не убирали нужные, система загрузится в графическом режиме, рекомендуется переустановить видеодрайвер, для начала попробовать из репозиториев, если увидите отказ в установке - не расстраивайтесь, можно попытаться установить драйвер с официального сайта, например для NVidia или AMD/Ati Radeon. Полагаю, что по одному из доступных способов вы установите драйвер и у вас все будет o'kay. О том, как в Ubuntu установить драйвер NVidia, можно почитать здесь, как установить драйвер AMD/Ati Radeon можно узнать здесь. Дерзайте, постигайте этот сложный, но вполне понятный мир линуксов . Удачи!
Luciferus 2014/07/24 07:58