Linux headers red hat

Приложение A. Построение собственного ядра

Многие люди, новички в Linux, часто спрашивают: «Зачем мне нужно собирать собственное ядро?» Учитывая возможности, появившиеся вместе с модульностью ядра, наиболее точно на этот вопрос можно ответить так: «Если вы не знаете зачем это делать, вероятно вам и не нужно это».

В прошлом, вы должны были перекомпилировать ядро при установке в компьютер нового оборудования. Другими словами, ядро было статическим . Улучшения, внесённые в ядра Linux 2.0. x , позволили драйверам многих устройств стать модулями в составе различных компонентов, загружаемых по требованию. Тем не менее, пользователи использующие несколько ядер, собранных для разных конфигурации компьютеров, например SMP и UP, сталкивались с серьезными проблемами. Улучшения модульности ядра, внесённые в Linux 2.4. x , допускают сосуществование множества ядер, не разделяющих общие модули.

За информацией об управлении модулями ядра, обратитесь к Главе 24 . Пока вы не построите собственное ядро своей системы, вы не заметите изменений в поддержке модулей ядра.

Построение модульного ядра

В этом разделе приводятся указания по формированию модульного ядра. Если вы интересует построение монолитного ядра, обратитесь к разделу Формирование монолитного ядра за разъяснением различных задач построения и установки монолитного ядра.

Выполнив следующие действия, вы сможете построить своё ядро для архитектуры x86:

В этом примере используется версия ядра 2.4.7-3. Версия вашего ядра может отличаться. Чтобы определить версию вашего ядра, выполните команду uname -r . Замените 2.4.7-3 версией вашего ядра.

Очень важно убедиться в том, что у вас есть аварийный загрузочный диск, который понадобится, если вы допустите ошибку. Если вы не сделали его во время установки, выполните команду mkbootdisk , чтобы сделать его сейчас. Команда выглядит примерно так: mkbootdisk —device /dev/fd0 2.4. x , где 2.4. x — полная версия вашего ядра (как, например, 2.4.7-3). Сделав это, проверьте загрузочный диск, чтобы убедиться в том, что с него можно загрузиться.

Вы должны установить пакеты kernel-headers и kernel-source . Выполните команды rpm -q kernel-headers и rpm -q kernel-source , чтобы определить их версии, если они установлены. Если они не установлены, установите их, воспользовавшись Red Hat Linux CD 1 или FTP-сайтом Red Hat, по адресу: ftp://ftp.redhat.com (список зеркал доступен по адресу: http://www.redhat.com/mirrors.html ). Обратитесь к Главе 25 за информацией об установке RPM пакетов.

Читайте также:  Install pip3 alt linux

Перейдите в приглашении оболочки в каталог /usr/src/linux-2.4 . Все следующие команды должны выполняться в этом каталоге.

Важно начать построение ядра, когда дерево исходных текстов находится в подходящем состоянии. Поэтому рекомендуется начать построение с выполнения команды: make mrproper . Она удалит все файлы конфигурации вместе с остатками предыдущих компиляций, возможно, разбросанных по всему дереву исходных текстов. Если у вас уже есть рабочий файл конфигурации ( /usr/src/linux-2.4/.config ), который вы хотите использовать, скопируйте его в другой каталог до выполнения команды, а затем, выполнив команду, верните его на место. Если вы используете существующий файл конфигурации, пропустите следующий шаг.

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

Если вы работаете в системе X Window, для этого рекомендуется выполнить команду make xconfig . Компоненты перечислены на различных уровнях меню, и выбираются с помощью мыши. Вы можете выбрать Y (yes), N (no), или M (module). Выбрав компоненты, нажмите кнопку Save and Exit (Сохранить и выйти) , чтобы создать файл конфигурации /usr/src/linux-2.4/.config и выйти из программы Linux Kernel Configuration (Настройка ядра Linux) .

Другие способы настройки ядра приведены ниже:

make config — Интерактивная программа с текстовым интерфейсом. Она представляет компоненты в линейном формате, и вы выбираете их один за другим. Этот способ не требует использования системы X Window и не позволяет вам изменять ответы на предыдущие вопросы.

make menuconfig — Программа с текстовым интерфейсом, управляемая с помощью меню. Компоненты распределены в меню по категориям; вы выбираете нужные компоненты также, как и в программе установки Red Hat Linux с текстовым режимом. Отметьте элемент, который вы хотите включить, соответствующим символом: [*] (встроенный), [ ] (исключён), (модуль), или < >(модуль поддерживается). Этот способ также не требует использования X Window.

make oldconfig — Это не интерактивный сценарий, который установит в вашем файле конфигурации значения по умолчанию. Если вы используете ядро Red Hat по умолчанию, он создаст файл конфигурации для ядра, поставляемого с Red Hat Linux для вашей архитектуры. Это полезно для восстановления работоспособных настроек ядра по умолчанию, для того, чтобы затем выключить ненужные вам возможности.

Чтобы использовать kmod (подробности вы найдете в Главе 24 ) и модули ядра, во время настройки вы должны ответить Yes (Да) на вопросы относительно kmod support и module version (CONFIG_MODVERSIONS) support .

Создав файл /usr/src/linux-2.4/.config , выполните команду make dep , чтобы правильно настроить все зависимости.

Читайте также:  Удалить сервис linux systemctl

Выполните команду make clean , чтобы подготовить дерево исходных текстов к компиляции.

На следующем этапе построения модульного ядра вы должны изменить файл /usr/src/linux-2.4/Makefile , чтобы не перезаписать существующее ядро. Способ, описанный здесь, позволяет вам проще легче всего восстановить систему в случае неудачи. Если вам интересны другие возможности, подробности вы сможете найти на странице: http://www.redhat.com/mirrors/LDP/HOWTO/Kernel-HOWTO.html или в файле Makefile каталога /usr/src/linux-2.4 в вашей системе Linux.

Отредактируйте в файле /usr/src/linux-2.4/Makefile строку, начинающуюся с EXTRAVERSION = , чтобы получить «уникальное» имя, добавив в конце дату. Например, если вы компилируете ядро версии 2.4.7-3, вы можете добавить несколько символов, чтобы строка выглядела примерно так: EXTRAVERSION = -0.1.21-jul2001 . Это позволит вам в вашей системе одновременно иметь и старое рабочее ядро, и новое ядро, версии 2.4.7-3-jul2001.

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

Постройте все настроенные модули, выполнив make modules .

Установите модули ядра (даже если вы не компилировали ни одного), выполнив make modules_install . Убедитесь в том, что вы ввели подчеркивание ( _ ). При этом модули ядра окажутся в каталоге /lib/modules/ KERNELVERSION /kernel/drivers , где KERNELVERSION — версия ядра, указанная в файле Makefile . В рассматриваемом примере это будет каталог /lib/modules/2.4.7-3-jul2001/kernel/drivers/ .

Если у вас установлен SCSI адаптер и вы сделали драйвер SCSI модульным, постройте новый образ initrd (обратитесь к разделу Создание образа initrd ; заметьте, что есть несколько причин делать драйвер SCSI модульным в собственном ядре). Если у вас нет причин на то, чтобы создавать образ initrd , не создавайте его и не добавляйте его в lilo.conf .

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

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

Источник

How To: Install Kernel Source Code in CentOS/RedHat

CentOS Linux

CentOS Linux From time to time it’s required to compile some Linux kernel specific software on your CentOS/RedHat Linux system. Most often it’s some kind of kernel module specific to a software that requires deep integration with your operating system.

Install Kernel Sources and Headers in RedHat/CentOS

You need to install two packages: kernel sources from kernel-develop and header files from kernel-headers:

[email protected]:~ # yum install kernel-devel kernel-headers Loaded plugins: fastestmirror, langpacks Determining fastest mirrors epel/x86_64/metalink | 28 kB 00:00:00 - base: centos.quelquesmots.fr - epel: mirror.in2p3.fr - extras: centos.crazyfrogs.org - updates: centos.quelquesmots.fr base | 3.6 kB 00:00:00 epel | 4.7 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 (1/4): epel/x86_64/updateinfo | 998 kB 00:00:00 (2/4): extras/7/x86_64/primary_db | 201 kB 00:00:00 (3/4): updates/7/x86_64/primary_db | 5.0 MB 00:00:00 (4/4): epel/x86_64/primary_db | 6.7 MB 00:00:00 Resolving Dependencies --> Running transaction check ---> Package kernel-devel.x86_64 0:3.10.0-957.12.2.el7 will be installed ---> Package kernel-headers.x86_64 0:3.10.0-957.12.2.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ============================================================================ Package Arch Version Repository Size ============================================================================ Installing: kernel-devel x86_64 3.10.0-957.12.2.el7 updates 17 M kernel-headers x86_64 3.10.0-957.12.2.el7 updates 8.0 M # Transaction Summary Install 2 Packages Total download size: 25 M Installed size: 41 M Is this ok [y/d/N]: y Downloading packages: Delta RPMs disabled because /usr/bin/applydeltarpm not installed. (1/2): kernel-headers-3.10.0-957.12.2.el7.x86_64.rpm | 8.0 MB 00:00:00 (2/2): kernel-devel-3.10.0-957.12.2.el7.x86_64.rpm | 17 MB 00:00:00 --- Total 55 MB/s | 25 MB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : kernel-devel-3.10.0-957.12.2.el7.x86_64 1/2 Installing : kernel-headers-3.10.0-957.12.2.el7.x86_64 2/2 Verifying : kernel-headers-3.10.0-957.12.2.el7.x86_64 1/2 Verifying : kernel-devel-3.10.0-957.12.2.el7.x86_64 2/2 Installed: kernel-devel.x86_64 0:3.10.0-957.12.2.el7 kernel-headers.x86_64 0:3.10.0-957.12.2.el7

Complete! I just realised that the same packages will most obviously be needed if you ever decide to compile your Linux kernel.

Читайте также:  Прокси сервер отказывается принимать соединение линукс

Why Kernel Source is Old Version in Your OS

Most Linux distros lag quite a big behing the latest Linux kernel version: this is expected, because their maintainers need time to download and complile the latest kernel and to also complete the full suite of integratory tests. This is done so that most of key software running in a particular distro will still function. Quite possibly, lots of kernel modules specific to a distro are re-compiled at that stage. What this means is that your Linux distro will not have the latest branch of Kernel sources (5.1 as of May 2019). In this example today, my CentOS 7.6 system is using and downloading Linux Kernel 3.10.0. Verify If You Have Kernel Sources Installed Simply look in the /usr/src/kernels directory: you will at least have the just-installed packages but quite possibly older versions as well:

[email protected]:~ # ls /usr/src/kernels/ 3.10.0-957.12.2.el7.x86_64 [email protected]:~ # ls /usr/src/kernels/3.10.0-957.12.2.el7.x86_64/ arch drivers include Kconfig Makefile Module.symvers scripts System.map virt block firmware init kernel Makefile.qlock net security tools vmlinux.id crypto fs ipc lib mm samples sound usr
[email protected]:~ # du -sh /usr/src/kernels/3.10.0-957.12.2.el7.x86_64 74M /usr/src/kernels/3.10.0-957.12.2.el7.x86_64

See Also

Источник

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