- Установка ядра в линукс
- Примечание
- Способ первый. Сборка ядра в .deb пакеты
- Установка необходимых пакетов для компиляции ядра
- Скачиваем исходники ядра
- Накладывание патчей
- Конфигурирование ядра
- Компиляция ядра
- Решение проблемы с созданием initrd.img
- Установка нового ядра
- Способ второй. «traditional» way
- Следующие шаги
- Проблемы
- Пошаговое руководство как собрать ядро Linux с нуля
- Сборка ядра Linux
- Шаг 1. Загрузите исходный код
- Шаг 2: извлеките исходный код
- Шаг 3: Установите необходимые пакеты
- Шаг 4: Настройте ядро
- Шаг 5: Соберите ядро
- Шаг 6. Обновите загрузчик (необязательно)
- Шаг 7: перезагрузите и проверьте версию ядра
- Итог
Установка ядра в линукс
Материал из Bryansk Linux Users Group и www.rm.pp.ru
- Примечание
- Способ первый. Сборка ядра в .deb пакеты
- Накладываем патчи
- Конфигурирование ядра
- Компиляция ядра
- Установка нового ядра
- Способ второй. «traditional» way
- Проблемы
- Ссылки
Примечание
Будет описано два способа сборки ядра. Первым будет описан вариант сборки .deb пакетов, которые могут быть установлены в Вашей или другой системе. Второй метод, так называемый «traditional» путь.
Способ первый. Сборка ядра в .deb пакеты
Установка необходимых пакетов для компиляции ядра
Для начала обновим списки пакетов:
Установим нужные нам пакеты:
# apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential
Скачиваем исходники ядра
Переходим в каталог /usr/src, идем на www.kernel.org и выбираем нужную версию ядра. В данном случае будет рассмотрена версия linux-2.6.23.1.tar.bz2. Скачиваем:
# cd /usr/src # wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.1.tar.bz2
Распакуем исходники и создадим символьную ссылку:
# tar xjf linux-2.6.23.1.tar.bz2 # rm linux (удалим предыдущий симлинк) # ln -s linux-2.6.23.1 linux # cd /usr/src/linux
Накладывание патчей
Опционально и без необходимости не делайте этого!
Иногда требуются драйвера или средства, которые не поддерживаются в имеющемся ядре, например технология виртуализации или иная другая специфика, которой нет в текущем релизе. В любом случае это исправляется наложением так называемых патчей (если таковые имеются).
Итак, предположим вы скачали необходимый патч (для примера назовем patch.bz2) в /usr/src. Применим скачанный патч на наши исходники (Вы должны быть все еще в каталоге /usr/src/linux):
# bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run # bzip2 -dc /usr/src/patch.bz2 | patch -p1
Первая команда — только тест и никакие изменения не будут применены к исходникам. Если после первой команды не было выдано никаких ошибок, можно выполнить вторую команду для применения патча. Ни в коем случае не выполняйте вторую команду, если после первой были выданы ошибки!
Таким образом Вы можете накладывать патчи на исходники ядра. Например, имеются некоторые особенности, которые доступны только в 2.6.23.8 ядре, а исходники не содержали необходимой функциональности, но выпущен патч patch-2.6.23.8.bz2. Вы можете применить этот патч к исходникам ядра 2.6.23, но не 2.6.23.1 или 2.6.23.3 и т.д. Подробнее об этом можно прочитать на [1]:
Предъисправления (препатчи) — эквивалентны альфа релизам; патчи должны быть применены к исходникам полного предыдущего релиза с 3-х значной версией (например, патч 2.6.12-rc4 может быть применен к исходникам версии 2.6.11, но не к версии 2.6.11.10.)
Это значит, если мы хотим собрать ядро 2.6.23.8, необходимо скачать исходники версии 2.6.23 (http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.gz) применительно во втором способе «traditonal» путь!
Применяем патч patch-2.6.23.8.bz2 к ядру 2.6.23:
# cd /usr/src # wget http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.22.8.bz2 # cd /usr/src/linux # bzip2 -dc /usr/src/patch-2.6.23.8.bz2 | patch -p1 --dry-run # bzip2 -dc /usr/src/patch-2.6.23.8.bz2 | patch -p1
Конфигурирование ядра
Неплохой идеей будет использование существующего конфигурационного файла работающего ядра и для нового. Поэтому копируем существующую конфигурацию в /usr/src/linux:
# make clean && make mrproper # cp /boot/config-`uname -r` ./.config
после которой загрузится графическое меню конфигурации ядра. Выбираем в меню конфигуратора пункт «Load an Alternate Configuration File» и нажимаем «Оk». Затем (если требуется) сделайте необходимые изменения в конфигурации ядра перемещаясь по меню (подробности конфигурации ядра можно найти в www.google.com ). Когда закончите и нажмете «Exit», будет задан вопрос «Do you wish to save your new kernel configuration?», отвечаем утвердительно «Yes».
Компиляция ядра
Сборка ядра выполняется всего в две команды:
# make-kpkg clean # fakeroot make-kpkg --initrd --append-to-version=-cybermind kernel_image kernel_headers
После —append-to-version=, можно написать любое название, какое Вам угодно, но оно должно начинаться со знака минус (-) и не иметь пробелов.
Процесс компиляции и сборки .deb пакетов может занят довольно продолжительное время. Все будет зависить от конфигурации ядра и возможностей Вашего процессора.
Решение проблемы с созданием initrd.img
С недавнего времени в Debian появился баг, заключающийся в том, что после установки пакетов с собранными описанным здесь способом ядрами, не создаётся соответствующий им файл /boot/initrd.img. Для исправления применительно к уже установленному ядру, придётся создать initrd.img вручную:
Для решения проблемы «на будущее» – закомментировать, как показано, вторую из процитированных ниже строк в файле /etc/kernel/postinst.d/initramfs-tools:
# kernel-package passes an extra arg; hack to not run under kernel-package #[ -z "$2" ] || exit 0
Установка нового ядра
Когда удачно завершится сборка ядра, в каталоге /usr/src будут созданы два .deb пакета:
linux-image-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb — собственно само актуальное ядро и linux-headers-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb — заголовки ядра, необходимые для сборки других модулей (например при сборке модулей драйвера nVidia). Устанавливаем их:
# dpkg -i linux-image-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb # dpkg -i linux-headers-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb
(Эти пакеты теперь могут быть установлены на другой системе и собирать их заново уже не будет необходимости.)
Всё, установка завершена, меню загрузчика, установка нового RAM-диска и ядра будут сделаны автоматически. Остается только перезагрузиться:
Способ второй. «traditional» way
Выполняем все пункты, описанные выше ДО пункта «Компиляция ядра».
Далее, традиционный способ:
# make all # make modules_install # make install
Как обычно, сборка может занять продолжительное время, зависящее от конфигурации ядра и возможностей процессора.
Основной недостаток этого метода — если вы часто обновляете ядра, то через некоторое время их накопится большое количество и захочется удалить неиспользуемые. Чтобы это было сделать проще, можно собрать ядро и другие файлы, которые устанавливаются в систему по командам «make modules_install» и «make install» в deb-пакет (а точнее в два начиная с ядра 2.6.27) подобно первому способу, но воспользуемся здесь скриптами самого ядра:
В каталоге на уровень выше каталога исходников появятся два .deb-файла. Я собирал ядро в каталоге /usr/src/linux-2.6.27.10 и у меня в каталоге /usr/src/ появились файлы
# linux-2.6.27.10_2.6.27.10-1_amd64.deb # linux-firmware-image_2.6.27.10-1_all.deb
Ядро устанавливается командой
# dpkg -i linux-2.6.27.10_2.6.27.10-1_amd64.deb
Старые ядра можно удалять, например, из synaptic’a
Следующие шаги
Ядро собрано и установлено, но еще теперь необходимо создать RAM-диск (без которого ядро просто не загрузится) и необходимо обновить загрузчик GRUB. Для этого выполним следующее:
# depmod 2.6.23.1 # apt-get install yaird
# mkinitrd.yaird -o /boot/initrd.img-2.6.23.1 2.6.23.1
Обновим легко и безболезненно загрузчик:
Всё, загрузчик и новое ядро готовы, остается только перезагрузиться:
Проблемы
Если после перезагрузки, выбранное вами новое ядро не загружается, перезагрузитесь и выберите Ваше предыдущее ядро и можно попробовать проделать весь процесс заново, чтоб собрать рабочее ядро. Не забывайте в таком случае удалить строчки нерабочего ядра в /boot/grub/menu.lst.
Пошаговое руководство как собрать ядро Linux с нуля
Ядро Linux является основой Unix-подобных операционных систем. Ядро отвечает за связь между оборудованием и программным обеспечением и за распределение доступных ресурсов.
Все дистрибутивы Linux основаны на предопределенном ядре. Но если вы хотите отключить несколько параметров и драйверов или попробовать экспериментальные исправления, вам необходимо собрать ядро Linux.
В этом пошаговом руководстве вы узнаете, как собрать и скомпилировать ядро Linux с нуля.
Сборка ядра Linux
Процесс создания ядра Linux состоит из семи простых шагов. Однако процедура требует значительного времени для завершения, в зависимости от скорости системы.
Примечание. Если версия на веб-сайте ядра не совпадает с версией из приведенных ниже шагов, используйте эти команды и замените номер версии ядра.
Шаг 1. Загрузите исходный код
1. Посетите официальный сайт ядра www.kernel.org и загрузите последнюю версию. Загруженный файл содержит сжатый исходный код.
2. Откройте терминал и используйте команду wget для загрузки исходного кода ядра Linux:
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.6.tar.xz
По завершении загрузки в выходных данных отображается сообщение «saved».
Шаг 2: извлеките исходный код
Когда файл будет готов, запустите команду tar , чтобы извлечь исходный код:
Вывод отображает извлеченный исходный код ядра:
Шаг 3: Установите необходимые пакеты
Перед сборкой ядра установите дополнительные пакеты. Для этого запустите эту команду:
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
Команда, которую мы использовали выше, устанавливает следующие пакеты:
- git — отслеживает и записывает все изменения исходного кода во время разработки. Это также позволяет отменить изменения.
- fakeroot — упаковочный инструмент, создающий фальшивую корневую среду.
- build-essential — Устанавливает инструменты разработки, такие как C, C++, gcc и g++.
- ncurses-dev — Библиотека программирования, предоставляющая API для текстовых терминалов.
- xz-utils — обеспечивает быстрое сжатие и распаковку файлов.
- libssl-dev — поддерживает SSL и TSL, которые шифруют данные и делают интернет-соединение безопасным.
- bc (Basic Calculator) — математический язык сценариев, поддерживающий интерактивное выполнение операторов.
- flex (Fast Lexical Analyzer Generator) — генерирует лексические анализаторы, преобразующие символы в токены.
- libelf-dev — выдает общую библиотеку для управления файлами ELF (исполняемые файлы, дампы ядра и объектный код)
- bison — генератор парсера GNU, который преобразует описание грамматики в программу на языке C.
Шаг 4: Настройте ядро
Исходный код ядра Linux поставляется с конфигурацией по умолчанию. Однако вы можете настроить его под свои нужды. Для этого выполните следующие действия:
1. Перейдите к каталогу linux-5.9.6. с помощью команды cd :
2. Скопируйте существующий файл конфигурации с помощью команды cp :
cp -v /boot/config-$(uname -r) .config
3. Чтобы внести изменения в файл конфигурации, выполните команду make :
Команда запускает несколько скриптов, которые затем открывают меню конфигурации:
4. Меню конфигурации включает в себя такие параметры, как прошивка, файловая система, сеть и параметры памяти. Используйте стрелки, чтобы сделать выбор, или выберите HELP, чтобы узнать больше о вариантах. Когда вы закончите вносить изменения, выберите SAVE, а затем выйдите из меню.
Примечание. Изменение настроек некоторых параметров может привести к тому, что ядро не будет работать. Если вы не знаете, что изменить, оставьте настройки по умолчанию.
Шаг 5: Соберите ядро
1. Начните сборку ядра, выполнив следующую команду:
Процесс сборки и компиляции ядра Linux занимает некоторое время.
Терминал перечисляет все компоненты ядра Linux: управление памятью, драйверы оборудования, драйверы файловой системы, сетевые драйверы и управление процессами.
2. Установите необходимые модули с помощью этой команды:
sudo make modules_install
3. Наконец, установите ядро, набрав:
Вывод показывает готово, когда закончено:
Шаг 6. Обновите загрузчик (необязательно)
Загрузчик GRUB — это первая программа, которая запускается при включении системы.
Команда make install выполняет этот процесс автоматически, но вы также можете сделать это вручную.
1. Обновите initramfs до установленной версии ядра:
sudo update-initramfs -c -k 5.9.6
2. Обновите загрузчик GRUB с помощью этой команды:
Терминал выведет процесс и подтверждающее сообщение:
Шаг 7: перезагрузите и проверьте версию ядра
Когда вы выполните описанные выше действия, перезагрузите компьютер.
Когда система загрузится, проверьте версию ядра с помощью команды uname :
Терминал покажет текущую версию ядра Linux.
Итог
В этом пошаговом руководстве вы узнали, как собрать ядро Linux с нуля и установить необходимые пакеты.