Сборка ядра linux под свое железо

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

Курс по 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 с нуля и установить необходимые пакеты.

Читайте также:  Не загружается windows том 1

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

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

Полезно?

Почему?

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

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

Источник

Ядерная физика для домохозяек v.3

Достаточно давно была написана отличная статья, послужившая верой и правдой многим линуксоидам, кто самостоятельно собирал своё ядро. Называлась она « Ядерная физика для домохозяек, версия 2 » . Ранее, когда деревья были выше, небо голубее, а настольные компьютеры не столь производительны, сборка ядра под своё железо могла внести весомый вклад в увеличение производительности железного друга. Теперь это уже не столь важно и в большинстве случаев даже не нужно, ибо прирост будет незначительным. Да и среднестатистический линуксоид как-то обмельчал, « скуксился » что ли.

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

Вступление или подготовка к сборке ядра

Для сборки можно использовать ядро с kernel.org. Если вам удобнее собрать ядро, поставляемое с вашим дистрибутивом, вы можете смело пропустить этот шаг.

Пройдите по указанной выше ссылке и скачайте ядро Latest Stable Kernel . Должен скачаться файл примерно с таким наименованием: linux-3.6.11.tar.bz2 .

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

Рекомендация по собственно сборке ядра одна на все дистрибутивы, что естественно. А вот инструмент для сборки вполне возможно, что придётся доустановить. Для gentoo это пакет gentoo-sources (если предполагается сборка дистрибутивного ядра). Для дебиана понадобится установить целую пачку пакетов, для арча понадобится эта инструкция.

Перед сборкой неплохо сесть и подумать какое же ядро собрать. Ядро может быть:

— монолитным

такое ядро полностью грузится при старте системы и остаётся в оперативной памяти до выключения машины. Его компоненты нельзя изменить, невозможно подгружать и выгружать модули благодаря чему ядро становится нечувствительным к различным троянским программам, направленным на подмену оригинальных модулей своими — это просто невозможно. Но с другой стороны монолитность ядра привносит и некоторые минусы, такие как невозможность установить стороннюю прошивку или проприетарный драйвер для видеокарты (ведь его модуль нельзя будет подгрузить!). То есть для домашних машин лучше не использовать монолитные ядра, а вот для серверов — самое оно.

— модульным

это ядро напротив позволит включать многие компоненты не жёстко, а модульно (соответственно своему названию), что уменьшит размер ядра и сделает возможным. да, загрузку и выгрузку нужных модулей. В готовых дистрибутивах для создания такого ядра используется initramfs (раньше — initrd). Но при сборке под себя можно обойтись и без него, достаточно лишь жёстко встроить поддержку файловой системы и контроллёра HD корневого раздела для того, чтобы система смогла определить их и загрузиться.

в чём разница между initrd и initramfs прочитать.

Обычно предлагается включить в ядро жёстко те компоненты, которые нужны вам постоянно, а те, что предполагается использовать время от времени, включить модулями.

Итак, вы скачали ядро и заплатки. Переместите их в каталог /usr/src/ и сами перейдите в него. Теперь следует распаковать исходники ядра и архивы с заплатками, наложить заплатки:

При наложении заплаток есть лишь один нюанс: сначала накладывается заплатка для обновления версии ядра ( patch-$VERSION.bz2 как дано выше) и уже затем все остальные.

Обратите внимание на вывод команды patch . Если заплатка идеально подходит к ядру, то в выводе должны быть только строчки patching file . . Строка Hunk #1 succeeded at. означает что заплатка наложена успешно, но место наложения сдвинуто на несколько строк. Если же вы увидите слово Failed — заплатка не подходит. Лучше удалить каталог linux-3.6.11/ и начать все сначала уже без этой заплатки.

Далее могут выполнены следующие команды:

  • make mrproper — очистит каталог от мусора предыдущей сборки
  • make menuconfig — запустит окно настроек ядра
  • [ * ] — опция включена жёстко
  • [M] — опция включена модульно
  • [ ] — опция отключена

Вы можете воспользоваться поиском по параметрам ядра, для этого нажмите «/» (слеш) и введите искомое. Также не забывайте о справке: остановитесь на параметре, подробное описание которого вам хотелось бы видеть, и выбирайте «Help» внизу экрана.

General setup

Содержит общие настройки

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

Сюда можно внести наименование, которым дополнится название вашего ядра. Бывает полезно, когда вы собираете несколько ядер одной и той же версии. Обычно не нужно.

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

Поддержка ядром своп-файла. Включаем.

System V IPC — механизм связи между процессами. Набор библиотечных функций и вызовов ядра, позволяющий процессам обмениваться информацией. Некоторые программы требуют этого механизма.

Читайте также:  Браузеры для windows server 2012

POSIX Message Queues — очередь для сообщений формата POSIX с использованием приоритетов. Часть механизма связи между процессами. Нужно, если запускать программы написанные под этот формат, например с ОС Solaris.

BSD Process Accounting — поддержка дополнительных сведений о процессах (время запуска, владелец, командная строка запуска, использование памяти). Полезно для контроля процессов.

Auditing support — включение механизма проверки ядра. Например используется системой SELinux (система расширенной безопасности для Linux).

Enable system-call auditing support — включение системных вызовов для механизма проверки ядра.

Сохранять настройки ядра в нем самом. Это полезно, если у Вы удалите папку с исходниками ядра, а потом захотите немного изменить ядро.

Если эта опция включена, вы сможете получать параметры текущего ядра из /proc/config.gz

Рекомендуется включить. Пригодится.

Поддержка группирования процессов. Используется такими подсистемами как CPUSETS, CFS, контроль памяти или устройства изоляции.

Позволяет двум процессам в разных виртуальных средах иметь один и тот же pid . Эта возможность делает реальными такие сценарии, как апгрейд сервера без необходимости его перезагрузки.

Включает поддержку интерфейса некоторых файловых систем (таких как debugfs). Предназначена для эффективного механизма передачи больших объёмов данных из пространства ядра в пользовательское пространство.

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

Оптимизация кода ядра по размеру. Может быть полезно для создания загрузочных дискет. В обычных случаях не требуется.

Включение расширенной поддержки профилирования (например, OProfile). Обычно не нужно.

Enable loadable module support

Создание модульного ядра. Module unloading — возможность выгрузки модулей.

Forced module unloading — возможность принудительной выгрузки модуля, даже если оно еще нужно ядру

Enable the block layer

Поддержка блочных устройств. Если эта опция отключена, некоторые файловые системы станут недоступны (например, ext3), SCSI и USB устройства не смогут распознаться.

Следует выбрать из списка типы разделов, поддержка которых вам необходима. PC BIOS для машин с обычным BIOS (на разделах MBR), EFI GUID — EFI BIOS (на разделах GPT). В общем, ясно из названий.

Processor type and features

Поддержка симметричной мультипроцессорности. Включается в случае, если у вас многопроцессорный компьютер или многоядерный процессор.

Повысит отзывчивость десктопных приложений. Как отметил в комментариях UlvHare в плане запуска таких приложений как Firefox Low-Latency Desktop Preemptible Mode хуже, чем Voluntary.

Для старых систем SMP, которые не имеют надлежащей поддержки ACPI.

Поддержка платформ, отличных от PC.

Поддержка паравиртуализации (например, для Xen).

Следует выбрать тип своего процессора. Если не знаете или рассчитываете использовать созданную конфигурацию ядра на разных машинах, отмечайте Generic.

Включение технологии Hyperthreading.

Для процессоров Intel Core, AMD Athlon64/Phenom.

Для поддержки UEFI. В данном примере она отключена.

Power management and ACPI options

Поддержка Suspend to RAM — сохранение состояния операционной системы в оперативной памяти.

Поддержка Suspend to Disk — иначе говоря, режим гибернации. Потребуется включение swap-раздела. В Default resume partition можно прописать путь к swap. Или оставить пустым с последующим внесением параметра resume в строку загрузчика. Лучше прописать к загрузчику.

Поддержка интерфейса управления конфигурацией и питанием (ACPI).

Управление настройками частоты процессора: ‘performance’ governor обеспечивает наибольшую производительность, ‘powersave’ governor будет стараться снижать частоту процессора, чем увеличит работу от батареи, ‘ondemand’ — нечто среднее. Рекомендуется выбрать ‘ondemand’ в качестве «умолчательного» в Default CPUFreq governor .

Bus options (PCI etc.)

PCI support обеспечивает поддержку шины PCI.

Поддержка карт PCMCIA. Чаще всего встречаются на ноутбуках.

«Горячее» (на лету) подключение PCI-устройств. Позволяет добавлять и удалять PCI-устройства, даже когда машина включена и работает. В принципе, можно и отключить, поскольку чаще всего эта возможность не используется.

Executable file formats / Emulations

Поддержка формата исполняемых файлов ELF. Обязательна к включению.

Networking support

В подпунктах включается поддержка протокола TCP/IP, в частности возможность включения/отключения IPv6. Поскольку автор не является специалистом в данной области, детально раздел не рассматривается. Сетевые администраторы, безусловно, найдут для себя множество полезных опций. Для домашнего же использования рекомендуется оставить опции по-умолчанию.

Скорее всего включать не понадобится. Обеспечивает поддержку инфракрасного модуля.

Для тех, у кого встроен модуль беспроводной передачи данных bluetooth. Как правило, сейчас это ноутбуки. Хотя ранее bluetooth был достаточно популярен и соответствующие устройства покупались и использовались на настольных ПК.

Bluetooth device drivers позволит выбрать из списка поддержку определённого устройства.

Для ноутбуков, где, как правило, радиопередатчик wifi-чипа включается нажатием клавиши «Kill Switch». Если эта клавиша не нажата и передатчик не включен, wi-fi не заведётся. Кстати, если параллельно у вас установлена Windows, обязательно оставьте под ней включенной кнопку wi-fi. В противном случае в linux при попытке включить интерфейс wlan вам будут объяснять, что Kill Switch отключен и включать его будет бесполезно.

Поддержка стандарта 802.11 для беспроводных сетей.

Device Drivers

Maintain a devtmpfs filesystem to mount at /dev — Монтировать файловую систему tmpfs.

Select only drivers that don’t need compile-time external fir — выбирать лишь те драйверы, которые не требуют прошивки. В зависимости от вашего оборудования эту опцию, возможно, придётся отключить.

Include in-kernel firmware blobs in kernel binary — включить прошивку в ядро.

External firmware blobs to build into the kernel binary — требуется для указания пути к блобам.

Но в таком случае требуется включить в конфигурационный файл ядра строку с указанием директории, в которой находятся эти блобы:

Первое уже вряд ли нужно. Но если у вас есть устройства ( раньше это были все принтеры ), требующие подключения по параллельному порту — включите опцию.

Читайте также:  Доступ по сети андроид windows

Plug and Play включаем.

Блочные устройства. Loopback device support включить обязательно.

RAM block device support нужен при сборке ядра с initrd, в противном случае — отключить: «выбирайте Y, если хотите использовать часть оперативной памяти как блочное устройство. В этом устройстве вы сможете создавать файловую систему, и использовать ее как обыкновенное блочное устройство (такое как жесткий диск). Обычно его используют для загрузки и сохранения минимальной копии корневой файловой системы при загрузке с флоппи диска, CD-ROM при установке дистрибутива, или на бездисковых рабочих станциях.»

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

Поддержка устройств SCSI. В современных машинах без включения этих опций могут быть не найдены такие устройства как жёсткий диск и CD-привод.

Поддержка устройств SATA. AHCI (Advanced Host Controller Interface) — механизм, позволяющий устройствам SATA пользоваться расширенными функциями.

Опции, обеспечивающие использование логических томов и программных RAID-массивов.

В Ethernet driver support следует выбрать поддержку устройства вашей сетевой карты Ethernet. PPP может понадобиться тем, кто подключается к интернету с использованием соответствующего протокола. USB Adapters — при наличии у вас поднобного адаптера для выхода в сеть. Wireless LAN — для использования беспроводных сетей стандарта IEEE 802.11. Здесь нужно выбрать соответствующий вашему оборудованию драйвер.

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

Поддержка видео в Linux.

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

Включение поддержки AGP. В примере для видеокарт Intel и Radeon.

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

Включить DRM — Direct Rendering Manager. Современная вещь, рекомендуется.

Управление поддержкой фреймбуфера. EFI-based Framebuffer Support нужен для систем с UEFI.

Поддержка кадрового буфера в консоли. Включаем.

Включаем пингвинов при загрузке системы 😉

Включение поддержки звуковых устройств. Выбор своего железа из списка.

Аналогично, только для USB-устройств.

Имеет смысл посмотреть владельцам ноутбуков. Особенно тем, у кого не работает контроль яркости экрана или горячие клавиши. Для владельцев MXM видеокарт там же включить:

Firmware Drivers

Для включения в ядро сторонних прошивок. Если вы не уверены, что вам нужны какие-либо опции, рекомендуется оставить вариант по-умолчанию.

File systems

Осуществляет поддержку тех или иных файловых систем, поддержку квотирования, а также выбор нативных языков (вернее того, как будут отображаться символы). В целом, в комментариях не нуждается. Единственное замечание: если вы собираете ядро без initrd нужно включить используемые при загрузке файловые системы жёстко, а не модулями.

Kernel hacking

Если компьютер завис и не реагирует на команды переключения консоли. Вы можете нажать Alt-PrintScreen-s для записи кеша дисков или Alt-PrintScreen-i (Убить все процессы за исключением init). Механизм нажатия такой: — Нажать Alt — Нажать PrintScreen — Отпустить Alt — Нажать нужную кнопку — Отпустить все.

Когда эта опция включена, можно монтировать debugfs в /etc/fstab . Таким образом мы получим директорию /sys/kernel/debug , что очень небесполезно в частности для обладателей двух видеокарт.

Security options

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

Cryptographic API

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

Virtualization

Нужно включить, если планируется использовать виртуализацию (конкретно: VirtualBox или QEMU). В противном случае не отмечайте ничего.

Library routines

Используется для предоставления модулям функций CRC32 CRC32c. Можете включить

Послесловие

Итак, настройка ядра закончена. Теперь коснёмся вопроса о сборке. Процесс сборки и установки ядра можно выполнить одной командой:

Когда ядро будет собрано, у Вас должны появиться следующие файлы:

и каталог модулей

И последним шагом подправим строки загрузчика, чтобы можно было загрузиться с новым ядром (пример для grub-legacy):

Для тех, кому любопытно собрать ядро без initrd, милости прошу: лишнему в ядре не место. Хотя и следуя представленным выше указаниям также можно собрать такое ядро. Но статья, приведённая по ссылке, позволит лучше понять зачем это нужно и нужно ли оно вообще.

Единственное, что там не указано: как в этом случае будут выглядеть настройки загрузчика. В них больше не будет указания на initrd — последней строки — и ram0:

Если сборка не первая, вы увидите в /boot старое ядро, оно будет выглядеть как vmlinuz-$KERNEL-VERSION.old . В случае неудачной сборки, вы всегда можете загрузиться со старым ядром.

P.S: при указанном способе сборки в gentoo автоматически не появится initrd. Если он вам нужен, наиболее простой способ: после сборки ядра использовать для его создания genkernel :

P.S2: не забудьте добавить своего пользователя в соответствующие группы. Если нет звука, прежде всего проверьте, добавлен ли пользователь в группу audio , если не заводится камера — в группу video .

Да, надо бы ещё отметить, что при необходимости можно обратиться к документации ядра. Располагаются эти файлы в каталоге /usr/src/linux/Documentation . Вот, вроде бы, и всё.

Источник

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