Меню Рубрики

Linux mint сборка ядра

Краткий мануал по сборке ядра Linux с исходного кода

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

НО! Есть одна проблема… мы никогда раньше этого не делали! Всё за нас делал менеджер пакетов нашего дистрибутива и от нас требовалось в худшем случае команда с консоли, в лучшем нажатие пары кнопок. Это пособие предназначено для тех, кто не боится лезть в недра ядра системы и не боится убить её в случае неудачной сборки. Чтож, пристегнём ремни и вперёд!

Перед нами лежит архив linux-.tar.bz2 либо linux-.tar.gz. Что с ними делать? правильно! нужно их распаковать, запускаем консоль от имени root и начинаем наши добрые деяния (при написании мануала я предполагаю что необходимые для компиляции пакеты, такие как gcc, phyton, module-init-tools и т.д. уже установлены, если нет, то необходимо их установить до начала процесса конфигурирования и сборки)
Распаковываем архив в каталок /usr/src/

Затем удаляем из каталога /usr/src симлинк на исходник старого ядра (если конечно таковой имеется)

и создаём симлинк на новые сорсы

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

и вызываем меню конфигурации:

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

Итак, вот перед нами открылось псевдографическое меню, разбитое на пункты, подпункты и т.д. Каждый пункт имеет своё название, отражающее суть содержащегося внутри, поэтому назначение каждого пункта я считаю расписывать не нужно. Поочерёдно идём по всему меню сверху вниз и выбираем нужные нам компоненты. Для этого необходимо знать аппаратную часть своего ПК, какой процессор установлен, какая архитектура нам нужна, какие наборы системной логики используются в нашем ПК, вобщем, чем больше, тем лучше, от объёма знаний будет зависеть степень оптимизации нашего ядра для конкретной машины.

Если же получилось так, что вы не знаете нужен ли вам какой-то определённый элемент, стоит посмотреть Info о нём (кнопка Info есть в меню, навигация между кнопками осуществляется клавишами курсора (left, right)). Если же данная информация не помогла определится с выбором элемента, можно включить этот элемент как модуль ядра. Выбор Элемента осуществляется клавищей space (пробел) и возможно 3 варианта выбора:

  • [*], — элемент встаивается прямиком в образ ядра;
  • — элемент создаётся как внешний модуль и подгружается системой по мере надобности;
  • [ ], — элемент не будет включён в ядро;

Как включать элемент в ядро — непосредственно ваше дело, хочу отметить лишь то, что при включении элемента в образ ядра ( * ), увеливичивается размер образа, а образ при старте системы полностью загружается в ОЗУ и остаётся там вплоть до выключения ПК. Включение элемента как модуль уменьшает образ ядра, но увеличивает время реакции системы на событие, связанное с этим модулем. Сейчас я отмечу те пункты, которые обязательно должны быть включены в образ ядра ( * ), чтобы система успешно стартовала.

  1. Элементы поддержки IDE, SATA, RAID контроллеров.
  2. Элементы поддержки набора системной логики (I2C support, только для того набора, который установлен в вашем ПК)
  3. Поддержка шин PCI, PCI-E, AGP (в зависимости от того что нужно конечно)
  4. Поддержка систем, обслуживающих процессор (напр. powernow, Machine Check Exception и т.д.)
  5. Поддержка файловых систем и локалей, используемых на данном ПК
  6. Поддержка USB-хабов (OCHI, ECHI, UCHI, естественно только тех что поддерживаются мат. платой. Установка лишнего элемента конечно не помешает системе запустится, но он попросту будет жрать далеко не резиновую ОЗУ)
  7. Систему поддержки загрузки внешних модулей (Loadable Module Support)

В принципе всё необходимое я уже указал, но как рекомендация: следует включить поддержку сетевых плат, USB накопителей (USB Mass Storage Support), технологий внешних накопителей (USB-Flash, NAND и т.д., но не самих чипов… поддержку конкретных чипов лучше включить модулями ( М )), поддержку Framebuffer устройств (для запуска консоли в FB режиме используя vga или vesa драйвер (выбранный драйвер должен быть также включён в образ ядра ( * )). Также рекомендую включить в ядро системы криптования и защиты (Cryptographic API и Security Options). Далее выбираем нужные нам модули. После того как конфигурирование на ваш взгляд закончено, несколько раз жмём ESC, пока нам не будет выдано сообщение типа

в нём отвечаем yes. Конфигурация нашего ядра будет сохранена с файле .config прямо в этом каталоге. Затем даём команду на компиляцию ядра и установку модулей:

Если в процессе компиляции вылезла какая-то ошибка и процесс остановился (на warning-и можно не обращать внимания, они не страшны и системе не вредят), то смотрим на каком элементе процесс остановился, снова вызываем менюконфиг и переделываем конфиг.

Когда всё таки ядро скомпилировалось и модули успешно установились, мы должны скопировать образ ядра, конфиг и файл «системной карты» в каталог /boot. Если он вынесен отдельным разделом, его нужно примонтировать:

Далее есть несколько способов, можно использовать make install для копирования всего что нам надо в /boot, либо выполнить это руками:

Примечание. Файл Initrd. Этот файл по сути служит образом, из которого будут подключаться модули ядра во время его запуска. НО! Если вы включили в ядро ( * ) всё, что необходимо для успешного запуска, то этот файл можно не создавать, в таком случае система будет подгружать модули из /lib/modules. Поэтому создание его не обязательно. Если же он необходим, то используем для этого специальные утилиты (напр. genkernel или mkinitrd) и получившийся файл тоже копируем в /boot.

После этого редактируем конфигурационный файл загрузчика, указываем ему новый образ ядра, новый initrd файл (если нужно) а также дописываем в строке образа ядра нужные опции. Как конкретно это делается смотрите в man-e к вашему загрузчику.

Вот собственно и всё. Новое ядро собрано, оно гораздо компактнее ядра от сообщества, и более «заточено» под ваш конкретный ПК. Перезагружаемся и в случае успешного запуска системы радуемся жизни. Для полного счастья набираем в консоли

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

На этой доброй ноте я заканчиваю свою статью и желаю удачи в таком нелёгком деле, как конфигурирование и сборка сердца вашего «пингвина».

Источник

Собираем ядро Linux

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

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

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

Получение исходников ядра

Самое первое что нужно сделать — это скачать исходники ядра. Исходники лучшие брать с сайта вашего дистрибутива, если они там есть или официального сайта ядра: kernel.org. Мы рассмотрим загрузку исходников с kernel.org.

Перед тем как скачивать исходники нам нужно определиться с версией ядра которую будем собирать. Есть две основных версии релизов — стабильные (stable) и кандидаты в релизы (rc), есть, конечно, еще стабильные с длительным периодом поддержки (longterm) но важно сейчас разобраться с первыми двумя. Стабильные это, как правило, не самые новые, но зато уже хорошо протестированные ядра с минимальным количеством багов. Тестовые — наоборот, самые новые, но могут содержать различные ошибки.

Итак когда определились с версией заходим на kernel.org и скачиваем нужные исходники в формате tar.xz:

В этой статье будет использована самая новая на данный момент нестабильная версия 4.4.rc7.

Получить исходники ядра Linux можно также с помощью утилиты git. Сначала создадим папку для исходников:

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

git clone https://github.com/torvalds/linux

Распаковка исходников ядра

Теперь у нас есть сохраненные исходники. Переходим в папку с исходниками:

Или если загружали ядро linux с помощью браузера, то сначала создадим эту папку и скопируем в нее архив:

Распаковываем архив с помощью утилиты tar:

И переходим в папку с распакованным ядром, у меня это:

Автоматическая настройка сборки ядра Linux

Перед тем как начнется сборка ядра linux, нам придется его настроить. Как я и говорил, сначала рассмотрим автоматический вариант настройки сборки ядра. В вашей системе уже есть собранное, настроенное производителем дистрибутива, и полностью рабочее ядро. Если вы не хотите разбираться с тонкостями конфигурации ядра, можно просто извлечь уже готовые настройки старого ядра и сгенерировать на их основе настройки для нового. Нам придется лишь указать значения для новых параметров. Учитывая, что в последних версиях не было и не намечается серьезных изменений можно отвечать на все эти параметры как предлагает скрипт настройки.

Параметры используемого ядра хранятся в архиве по адресу /proc/config.gz. Распакуем конфиг и поместим его в нашу папку утилитой zcat:

zcat /proc/config.gz > .config

А дальше запускаем скрипт адаптации настроек:

В процессе его работы нужно будет ответить на несколько вопросов. Это новые параметры, которые изменились или были добавлены в новое ядро и поддержка нового оборудования, в большинстве случаев можно выбирать вариант по умолчанию. Обычно есть три варианта y — включить, n — не включать, m — включить в качестве модуля. Рекомендованный вариант написан с большой буквы, для его выбора просто нажмите Enter.

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

Ручная настройка ядра Linux

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

Начнем. Для запуска меню настроек ядра linux наберите:

Откроется вот утилита с интерфейсом ncurses:

Как видите, некоторые обязательные опции уже включены, чтобы облегчить вам процесс настройки. Начнем с самых основных настроек. Чтобы включить параметр нажмите y, чтобы включить модулем — m, для перемещения используйте клавиши стрелок и Enter, возвратиться на уровень вверх можно кнопкой Exit Откройте пункт General Setup.

Здесь устанавливаем такие параметры:

Local Version — локальная версия ядра, будет увеличиваться при каждой сборке на единицу, чтобы новые ядра при установке не заменяли собой старые, устанавливаем значение 1.

Automatically append version information to the version string — добавлять версию в название файла ядра.

Kernel Compression Mode — режим сжатия образа ядра, самый эффективный lzma.

Default Hostname — имя компьютера, отображаемое в приглашении ввода

POSIX Message Queues — поддержка очередей POSTIX

Support for paging of anonymous memory — включаем поддержку swap

Control Group support — поддержка механизма распределения ресурсов между группами процессов

Kernel .config support и Enable access to .config through /proc/config.gz— включаем возможность извлечь конфигурацию ядра через /proc/config.gz

Здесь все, возвращаемся на уровень вверх и включаем Enable loadable module support, эта функция разрешает загрузку внешних модулей, дальше открываем его меню и включаем:

Module unloading — поддержка отключения модулей

Forced module unloading — принудительное отключение модулей

Опять возвращаемся назад и открываем Processor type and features:

Processor family (Opteron/Athlon64/Hammer/K8) — выбираем свой тип процессора.

Опять возвращаемся и переходим в раздел File systems, тут установите все нужные галочки.

Обязательно включите The Extended 3 (ext3) filesystem и The Extended 4 (ext4) filesystem — для поддержки стандартных ext3 и ext4 файловых систем

Возвращаемся и идем в Kernel hacking.

Здесь включаем Magic SysRq key — поддержка магических функций SysRq, вещь не первой необходимости, но временами полезная.

Остался еще один пункт, самый сложный, потому что вам его придется пройти самому. Device Drivers — нужно пройтись по разделам и повключать драйвера для своего оборудования. Под оборудованием я подразумеваю нестандартные жесткие диски, мышки, USB устройства, веб-камеры, Bluetooth, WIFI адаптеры, принтеры и т д.

Посмотреть какое оборудование подключено к вашей системе можно командой:

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

Чтобы сохранить настройки переместите указатель с помощью стрелок вправо-влево, з позиции Select в позицию Save и нажмите Enter, потом еще раз подтвердите сохранение:

Чтобы выйти нажмите пару раз кнопку Exit.

Сборка ядра Linux

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

make && make modules

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

Установка нового ядра

Когда ядро и модули будут собраны новое ядро можно устанавливать. Можно вручную скопировать файл ядра в папку загрузчика:

cp arch/x86_64/boot/bzImage /boot/vmlinuz

А можно просто выполнить установочный скрипт, сразу установив заодно и модули:

sudo make install && sudo make modules_install

После установки не забудьте обновить конфигурацию загрузчика Grub:

grub-mkconfig -o /boot/grub/grub.cfg

И перезагружаем компьютер чтобы увидеть новое ядро в работе:

Выводы

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Picasso viewer для mac os
  • Phpstorm настройка mac os
  • Phpstorm для mac os
  • Phpstorm горячие клавиши mac os
  • Phpstorm mac os rutracker