Linux как перекомпилировать ядро

Содержание
  1. Советы для успешной перекомпиляции ядра Линукс.
  2. Что есть ядро?
  3. В каких случаях прибегают к перекомпиляции ядра?
  4. Чтобы уменьшить размер ядра:
  5. Чтобы добавить или убрать поддержку тех или иных устройств:
  6. Чтобы изменить параметры системы:
  7. Каковы этапы рекомпиляции ядра?
  8. 1. Проверить и обновить необходимые пакеты
  9. Основные пакеты для проверки и обновления:
  10. Как устанавливать module-init-tools?
  11. 2. Получение исходного кода ядра
  12. 3. Получение информации о компьютерном «железе»
  13. 4. Как сконфигурировать ядро
  14. Шаги по конфигурированию ядра таковы:
  15. Рисунок 1: menuconfig
  16. Рисунок 2: Поиск параметров конфигурации
  17. Рисунок 3: Результаты поиска menuconfig
  18. Тип процессора и его характеристики
  19. Рисунок 4 menuconfig processor type
  20. Конфигурация сети (Networking)
  21. Драйверы устройств
  22. File Systems
  23. 5. Создание ядра
  24. 6. Конфигурация загрузчика
  25. 1. Определите, какой вид загрузчика у вас установлен.
  26. 2. Сконфигурируйте загрузчик
  27. 7.Перезагрузка сервера
  28. Заключение
  29. ИТ База знаний
  30. Полезно
  31. Навигация
  32. Серверные решения
  33. Телефония
  34. Корпоративные сети
  35. Пошаговое руководство как собрать ядро Linux с нуля
  36. Сборка ядра Linux
  37. Шаг 1. Загрузите исходный код
  38. Шаг 2: извлеките исходный код
  39. Шаг 3: Установите необходимые пакеты
  40. Шаг 4: Настройте ядро
  41. Шаг 5: Соберите ядро
  42. Шаг 6. Обновите загрузчик (необязательно)
  43. Шаг 7: перезагрузите и проверьте версию ядра
  44. Полезно?
  45. Почему?

Советы для успешной перекомпиляции ядра Линукс.

Оригинал: Tips for successful Kernel Recompilation in Linux
Дата: 1 января 2008
Свободный перевод: Алексей Дмитриев
Дата перевода: 10 января 2008

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

Что есть ядро?

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

В Линукс ядро представляет собой единственный файл, носящий имя vmlinuz. Начальные буквы vm обозначают виртуальную память (virtual memory), а последняя буква z говорит о том, что файл является сжатым. Файл vmlinuz находится в директории /boot.

В каких случаях прибегают к перекомпиляции ядра?

Чтобы уменьшить размер ядра:

Чтобы добавить или убрать поддержку тех или иных устройств:

Чтобы изменить параметры системы:

Каковы этапы рекомпиляции ядра?

1. Проверить и обновить необходимые пакеты

Этот этап нужен только при повышении версии ядра с 2.4 до 2.6. Если делается обновление версии 2.6.х до 2.6.х, то первый этап можно пропустить.

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

Основные пакеты для проверки и обновления:

При обновлении module-init-tools необходимо быть очень внимательным. Модулем называется программа, которая может быть включена в ядро по требованию (в случае необходимости). Module-init-tools содержат утилиты для управления модулями ядра Линукс — для загрузки, выгрузки, перечисления и удаления модулей. Основные доступные утилиты суть:

  • insmod
  • rmmod
  • modprobe
  • depmod
  • lsmod

Как modprobe, так и insmod используются для подключения модулей. Единственное отличие между ними состоит в том, что insmod «не знает» местоположение модулей и не предупреждает о зависимостях. Modprobe «знает» про это, просматривая файл /lib/modules/ /modules.dep

Как устанавливать module-init-tools?

# tar -zxf module-init-tools-3.2.2.tar.gz

2. Сконфигурируйте его:

# cd module-init-tools-3.2.2 # ./configure —prefix=/

3. Переименуйте существующую 2.4 версию утилиты в utility.old:

4. Создайте и установите:

5. Запустите скрипт generate-modprobe.conf для перевода данных из файла конфигурации модулей версии ядра 2.4 (/etc/modules.conf) в файл, применяющийся версией ядра 2.6 (/etc/modprobe.conf)

6. Проверьте версию имеющегося в наличии module-init-tools

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

Скачайте исходники с сайта http://www.kernel.org/pub/linux/kernel/v2.6/ . Вы можете поместить их в директорию /usr/src/kernels на вашем сервере. Если вы планируете обновление ядра до версии 2.6.19.2, то шаги будут таковы:

Читайте также:  Сбита кодировка windows 10

3. Получение информации о компьютерном «железе»

Информация об аппаратной конфигурации вашего компьютера помогут получить следующие команды:

Эта утилита выдаст информацию о сетевой карте и всех устройствах, подключенных к машине. Если в ответ на ввод команды lspci вы получаете ошибку «lscpi: command not found» (команда не найдена), вам придется установить пакет pciutils-2.1.99.test8-3.4 rpm на ваш сервер.

Типичный вывод команды lspci выглядит примерно так:

Информацию о процессоре можно получить из файла /proc/cpuinfo

Полезная программа для получения информации о «железе». Она выдает детальное описание модулей. Прежде чем применять команду modinfo, нужно предварительно выяснить, какие модули загружены. Для этого служит команда lsmod — она выдает список загруженных модулей.

lsmod выдала модуль sata_svw, а детальную информацию про этот модуль можно получить с помощью команды modinfo.

4. Как сконфигурировать ядро

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

1. make config — эта утилита в командной строке задаст вам по очереди все возможные и невозможные вопросы по поводу конфигурации,

2. make xconfig — утилита, имеющая графический интерфейс, что подразумевает установку Иксов. Потому и не применяется на серверах.

3. make oldconfig — текстовая утилита, которая берет существующий файл конфигурации и запрашивает по поводу каждой переменной, не активизированной в этом файле.

4. make menuconfig — текстовой конфигуратор, основанный на управляемом курсором меню. Эта программа чаще всего используется для конфигурации ядра на серверах.

Новичкам я бы посоветовала использовать существующую конфигурацию и воспользоваться программой make menuconfig для конфигурации ядра.

Шаги по конфигурированию ядра таковы:

Шаг 1: Скопируйте текущую конфигурацию ядра в директорию с вашими новыми исходниками.

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

Когда make oldconfig будет запрашивать значения переменных, сохраните старые значения.

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

Шаг 2: make menuconfig.

[root]# make menuconfig

На рисунке 1 представлено главное окно menuconfig. Только некоторые опции могут быть скомпилированы как модули. В menuconfig они обозначаются угловыми скобками . Нажмите M, чтобы компилировать как модуль. Значок звездочки [*] означает встроенное в ядро, M обозначает модуль.

Рисунок 1: menuconfig

Menuconfig предлагает функции поиска. Нажмите «/» для поиска любого модуля. Для примера: если вы не знаете, где искать модуль iptables, нажмите «/», введите «iptables» и нажмите enter.

Рисунок 2: Поиск параметров конфигурации

Рисунок 3: Результаты поиска menuconfig

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

Тип процессора и его характеристики

Subarchitecture Type : Выберите Generic architecture (Summit,bigsmp, ES7000, default)

Processor family : Выберите соответствующий процессор из предлагаемого списка. Для примера: если у вас модель Dual Core AMD Opteron(tm) Processor 170, то можете указать Opteron/Athlon64/Hammer/K8 в имеющихся опциях.

Если у вас многопроцессорный сервер, подключите опции: Symmetric multi-processing support и SMT (Hyper threading) scheduler support.

Если у вас больше 4 Гб оперативной памяти, подключите опцию High Memory Support (64GB).

И, в конце концов, раздел Processor type and features будет выглядеть вот так:

Рисунок 4 menuconfig processor type

Конфигурация сети (Networking)

В этом разделе подключаются Iptables

Все модули в разделе Core Netfilter Configuration and IP: Netfilter Configuration Должны быть подключены как модули.

Драйверы устройств

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

1. Block devices :Подключите RAM disk support и Loop back device support

2. SCSI device support: Подключите в секции SCSI low level drivers соответствующую модель, если она является SCSI устройством.

3. Serial ATA (prod) и Parallel ATA (experimental) drivers: Если у вас SATA жесткий диск, подключите соответствующий драйвер в этой секции. Для примера: Если у вас Intel PIIX/ICH SATA на сервере, подключите Intel PIIX/ICH SATA support в этом разделе.

Читайте также:  Как разбить память windows 10

4. Network device support: Подключите соответствующую сетевую карту. Для примера: Если у вас программа lspci выдала следующие данные сетевой карты:
Ethernet controller: Broadcom Corporation NetXtreme BCM5704 Gigabit Ethernet

File Systems

Когда с этим закончите, созраните настройки (save the settings) и выходите из программы (quit).

5. Создание ядра

Следующий шаг — создание ядра. Вы можете применить команду make bzImage для этой цели. Эта команда создаст сжатый файл bzImage в папке arch/i386/boot в директории исходников Линукс; этот файл и будет новым скомпилированным ядром.

Следующий шаг — компиляция и линковка (создание ссылок) модулей. Здесь применим команду make modules.

После этого необходимо скопировать модули в директорию /lib/modules/. Это делается при помощи команды make modules_install.

Последовательность команд следующая:

Опция -j велит системе проделать множество операций в Makefile вместе, что, в свою очередь, уменьшит время компиляции.

— это удвоенное число процессоров в вашей системе, или число виртуальных процессоров. Его можно узнать, применив следующую команду:

# cat /proc/cpuinfo | grep ^processor | wc -l

Когда это сделано, скопируйте все в директорию /boot следующим образом:

mkinitrd это программа, создающая образ инициирующего виртуального диска — initial RAM Disk Image (initrd).

6. Конфигурация загрузчика

Загрузчик — это первая программа, которая запускается при загрузке системы. Существует два вида загрузчиков: GRUB и LILO

1. Определите, какой вид загрузчика у вас установлен.

# dd if=/dev/hda bs=512 count=1 2>&1 | grep GRUB

Если совпадает (появляется вывод команды; прим. перев.), текущий загрузчик — grub. Если не совпадает (нет никакого вывода команды; прим. перев.), то проверьте на lilo:

# dd if=/dev/hda bs=512 count=1 2>&1 | grep LILO

Примечание: Если у вас винчестер SCSI или SATA, то вместо hda, пишите sda.

2. Сконфигурируйте загрузчик

Если у вас LILO, Добавьте строки для нового ядра в файл /etc/lilo.conf. Типичная запись lilo выглядит примерно так:

lilo -v /sbin/lilo -R «Label for new kernel»

Если у вас GRUB, то добавьте запись для нового ядра в конец списка ядер в файле /etc/grub.conf. В GRUB первая запись имеет номер 0 (ноль). Вот пример записи:

Параметр переменной «panic» обеспечивает перезагрузку системы со старым ядром в случае kernel panic. Это означает, что в случае системного сбоя машина будет перезагружена с параметрами по умолчанию через 3 секунды.

Только не изменяйте значение переменной «default» в файле grub.conf. Когда будете перезагружаться, войдите в режим командной строки grub. Для этого нужно напечатать при появлении загрузочного приглашения команду «grub». Когда grub перейдет в режим командной строки, введите следующую команду:

savedefault —default=3 —once

Это в случае, если новая запись введена под номером 3. Затем выходите из режима командной строки grub.

7.Перезагрузка сервера

Перезагрузите сервер командой reboot. Если, паче чаяния, произойдет системный сбой — kernel panic, то система сама перезагрузится со старым ядром. Если все пойдет хорошо, то система будет загружена с новым ядром. Если система загружается с новым ядром, не забудьте изменить значение переменной «default» в файле grub.conf.

Заключение

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

Источник

ИТ База знаний

Курс по Asterisk

Полезно

— Узнать IP — адрес компьютера в интернете

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Калькулятор инсталляции IP — АТС Asterisk

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

Пошаговое руководство как собрать ядро Linux с нуля

4 минуты чтения

Ядро Linux является основой Unix-подобных операционных систем. Ядро отвечает за связь между оборудованием и программным обеспечением и за распределение доступных ресурсов.

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

Все дистрибутивы Linux основаны на предопределенном ядре. Но если вы хотите отключить несколько параметров и драйверов или попробовать экспериментальные исправления, вам необходимо собрать ядро Linux.

Читайте также:  Сканирование поврежденных файлов windows

В этом пошаговом руководстве вы узнаете, как собрать и скомпилировать ядро Linux с нуля.

Сборка ядра Linux

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

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

Шаг 1. Загрузите исходный код

1. Посетите официальный сайт ядра www.kernel.org и загрузите последнюю версию. Загруженный файл содержит сжатый исходный код.

2. Откройте терминал и используйте команду wget для загрузки исходного кода ядра Linux:

По завершении загрузки в выходных данных отображается сообщение «saved».

Шаг 2: извлеките исходный код

Когда файл будет готов, запустите команду tar , чтобы извлечь исходный код:

Вывод отображает извлеченный исходный код ядра:

Шаг 3: Установите необходимые пакеты

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

Команда, которую мы использовали выше, устанавливает следующие пакеты:

  • 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 :

3. Чтобы внести изменения в файл конфигурации, выполните команду make :

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

4. Меню конфигурации включает в себя такие параметры, как прошивка, файловая система, сеть и параметры памяти. Используйте стрелки, чтобы сделать выбор, или выберите HELP, чтобы узнать больше о вариантах. Когда вы закончите вносить изменения, выберите SAVE, а затем выйдите из меню.

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

Шаг 5: Соберите ядро

1. Начните сборку ядра, выполнив следующую команду:

Процесс сборки и компиляции ядра Linux занимает некоторое время.

Терминал перечисляет все компоненты ядра Linux: управление памятью, драйверы оборудования, драйверы файловой системы, сетевые драйверы и управление процессами.

2. Установите необходимые модули с помощью этой команды:

3. Наконец, установите ядро, набрав:

Вывод показывает готово, когда закончено:

Шаг 6. Обновите загрузчик (необязательно)

Загрузчик GRUB — это первая программа, которая запускается при включении системы.

Команда make install выполняет этот процесс автоматически, но вы также можете сделать это вручную.

1. Обновите initramfs до установленной версии ядра:

2. Обновите загрузчик GRUB с помощью этой команды:

Терминал выведет процесс и подтверждающее сообщение:

Шаг 7: перезагрузите и проверьте версию ядра

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

Когда система загрузится, проверьте версию ядра с помощью команды uname :

Терминал покажет текущую версию ядра Linux.

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

Мини — курс по виртуализации

Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена

Полезно?

Почему?

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

😍 Полезные IT – статьи от экспертов раз в неделю у вас в почте. Укажите свою дату рождения и мы не забудем поздравить вас.

Источник

Оцените статью