- Советы для успешной перекомпиляции ядра Линукс.
- Что есть ядро?
- В каких случаях прибегают к перекомпиляции ядра?
- Чтобы уменьшить размер ядра:
- Чтобы добавить или убрать поддержку тех или иных устройств:
- Чтобы изменить параметры системы:
- Каковы этапы рекомпиляции ядра?
- 1. Проверить и обновить необходимые пакеты
- Основные пакеты для проверки и обновления:
- Как устанавливать module-init-tools?
- 2. Получение исходного кода ядра
- 3. Получение информации о компьютерном «железе»
- 4. Как сконфигурировать ядро
- Шаги по конфигурированию ядра таковы:
- Рисунок 1: menuconfig
- Рисунок 2: Поиск параметров конфигурации
- Рисунок 3: Результаты поиска menuconfig
- Тип процессора и его характеристики
- Рисунок 4 menuconfig processor type
- Конфигурация сети (Networking)
- Драйверы устройств
- File Systems
- 5. Создание ядра
- 6. Конфигурация загрузчика
- 1. Определите, какой вид загрузчика у вас установлен.
- 2. Сконфигурируйте загрузчик
- 7.Перезагрузка сервера
- Заключение
- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Пошаговое руководство как собрать ядро Linux с нуля
- Сборка ядра Linux
- Шаг 1. Загрузите исходный код
- Шаг 2: извлеките исходный код
- Шаг 3: Установите необходимые пакеты
- Шаг 4: Настройте ядро
- Шаг 5: Соберите ядро
- Шаг 6. Обновите загрузчик (необязательно)
- Шаг 7: перезагрузите и проверьте версию ядра
- Полезно?
- Почему?
Советы для успешной перекомпиляции ядра Линукс.
Оригинал: 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, то шаги будут таковы:
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 в этом разделе.
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.
В этом пошаговом руководстве вы узнаете, как собрать и скомпилировать ядро 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 – статьи от экспертов раз в неделю у вас в почте. Укажите свою дату рождения и мы не забудем поздравить вас.
Источник