Ядерная физика для домохозяек v.3. Оптимизация ядра ubuntu


Компиляция ядра – Ubuntu way « Linux and Open Source

Прежде чем приступить, попробуем вначале ответить на вопрос: А зачем собственно нужна пересборка ядра? Большинство современных пользователей Linux редко задумываются о том, какое у них установлено ядро, какие функции в нем заложены, чего там не хватает, и тем более о том, что его можно (и нужно) обновлять или пересобирать под конкретные нужды. Доступность и бесплатность дистрибутивов позволяют любому выбрать себе тот, на котором будет работать все доступное пользователю оборудование, не задумываясь о причинах почему же оно не работает и не вникая в проблему. А часто нужна всего лишь установка единственного пакета содержащего требуемый модуль ядра. Производители дистрибутивов собирают свои ядра так сказать по максимуму, стараясь охватить наиболее широкий спектр оборудования и задач. Основные компоненты включены в ядро, устанавливаемое вместе с системой, а то что считается необязательным выносится в отдельные пакеты.

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

$ sudo apt-cache search kernel

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

Компиляция ядра со сборкой пакета в Debian/Ubuntu

Установленное обычным образом ядро (то есть стандартная компиляция) не будет видно менеджеру пакетов, в принципе это возможно и не нужно. Но удалить ядро установленное при помощи менеджера пакетов проще, обновление ядра из репозитария также пройдет без сучка и задоринки. Поэтому лучше вначале собрать пакет, который установить принятым в дистрибутиве способом. В большинстве дистрибутивов такая возможность естественно предусмотрена. В Debian/Ubuntu это просто. Вначале обновляем базу данных приложений, чтобы загрузить самые последние доступные версии пакетов.

$ sudo apt-get update

Теперь установим все необходимые для сборки пакеты.

$ sudo apt-get install kernel-package libncurses5-dev fakeroot wget

Пакет kernel-package содержит исходные тексты ядра, которые будут распакованы в /usr/src. Вместо него можно использовать и любое другое ядро с патчами.

Если нет make, gcc и прочего, то и:

$ sudo apt-get install build-essential

Для упрощения берем настройки текущего ядра, который будем использовать как базовый, и копируем текущую конфигурацию в /usr/src/linux.

$ sudo cp /boot/config-`uname -r` /usr/src/linux/.config

В некоторых дистрибутивах просмотреть содержимое файла .config с которым собрано ядро можно обратившись к файлу /proc/config.gz, его можно взять за основу при дальнейших настройках. Рабочий .config лучше сохранять, это просит последующие пересборки ядра.

Далее при необходимости конфигурируем его введя одну из команд: make config, make menuconfig, make xconfig, make gconfig или make oldconfig.

Для компилляции и сборки deb-пакета вводим следующую команду.

$ sudo make-kpkg clean fakeroot make-kpkg –initrd –append-to-version=-custom-kernel kernel_image kernel_headers

Строка –append-to-version позволяет добавить свою нумерацию или название к версии ядра, которое будет выводиться командой uname. Здесь можно вписать любую строку, но она обязательно должна начинаться с тире.

В Debian, Ubuntu и некоторых других дистрибутивах принят формат пакета с расширением deb, который содержит, как правило, скомпилированную программу и позволяет легко ее установить, удалить или обновить.

Через некоторое время в каталоге /usr/src появятся два deb пакета. Пакет с именем linux-image-2.6.23.deb будет содержать скомпилированное ядро, а linux-headers-2.6.23.deb – заголовочные файлы, которые могут понадобиться при самостоятельной компилляции некоторых других приложений или модулей. Цифра в вашем случае будет скорее всего другая. Устанавливаются они при помощи dpkg. В нашем примере команда будет выглядеть так.

$ sudo dpkg -i linux-image-2.6.23.deb linux-headers-2.6.23.deb

Еще одно удобство такого способа. Такое ядро теперь можно быстро и без проблем установить на другие компьютеры при условии, что при конфигурации было учтено все возможное оборудование. Если посмотреть сейчас в файл /boot/grub/menu.lst, то можно обнаружить в списке новое ядро. Еще один плюс, не нужно возиться с настройкой загрузчика. Linux forever!

Посетители так же просмотрели следующие материалы:
Похожие материалы:

 

www.linux.profiua.com

Сборка ядра со своей конфигурацией

Введение¶

Calculate Linux работает на ядре Linux с длительным сроком поддержки (longterm). Большая часть драйверов вынесена в модули, что позволяет ядру оставаться компактным в размере без потери функционала. Для серверов и десктопов используются различные настройки и патчи. В отличие от других ядер из портежей, пакет sys-kernel/calculate-sources, используемый по умолчанию в дистрибутивах Calculate Linux, компилируется и устанавливается в систему, как и большинство других пакетов, высвобождая место путём удаления за собой большей части исходного кода.

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

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

cl-kernel¶

Для сборки ядра служит скрипт cl-kernel, входящий в состав пакета sys-apps/calculate-toolkit. Программа написана на Bash и прозрачно интегрирована с системой шаблонов утилит Calculate.

Особенности

  1. Поддержка сборки различных ядер: sys-kernel/calculate-sources, sys-kernel/gentoo-sources, sys-kernel/vanilla-sources и др.
  2. Поддержка создания ядра, как с использованием initramfs, так и без него.
  3. Создание шаблона настроек ядра со всеми внесёнными изменениями.
  4. Импорт готовых настроек ядра в шаблон.
  5. Прозрачная миграция настроек между версиями ядер.
  6. Интеграция с утилитами Calculate для использования шаблонов настроек во время установки ядра calculate-sources.
  7. Создание резервных копий настроек.
  8. Локализация на русский и французский языки.

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

df -h

Обязательно позаботьтесь о наличии резервной копии ядра, с которого всегда можно загрузить систему. Для этого эксперименты удобно проводить с альтернативными пакетами ядер, либо с ядром calculate-sources не установленной версии.

Сборка ядра¶

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

eix -c sys-kernel/*sources

Для примера остановим свой выбор на "ванильном" ядре - оригинальной версии, поддерживаемой Линусом Торвальдсом.

Ядро в портежах отмечено маской, поэтому понадобится сперва её снять:

echo sys-kernel/vanilla-sources ~amd64 ~x86 >> /etc/portage/package.keywords/custom USE="symlink" emerge sys-kernel/vanilla-sources

USE-флаг "symlink" следует устанавливать, если вы используете проприетарные пакеты, такие как nvidia-drivers, ati-drivers, virtualbox-bin или broadcom-sta. В этом случае после установки ядра следует собрать их модули, выполнив:

emerge @module-rebuild

Проверьте, что ваше ядро стало доступно:

cl-kernel --kver list * 3.19.0 * * 3.18.7-calculate

Обратите внимание на список. В отличие от calculate-sources (и других ядер), ванильное ядро не содержит слова "vanilla". Красная звёздочка слева версии ядра означает, что установленное ядро не содержит полной версии исходного кода. Звёздочка справа отмечает используемое по умолчанию ядро. Оно определяется по символической ссылке /usr/src/linux.

Для первого запуска вы можете сконвертировать настройки из текущей версии ядра, для этого выполните:

cl-kernel --kver 3.19.0 --convert Здесь важно понять особенность работы cl-kernel и её отличие от более ранней версии этой программы.
  1. Скрипт cl-kernel работает с конфигурационным файлом ядра, полученным из шаблона.
  2. По завершении работы программа проанализирует изменения, выполненные пользователем, и создаст новый пользовательский шаблон.
  3. Для ядер, отличных от calculate-sources, нет шаблонов настроек, поэтому готовый шаблон будет содержать отличия от настроек ядра по умолчанию.
  4. С опцией "--convert" программа возьмёт за основу настройки текущего ядра (из /boot или /proc), если в директории с исходным кодом ядра нет файла ".config".

Во время выполнения скрипта будет вызвана настройка ядра (вызов make menuconfig), сборка и установка. Если не отключена опция CONFIG_BLK_DEV_INITRD, будет создан initramfs.

После завершения не забудьте обновить необходимые модули, выполнив:

emerge @module-rebuild

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

Обновление ядра¶

Посмотрите на первую строку шаблона, который cl-kernel создал из исходного файла настроек ядра:

head -n 1 /var/calculate/templates/kernel/10-vanilla-x86_64-3.19 # Calculate format=kernel name=.config os_install_arch_machine==x86_64&&merge(sys-kernel/vanilla-sources)>=3.19

Первая строка - это заголовок шаблона. В ней описан формат шаблона, имя настраиваемого файла, выполняется проверка на архитектуру системы, имя и версию ядра.

Из шаблона видно, что он будет работать для всех ядер версии 3.19 и выше.

Для установки 3.19.1 ядра, после установки пакета достаточно будет выполнить:

cl-kernel --kver=3.19.1

Параметр '--kver' можно опустить, если ядро выбрано по умолчанию, когда символическая ссылка /usr/src/linux указывает на него. Так будет, если при установке пакета с исходным кодом ядра, вы указали USE-флаг "symlink". Например, предварительно выполнив:

echo sys-kernel/vanilla-sources symlink >> /etc/portage/package.use/custom

При переходе к более крупной версии ядра, например 3.20 4.0.0, часто возникает необходимость посмотреть перечень изменений между настройками ядра (make oldconfig). Для этого выполните:

cl-kernel --kver 4.0.0 --kver-old=3.19.1

Настройка calculate-sources¶

На примере vanilla-sources мы научились устанавливать и собирать различные пакеты ядра. Но как быть, если нужно поставить обновление ядра "на поток" с вашими изменениями настроек и патчами? Нет ничего проще!

1. Сбросьте у ядра USE-флаг "minimal":

echo sys-kernel/calculate-sources -minimal >> /etc/portage/package.use/custom

2. Установите исходники ядра без компиляции:

USE="-vmlinuz" emerge sys-kernel/calculate-sources

3. Измените настройки:

cl-kernel

В последнем пункте нет ссылки на версию ядра, т.к. установка пакета переписала символическую ссылку /usr/src/linux. Проверить это можно, выполнив:

cl-kernel --kver list * 3.19.0 * 3.18.7-calculate *

Если вы не уверены, лучше указать ядро явно:

cl-kernel --kver=3.18.7-calculate

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

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

Пример шаблона после отключения поддержки ReiserFS:

cat /var/calculate/templates/kernel/10-calculate-x86_64-3.18 # Calculate format=kernel name=.config os_install_arch_machine==x86_64&&merge(sys-kernel/calculate-sources)>=3.18 !CONFIG_REISERFS_FS=m

Обратите внимание, что повторное выполнение cl-kernel учитывает внесённые вами изменения. Чтобы сбросить их, удалите созданный вами шаблон.

Оптимизация ядра¶

Использование патчей¶

Для разработчиков¶

www.calculate-linux.ru

Компиляция ядра Linux ~ Пользователь IT » » »

Собирая ядро операционной системы Linux под конкретную аппаратную архитектуру, мы выигрываем в производительности, что особенно заметно на нетбуках, к тому-же тем самым уменьшаем размер ядра, что так-же необходимо для повышения стабильности и производительности. Компиляция иногда бывает необходима, чтобы включить в ядро дополнительные опции (патчи) которых нет в дефолтной конфигурации. Пересборка ядра важна ещё и из соображений безопасности. Дело в том, что в эксплойтах (программы использующие дыры в системе для несанкционированного доступа) жёстко прописаны адреса кода и переменных, а когда мы пересобираем ядро, мы меняем его размер и соответственно меняется адресная структура. После компиляции с большой долей вероятности на нашей системе эксплоит просто не будет работать. Финальная цель в сборке ядра - монолитное ядро. Скачайте полный архив исходного кода ядра Linux нужной вам версии с официального сайта https://www.kernel.org/ нажав справа на ссылку [Full Source] и переместите скачанный архив исходного кода ядра в вашу домашнюю папку.

Так-как все дальнейшие действия будут проходить в домашней папке, для удобства получения информации о названиях её содержимого (архивов, папок, пакетов и т.д которые вам будут часто требоваться) вводите команду в терминале:

ls -l

*( терминал можно открыть с помощью комбинации клавиш Ctrl+Alt+T )

Распакуйте в вашу домашнюю папку полученный архив (в дальнейшем вместо x.y указывайте версию полученного архива, либо deb пакета, либо ядра смотря, что требуется) командой: cd ~/tar -xjf linux-2.6.x.y.tar.bz2

Установите необходимые пакеты для сборки ядра Linux:

sudo apt-get install build-essential kernel-package libncurses-dev

Установите пакеты необходимы для запуска GUI конфигуратора ядра xconfig:

sudo apt-get install qt3-dev-tools libqt3-mt-dev

Конфигурирование ядра Linux перед сборкой.

Переходим в домашнюю папку с распакованными сорцами ядра: cd ~/linux-2.6.x.y

Получаем файл текущей (рабочей) конфигурации ядра, в директории с сорцами появится файл .config, мы будем на нём основываться: sudo make oldconfig

Запускаем GUI (графический) конфигуратор ядра xconfig: sudo make xconfig

Конфигурируем ядро согласно аппаратной архитектуре компьютера.

В конфигураторе в общих чертах (на английском) даётся описание к редактируемым параметрам.

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

Например:

Ноутбуки: MSI, Apple, Samsung, Sony, Toshiba, BenQ, Panasonic, Asus, Dell, Compaq, Toshiba, Acer, Fujitsu, Siemens

Процессоры: AMD, CELERON, INTEL, Intel Core 2

Видео карты: NVIDIA, GeForce, Zotac, Radeon

Заранее выясните следующие интересующие вас параметры (этот список не полный):

процессор(ы)

оперативная памятьчипсет материнской платывидеокартасетевая карта(ы)звуковая карта и прочее мультимедийное оборудованиежесткие диски и CD/DVD приводыустройства ввода/вывода (клавиатура, мышь, планшеты и т.д.)файловые системыпараметры сети (протоколы разных уровней)системы и алгоритмы шифрованияusb-устройства и т.д.

Узнать некоторую информацию об аппаратной архитектуре можно с помощью графических утилит и команд в терминале:

Команды для получения системной информации: arch : архитектура компьютера

uname -m : архитектура компьютера (2)

dmidecode -q : аппаратные системные компоненты - (SMBIOS / DMI)

hdparm -i /dev/hda : характеристики жесткого диска

cat /proc/cpuinfo : информация о процессоре

cat /proc/net/dev : показать сетевые интерфейсы и статистику по ним

lspci -tv : показать в виде дерева PCI устройства

lsusb -tv : показать в виде дерева USB устройстваlspci - выводит список PCI устройств: чипсет, контроллеры видео, сетевые конроллеры и т.д.lsusb - список USB устройств: клавиатуры, мышки, вэб-камеры и т.д.Обе эти команды можно использовать с ключом -v для получения более подробной информации об устройствах.dmesg - получение сведений об устройстве или группе устройств, например подробные сведения о процессоре можно получить так:dmesg | grep CPU

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

После оптимизации и сохранения конфигурационного файла ядра Linux, преступаем к компиляции ядра, (сборка ядра может занять от 20 минут до нескольких часов в зависимости от конфигурации ядра и технических характеристик компьютера, custom это особое название для вашего будущего ядра, его вы можете заменить своим) выполним команду:

fakeroot make-kpkg --append-to-version=-custom kernel_image kernel_headers

После успешной компиляции ядра Linux, в вашей домашней папке появятся два deb-пакета. Устанавливаем их командой: cd ~/sudo dpkg -i linux-headers-2.6.x.y-custom_2.6.x.y-custom-10.00.Custom_arc.debsudo dpkg -i linux-image-2.6.x.y-custom_2.6.x.y-custom-10.00.Custom_arc.deb

Для корректной работы, Ubuntu требует наличие образа начального RAM-диска. Чтобы его создать, выполните команду (где 2.6.x.y это версия собранного ядра): sudo update-initramfs -c -k 2.6.x.y-custom

Проинформируем загрузчик Grub о собранной версии вашего ядра Linux для того, чтобы ваше ядро было выбрано при загрузке: sudo update-grub

Все этапы компиляции ядра Linux завершены, перезагрузите компьютер.

Чтобы посмотреть с каким ядром запустилась операционная система, выполните команду:

uname -r

Если смена на новое ядро не произошла автоматически, а ОС загрузилась с прежним ядром (такое может быть), то измените порядок загрузки ядра сами используя к примеру графическую утилиту StartUp Manager

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

sudo apt-get install startupmanager

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

Для удаления всех пакетов вводим: sudo apt-get autoremove build-essential kernel-package libncurses-dev qt3-dev-tools libqt3-mt-dev

slivsol.blogspot.com

Оптимизация Ubuntu (2)

 

 

Indicator CPUfreq - смена частоты процессора.

Автор: admin.

  Indicator cpufreq - это программа-апплет, сидящая в трее и позволяющая вручную задавать частоту процессора в режимы, предустановленные производителем (определяется автоматически). Кроме того, имеется несколько профилей управления питанием, в зависимости от конкретной ситуации: консервативный, динамический, энергосбережение, производительность. Итак, что это всё нам даёт? Ну во-первых: можно существенно...

Подробнее...

TLP - режим экономии энергии на ноутбуке.

Автор: admin.

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

Подробнее...

Laptop Mode Tools - экономия заряда батареи.

Автор: admin.

  Общеизвестно такое мнение, что ноутбук, с установленной Windows, работает в несколько раз дольше, чем с той же Ubuntu или другим дистрибутивом (имеется в виду работа от батареи). До какого-то определённого времени, Linux в своём развитие, не был ориентирован на ноутбуки\нетбуки и т.д., а следовательно и необходимость в экономии энергии, не существовала сама по себе. Но сейчас ситуация совершенно другая и данная проблема, весьма и весьма актуальна. Laptop Mode Tools - графическая утилита, позволяющая всячески настраивать и...

Подробнее...

Apt-fast ускоряем обновление и загрузку.

Автор: admin.

  Apt-fast - это специальный скрипт для «bash», который используя менеджеры загрузок «axel» и «aria2», может закачивать новые пакеты в многопоточном режиме. Если в Windows вы пользовались утилитой «Download Master», то «apt-fast» работает по такому же принципу, разбивая файл на несколько меньших частей и закачивая его в несколько потоков плюс, при  этом используются сразу несколько зеркал, за счет чего и увеличивается общая скорость загрузки.

Подробнее...

Profile Cleaner - ускорение работы браузеров.

Автор: admin.

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

Подробнее...

Ускорение браузеров - «Profile Sync Daemon».

Автор: admin.

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

Подробнее...

Автоматическая очистка системы в Ubuntu 12.10.

Автор: admin.

  Вообще-то, я вас немножко обманул, это будет не автоматическая очистка, а всего-лишь полу-автоматическая, что тоже, не так уж плохо. Основной идеей было, как бы собрать по-возможности воедино все то, что предназначено для очистки и оптимизации системы в Ubuntu, т.е. не прыгать от одного к другому, а запустить весь процесс одним единым "паровозом". Некоторые процессы, во всей этой цепочке, могут дублироваться, но оптимизация уже оптимизированного, вреда не несет.

Подробнее...

Softy Cleaner - очистка системного мусора.

Автор: admin.

  Softy Cleaner - это весьма необычный чистильщик системного мусора, который по своим характеристикам, можно сопоставить с такими известными уборщиками, как: Bleachbit или Ubuntu Tweak. Необычность его заключается в очень оригинальном интерфейсе, выполненным в виде стиральной машины, как бы символизируя тем самым - "отмыв грязи". Утилита работает по...

Подробнее...

 

1 2

 

www.linux-info.ru

Сборка ядра linux

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

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

Оглавление:

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

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

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

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

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

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

- монолитным

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

- модульным

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

Считаю небезынтересным: в чём разница между initrd и initramfs http://teleology.mobi/ru/news_ru/15032006-01_ru.

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

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

# tar xvf linux-3.6.11.tar.bz2 # cp patch-3.6.11.bz2 linux-3.6.11/ # bzip2 -d patch-3.6.11.bz2 # patch -p1 -i patch-3.6.11.bz2

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

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

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

make mrproper - очистит каталог от мусора предыдущей сборки

make menuconfig - запустит окно настроек ядра

[ * ] - опция включена жёстко

[M] - опция включена модульно

[ ] - опция отключена

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

General setup

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

[*] Prompt for development and/or incomplete code/drivers

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

() Local version - append to kernel release

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

Kernel compression mode (Gzip) ---> (X) Gzip ( ) Bzip2 ( ) LZMA ( ) XZ ( ) LZO

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

[*] Support for paging of anonymous memory (swap)

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

[*] System V IPC [*] POSIX Message Queues [*] BSD Process Accounting [ ] BSD Process Accounting version 3 file format

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

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

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

[*] Auditing support [*] Enable system-call auditing support [ ] Make audit loginuid immutable

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

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

<*> Kernel .config support

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

[*] Enable access to .config through /proc/config.gz

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

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

[*] Control Group support ---> [ ] Example debug cgroup subsystem [*] Freezer cgroup subsystem [ ] Device controller for cgroups [*] Cpuset support [*] Include legacy /proc/<pid>/cpuset file [*] Simple CPU accounting cgroup subsystem [*] Resource counters [ ] Memory Resource Controller for Control Groups [ ] HugeTLB Resource Controller for Control Groups [ ] Enable perf_event per-cpu per-container group [*] Group CPU scheduler ---> [*] Group scheduling for SCHED_OTHER [ ] Group scheduling for SCHED_RR/FIFO [ ] Block IO controller

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

-*- Namespaces support --->

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

-*- Kernel->user space relay support (formerly relayfs)

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

[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support

Поддержка initrd/initramfs.

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

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

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

Enable loadable module support

[ ] Forced module loading [*] Module unloading [*] Forced module unloading [ ] Module versioning support [ ] Source checksum for all modules

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

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

Enable the block layer

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

[*] Block layer SG support v4 Partition Types ---> [*] Advanced partition selection [ ] Macintosh partition map support [*] PC BIOS (MSDOS partition tables) support [ ] BSD disklabel (FreeBSD partition tables) support [ ] SGI partition support [ ] EFI GUID Partition support

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

Processor type and features

[*] Symmetric multi-processing support

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

Preemption Model (Voluntary Kernel Preemption (Desktop)) ---> Voluntary Kernel Preemption (Desktop)

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

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

[ ] Support for extended (non-PC) x86 platforms

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

[ ] Paravirtualized guest support --->

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

Processor family (Core 2/newer Xeon) ---> ( ) Opteron/Athlon64/Hammer/K8 ( ) Intel P4 / older Netburst based Xeon (X) Core 2/newer Xeon ( ) Intel Atom ( ) Generic-x86-64

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

[*] SMT (Hyperthreading) scheduler support

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

[*] Multi-core scheduler support

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

[ ] EFI runtime service support [ ] EFI stub support

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

Power management and ACPI options

[*] Suspend to RAM and standby

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

[*] Hibernation (aka 'suspend to disk') () Default resume partition

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

[*] ACPI(Advanced Configuration and Power Interface)Support ---> <M> EC read/write access through /sys/kernel/debug/ec [ ] Deprecated /proc/acpi/event support <M> AC Adapter <M> Battery {M} Button {M} Video <M> Fan [*] Dock <M> Processor <M> Thermal Zone

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

CPU Frequency scaling ---> [*] CPU Frequency scaling < > CPU frequency translation statistics Default CPUFreq governor (ondemand) ---> -*- 'performance' governor < > 'powersave' governor < > 'userspace' governor -*- 'ondemand' cpufreq policy governor < > 'conservative' cpufreq governor

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

Bus options (PCI etc.)

[*] PCI support [*] Support mmconfig PCI config space access [*] PCI Express support < > PCI Express Hotplug driver [*] Root Port Advanced Error Reporting support

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

<*> PCCard (PCMCIA/CardBus) support --->

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

<*> Support for PCI Hotplug --->

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

Executable file formats / Emulations

[*] Kernel support for ELF binaries [*] Write ELF core dumps with partial segments <*> Kernel support for MISC binaries [*] IA32 Emulation

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

Networking support

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

< > IrDA (infrared) subsystem support --->

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

< > Bluetooth subsystem support ---> Bluetooth device drivers --->

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

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

<M> RF switch subsystem support --->

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

-*- Wireless ---> <M> cfg80211 - wireless configuration API [*] cfg80211 wireless extensions compatibility

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

Device Drivers

Generic Driver Options ---> (/sbin/hotplug) path to uevent helper [*] Maintain a devtmpfs filesystem to mount at /dev [*] Automount devtmpfs at /dev, after the kernel mounted the ro [*] Select only drivers that don't need compile-time external fir [*] Prevent firmware from being built -*- Userspace firmware loading support [*] Include in-kernel firmware blobs in kernel binary () External firmware blobs to build into the kernel binary [ ] Driver Core verbose debug messages [*] Managed device resources verbose debug messages

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 — требуется для указания пути к блобам.

Например:

radeon/BTC_rls.bin radeon/CAICOS_mc.bin radeon/CAICOS_me.bin radeon/CAICOS_pfp.bin

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

CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware"

Идём далее:

< > Parallel port support ---> -*- Plug and Play support --->

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

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

[*] Block devices ---> <*> Loopback device support <*> RAM block device support

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

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

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

SCSI device support ---> -*- SCSI device support [*] legacy /proc/scsi/ support *** SCSI support type (disk, tape, CD-ROM) *** <*> SCSI disk support <*> SCSI CDROM support [*] Enable vendor-specific extensions (for SCSI CDROM) <*> SCSI generic support [*] Verbose SCSI error reporting (kernel size +=12K)

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

<*> Serial ATA and Parallel ATA drivers ---> [*] Verbose ATA error reporting [*] ATA ACPI Support [*] SATA Port Multiplier support *** Controllers with non-SFF native interface *** <*> AHCI SATA support

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

[ ] Multiple devices driver support (RAID and LVM) --->

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

[*] Network device support ---> [*] Ethernet driver support ---> <*> PPP (point-to-point protocol) support USB Network Adapters ---> [*] Wireless LAN --->

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

Input device support --->

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

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

<*> Multimedia support ---> [*] Cameras/video grabbers support [*] Media USB Adapters ---> <*> USB Video Class (UVC) [*] UVC input events device support

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

Graphics support ---> <*> /dev/agpgart (AGP Support) ---> <*> AMD Opteron/Athlon64 on-CPU GART support <*> Intel 440LX/BX/GX, I8xx and E7x05 chipset support

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

[*] Laptop Hybrid Graphics - GPU switching support

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

<M> Direct Rendering Manager

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

{*} Support for frame buffer devices ---> [*] Enable Video Mode Handling Helpers [*] Enable Tile Blitting Support [*] EFI-based Framebuffer Support

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

Console display driver support ---> {*} Framebuffer Console support

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

[*] Bootup logo ---> [*] Standard 224-color Linux logo

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

<*> Sound card support ---> <*> Advanced Linux Sound Architecture --->

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

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

[*] X86 Platform Specific Device Drivers --->

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

<*> WMI Support for MXM Laptop Graphics

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

<M> Kernel-based Virtual Machine (KVM) support <M> KVM for Intel processors support < > KVM for AMD processors support

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

Library routines

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

Послесловие

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

# make bzImage modules modules_install install

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

/boot/vmlinuz-3.6.11 /boot/System.map-3.6.11 /boot/initrd-3.6.11.img

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

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

# /boot/grub/menu.lst # default 0 timeout 30 splashimage=(hd0,1)/boot/grub/splash.xpm.gz title Linux 3.6.11 root (hd0,1) kernel /boot/vmlinuz-3.6.11 root=/dev/ram0 real_root=/dev/sda3 initrd /boot/initrd-3.6.11

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

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

# /boot/grub/menu.lst # title Linux 3.6.11 root (hd0,1) kernel /boot/vmlinuz-3.6.11 root=/dev/sda3

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

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

# genkernel --install initramfs

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

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

www.unix-lab.org


Prostoy-Site | Все права защищены © 2018 | Карта сайта