- Компиляция ядра linux
- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Пошаговое руководство как собрать ядро Linux с нуля
- Сборка ядра Linux
- Шаг 1. Загрузите исходный код
- Шаг 2: извлеките исходный код
- Шаг 3: Установите необходимые пакеты
- Шаг 4: Настройте ядро
- Шаг 5: Соберите ядро
- Шаг 6. Обновите загрузчик (необязательно)
- Шаг 7: перезагрузите и проверьте версию ядра
- Полезно?
- Почему?
- Конфигурирование и компиляция ядра Linux
- Способы конфигурации ядра Linux
- Настраиваемые параметры ядра
- Когда нужно собирать новую версию ядра?
- Конфигурирование параметров ядра
- Компиляция ядра
Компиляция ядра linux
Дата добавления: 31 марта 2010
Зачем вообще самому компилировать ядро?
Пожалуй, главный вопрос, который задают по поводу компиляции ядра: «А зачем мне это делать?».
Многие считают это бессмысленной тратой времени для того, чтобы показать себя умным и продвинутым «линуксоидом». На самом деле компиляция ядра — это очень важное дело. Допустим, вы купили новый ноутбук, в котором у вас не работает веб-камера. Ваши действия? Вы заглядываете в поисковик и ищите решение проблемы по этому вопросу. Довольно часто может оказаться, что ваша веб-камера работает на ядре более новой версии, чем у вас. Если вы не знаете, какая у вас версия — введите в терминале uname -r , в результате вы получите версию ядра (например, linux-2.6.31-10). Также компиляция ядра широко применяется для увеличения производительности: дело в том, что по умолчанию в дистрибутивах ядра компилируются «для всех», из-за этого в нем включено огромное количество драйверов, которые вам могут не понадобиться. Так что если вы хорошо знаете используемое оборудование, то можете отключить ненужные драйвера на этапе конфигурирования. Также есть возможность включить поддержку более 4х Гигабайт оперативной памяти, не меняя разрядность системы. Итак, если вам всё же необходимо иметь своё ядро, приступим к компиляции!
Получение исходного кода ядра.
Первое, что необходимо сделать — получить исходный код нужной версии ядра. Обычно необходимо получить самую новую стабильную версию. Все официальные версии ядра доступны на kernel.org. Если у вас уже установлен X сервер (домашний компьютер), то вы можете перейти на сайт в вашем любимом браузере и скачать нужную версию в архиве tar.gz (сжатый gzip). Если же вы работаете в консоли (например ещё не устанавливали X сервер или конфигурируете сервер), можете воспользоваться текстовым браузером (например elinks). Также можно воспользоваться стандартным менеджером загрузок wget :
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.1.tar.gz
Но учтите, что вы должны знать точный номер нужной версии.
Распаковка архива исходного кода.
После того как вы получили архив с исходным кодом, вам необходимо распаковать архив в папку. Это можно сделать из графических файловых менеджеров (dolphin,nautilus и т.п) или через mc. Либо воспользуйтесь традиционной командой tar:
tar -zxvf путь_до_архива
Теперь у вас есть папка и исходным кодом, перейдите в неё, используя команду cd каталог_исходного_кода_ядра (чтобы просмотреть список каталогов в папке, используйте команду ls ).
Конфигурация ядра.
После того как вы перешли в каталог с исходным кодом ядра, необходимо выполнить «20 минутную» конфигурацию ядра. Цель её — оставить только нужные драйвера и функции. Все команды уже нужно исполнять от имени суперпользователя.
make config — консольный режим конфигуратора.
make menuconfig — консольный режим в виде списка.
make xconfig — графический режим.
После внесения нужных изменений, сохраните настройки и выйдите из конфигуратора.
Компиляция.
Пришло время завершающего этапа сборки — компиляция. Это делается двумя командами:
make && make install
Первая команда скомпилирует в машинный код все файлы, а вторая установит новое ядро в вашу систему.
Ждем от 20 минут до нескольких часов (в зависимости от мощности компьютера). Ядро установлено. Чтобы оно появилось в списке grub(2), введите (от суперпользователя)
update-grub
Теперь после перезагрузки нажмите «Escape», и вы увидите новое ядро в списке. Если же ядро не включается, то просто загрузитесь со старым ядром и конфигурируйте более аккуратно.
KernelCheck — компиляция ядра не заходя в консоль.
KernelCheck позволяет собрать ядро в полностью графическом режиме для Debian и основанных на нём дистрибутивов. После запуска, KernelCheck предложит свежие версии ядра и патчи, и после вашего согласия, скачает исходных код, запустит графический конфигуратор. Программа соберет ядро в .deb пакеты и установит их. Вам останется лишь перезагрузиться.
Автор: Soft, дата: 31 марта 2010 , время: 20:46:09 (MSK).
Если блог для новичков, то сразу бы с кернелчек программы начать надо, а потом уже для тех кому не страшно самому))))
+ не плохо былобы скриншоты каждого этапа)))
Ноябрь 2018
Октябрь 2018
Май 2017
Март 2017
Апрель 2016
Март 2016
Октябрь 2013
Сентябрь 2013
Май 2013
Март 2013
Ноябрь 2012
Июль 2012
Июнь 2012
Апрель 2012
Март 2012
Февраль 2012
Апрель 2011
Март 2011
Февраль 2011
Январь 2011
Декабрь 2010
Ноябрь 2010
Октябрь 2010
Сентябрь 2010
Август 2010
Июль 2010
Июнь 2010
Май 2010
Апрель 2010
Март 2010
Источник
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Пошаговое руководство как собрать ядро Linux с нуля
4 минуты чтения
Ядро Linux является основой Unix-подобных операционных систем. Ядро отвечает за связь между оборудованием и программным обеспечением и за распределение доступных ресурсов.
Мини — курс по виртуализации
Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена
Все дистрибутивы 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 – статьи от экспертов раз в неделю у вас в почте. Укажите свою дату рождения и мы не забудем поздравить вас.
Источник
Конфигурирование и компиляция ядра Linux
Когда возникает необходимость создания мощной и надёжной системы на основе Linux (будь то обслуживание технологических процессов, веб-хостинга и т. д.), то очень часто приходится настраивать системное ядро таким образом, чтобы вся система работала более эффективно и надёжно. Ядро Linux хоть и является универсальным, однако бывают ситуации, когда его необходимо «подтюнинговать» по объективным причинам. Да и сама архитектура ядра это предполагает благодаря своей открытости. Таким образом, системные администраторы Linux – это те люди, которым важно знать и понимать некоторые общие аспекты конфигурирования ядра Linux.
Способы конфигурации ядра Linux
За время развития Linux постепенно сложились четыре основных способа для конфигурирования её ядра:
- модификация настраиваемых параметров ядра;
- сборка ядра из исходных кодов с внесением нужных изменений и/или дополнений в тексты исходных кодов ядра;
- динамическое подключение новых компонентов (функциональных модулей, драйверов) к существующей сборке ядра;
- передача специальных инструкций ядру во время начальной загрузки и/или используя загрузчик (например GRUB).
В зависимости от конкретной ситуации следует использовать тот или иной способ. Но сразу необходимо отметить, что на самом деле самым простым является первый — настройка параметров ядра. Самым же сложным является компиляция ядра из исходных кодов.
Настраиваемые параметры ядра
Системное ядро Linux разрабатывалось таким образом, чтобы всегда была возможность его максимально гибко (впрочем, как и всё в системах UNIX и Linux) настроить, адаптируя его к требуемым условиям эксплуатации и аппаратному окружению. Причём так, чтобы это было возможно динамически на готовой сборке ядра. Другими словами, системные администраторы могут в любой момент времени вносить корректирующие параметры, влияющие на работу как самого ядра, так и его отдельных компонентов.
Для реализации этой задачи между ядром и программами пользовательского уровня существует специальный интерфейс, основанный на информационных каналах. Через эти каналы и направляются инструкции, задающие значения для параметров ядра.
Но как и всё в системах UNIX и Linux, настройка параметров ядра по информационным каналам завязана на файловой системе. Чтобы просматривать конфигурацию ядра и управлять ею, в файловой системе в каталоге /proc/sys существуют специальные файлы. Это обычные файлы, но они играют роль посредников в предоставления интерфейса для динамического взаимодействия с ядром. Однако документация, касающаяся этого аспекта, в частности об описании конкретных параметров и их значений довольно скудна. Одним из источников, из которого можно почерпнуть некоторые сведения по этой теме, является подкаталог Documentation/sysent в каталоге с исходными кодами ядра.
Для наглядности стоит рассмотреть небольшой пример, показывающий, как через параметр ядра настроить максимальное число одновременно открытых файлов в системе:
Как можно видеть, к такому приёму можно довольно быстро привыкнуть и это не будет казаться чем-то очень сложным. Такой метод хоть и удобен, однако изменения не сохраняются после перезапуска системы.
Также можно использовать специализированную утилиту sysctl. Она позволяет получить значения переменных прямо из командной строки, либо список пар вида переменная=значение из файла. На этапе начальной загрузки утилита считывает начальные значения некоторых параметров, которые заданы в файле /etc/sysctl.conf. Более подробную информацию об утилите sysctl можно найти на страницах man-руководства.
В следующей таблице приводятся некоторые настраиваемые параметры ядра:
Каталог | Файл/параметр | Назначение |
С | autoeject | Автоматическое открывание лотка с компакт-диском при размонтировании устройства CD-ROM |
F | file-max | максимальное число открытых файлов. Для систем, которым приходится работать с большим количеством файлов, можно увеличивать это значение до 16384 |
F | inode-max | Максимальное число открытых индексных дескрипторов в одном процессе. Полезно для приложений, которые открывают десятки тысяч дескрипторов файлов |
К | ctrl-alt-del | Перезагрузка системы при нажатии комбинации клавиш . |
К | printk ratelimit | Минимальный интервал между сообщениями ядра, в секундах |
К | printk_ratelimi_burst | Количество сообщений, которые должны быть получены, перед тем как значение минимального интервала между сообщениями printk станет активным |
К | shmmax | Максимальный размер совместно используемой памяти |
N | conf/default/rp_filter | Включает механизм проверки маршрута к исходному файлу |
N | icmp_echo_ ignore_all | Игнорирование ICMP-запросов, если значение равно 1 |
N | icmp_echo_ broadcasts | Игнорирование широковещательных ICMP-запросов, если значение равно 1. |
N | ip_forward | Перенаправление IP-пакетов, если значение равно 1. Например, когда машина на Linux используется как маршрутизатор, то это значение нужно устанавливать равным 1 |
N | ip_local_port_ range | Диапазон локальных портов, выделяемый при конфигурировании соединений. Для повышения производительности серверов, инициирующих много исходящих соединений, этот параметр нужно расширить до 1024-65000 |
N | tcp_fin_timeout | Интервал для ожидания (в секундах) заключительного RN-пакета. В целях повышения производительности серверов, которые пропускают большие объемы трафика, нужно устанавливать более низкие значения (порядка 20) |
N | tcp_syncookies | Защита от атак волнового распространения SYN-пакетов. Нужно включать при наличии вероятности DOS-атак |
Условные обозначения: F — /proc/sys/fs, N — /proc/sys/net/ipv4, К — /proc/sys/kernel, С — /proc/sys/dev/cdrom.
В результате выполнения этой команды будет отключено перенаправление IP-пакетов. Есть одна особенность для синтаксиса этой команды: символы точки в «net.ipv4.ip_forward» заменяют символы косой черты в пути к файлу ip_forward.
Когда нужно собирать новую версию ядра?
В настоящее время ядро Linux развивается очень быстро и бурно. Зачастую производители дистрибутивов не успевают внедрять в свои системы новые версии ядер. Как правило все новомодные «фишки» больше понадобятся любителям экзотики, энтузиастам, обладателям новинок устройств и оборудования и просто любопытствующим — т. е. преимущественно тем, в чьём распоряжении имеется обычный пользовательский компьютер.
Для серверных машин, однако, мода вряд ли имеет какое-то значение, а новые технологии внедряются только после того как на практике доказали свою надёжность и эффективность на тестовых стендах или даже платформах. Каждый опытный системный администратор знает, что гораздо надёжнее один раз настроить то, что может и должно хорошо и безотказно работать, чем пытаться бесконечно модернизировать систему. Ведь для этого необходимы многие часы работы (ведь приходится собирать ядро из исходных кодов, что довольно сложно) и обслуживания, что довольно дорогостоящее занятие, поскольку, вдобавок ко всему прочему требует глубокого резервирования — сервера не должны останавливаться без организации «горячего» (а уж тем более без «холодного») резерва.
Поэтому всегда стоит взвешивать все факторы и оценить, стоит ли вообще обновляться ради несущественных заплат, не влияющих на работу системы или внедрённых новых драйверов для устройств, коих в данный момент в системе нет и нескоро предвидится.
Если же принято решение обновить версию ядра путём его самостоятельной сборки, то нужно выяснить, является ли данная версия стабильной. Раньше система нумерования версий ядра Linux была организована таким образом, что чётные номера версий означали стабильный выпуск, нечётные — ещё «сырой». В настоящее время этот принцип соблюдается далеко не всегда и выяснять этот момент следует из информации на официальном сайте kernel.org.
Конфигурирование параметров ядра
Конфигурация для будущей сборки ядра Linux хранится в файле .config. Мало кто занимается ручным созданием и редактированием этого файла, поскольку, во-первых: это сложный синтаксис, который далеко не самый «человекопонятный», и во-вторых: существуют способы для автоматической генерации конфигурации сборки ядра с удобным графическим (или псевдографическим) интерфейсом. Список основных команд для конфигурирования сборки ядра:
- make xconfig – рекомендуется, если используется графическая среда KDE. Весьма удобный инструмент;
- make gconfig – лучший вариант для использования в графической среде GNOME;
- make menuconfig – данную утилиту следует использовать в псевдографическом режиме. Она не так удобна, как две предыдущие, однако со своими функциями справляется достойно;
- make config – самый неудобный «консольный» вариант, выводящий запросы на задание значений каждого параметра ядра. Не позволяет изменить уже заданные параметры.
Практически все варианты (за исключением последнего) позволяют получать краткую справку по каждому параметру, производить поиск нужного параметра (или конфигурационного раздела), добавлять в конфигурацию дополнительные компоненты, драйверы, а также показывают, каким образом конкретный компонент может быть сконфигурирован — как компонент, встроенный в ядро или как загружаемый модуль, а также поддерживает ли он вообще вариант компиляции в качестве загружаемого модуля.
Очень полезной может оказаться команда make oldconfig, предназначенная для переноса существующей конфигурации с другой версии (сборки) ядра в новый билд. Эта команда читает конфигурацию из перенесенного из другой сборки файла .config со старой сборкой, определяет, какие новые параметры доступны для актуальной сборки и предлагает их включить или оставить как есть.
Для выполнения конфигурации сборки ядра Linux нужно перейти в каталог с исходными кодами и запустить одну из команд генерации конфигурации.
В результате работы вышеуказанных команд будет сгенерирован файл .conf, фрагмент содержимого из которого может быть следующим:
Как можно видеть, в данном коде нет ничего привлекательного для ручного редактирования, о чём даже упоминает запись комментария в начале файла .config. Символ «y» в конце какой-либо из строк указывает, что соответствующий компонент будет скомпилирован в составе ядра, «m» — как подключаемый модуль. Расшифровки или описания о каждом компоненте или параметре в файле .config не содержится — по этим вопросам следует изучать соответствующую документацию.
Компиляция ядра
Самое сложное в компиляции ядра Linux – это создание конфигурации сборки, поскольку нужно знать, какие компоненты подключать. Хотя использование команд make xconfig, make gconfig, make menuconfig и обеспечивает задание стандартной рабочей конфигурации, с которой система будет работать на большинстве аппаратных платформ и конфигураций. Вопрос лишь в том, чтобы грамотно задать конфигурацию ядра без ненужных и занимающих лишние ресурсы компонентов при его работе.
Итак, для успешного конфигурирования и компиляции ядра нужно выполнить следующие действия:
- перейти в каталог с исходными кодами ядра. Обычно «исходники» для ядра Linux помещаются в каталог /usr/src, либо можно скачать с сайта kernel.org в любое удобное место;
- выполнить команду make xconfig, make gconfig или make menuconfig;
- выполнить команду make dep (можно не выполнять для ядер версии 2.6.x и более поздних);
- выполнить команду make clean (для очистки от всего того, что может помешать успешной сборке);
- выполнить команду make;
- выполнить команду make modules_install;
- скопировать файл /arch/имя_архитектуры/boot/bzImage в /boot/vmlinuz. Здесь каталог /arch находится в каталоге с исходными кодами ядра Linux, имя_архитектуры — каталог, имеющий имя соответствующей архитектуры (указанной на этапе конфигурирования). Имя собранного бинарного образа ядра bzImage может быть другим;
- скопировать файл /arch/имя_архитектуры/boot/System.map в /boot/System.map;
- внести изменения в конфигурационные файлы системных загрузчиков /etc/lilo.conf (для LILO) или /boot/grub/grub.conf — для GRUB, а также добавить в них соответствующие конфигурационные и параметры загрузки для нового ядра.
Далее остаётся протестировать загрузку и работу нового ядра. В случае проблем обычно подбираются нужные параметры для системных загрузчиков.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник