- 8. Сборка ядра со своей конфигурацией¶
- Введение¶
- cl-kernel¶
- Сборка ядра¶
- Обновление ядра¶
- Настройка calculate-sources¶
- calculate-sources¶
- Используемые USE флаги¶
- Патчи на ядро¶
- Пользовательские патчи¶
- Конфигурация ядра¶
- Пользовательские параметры ядра¶
- Порядок маскировки ядер¶
- Имена ядер¶
- Удаление старых версий ядра¶
- Linuxoid
- OpenSource forever
- Сборка ядра в Calculate Linux
- 2 комментария
- 9. Сборка системы¶
- Введение¶
- Необходимые требования¶
- Использование¶
- Подготовка системы к сборке¶
- Смена профиля системы¶
- Обновление системы¶
- Создание загрузочного образа¶
- Прерывание сборки¶
- Восстановление сборки¶
- Создание мультизагрузочной Live USB Flash¶
8. Сборка ядра со своей конфигурацией¶
Введение¶
Calculate Linux работает на ядре Linux с длительным сроком поддержки (longterm). Большая часть драйверов вынесена в модули, что позволяет ядру оставаться компактным в размере без потери функционала. Для серверов и десктопов используются различные настройки и патчи. В отличие от других ядер из портежей, пакет sys-kernel/calculate-sources , используемый по умолчанию в дистрибутивах Calculate Linux, компилируется и устанавливается в систему, как и большинство других пакетов, высвобождая место путём удаления за собой большей части исходного кода.
Зачем вам может понадобиться изменять настройки ядра? Оптимизируя ядро, вы можете добиться прироста производительности, поддержки своего железа, высвобождения памяти, снижения энергопотребления, а так же ускорения загрузки системы. Помимо прочего, изучение ядра даёт неплохие знания в понимании устройства работы системы.
Экспериментировать с ядром можно и нужно. Эта статья поможет вам научиться изменять настройки ядра, устанавливать и настраивать различные модификации ядер, использовать свои патчи.
cl-kernel¶
Для сборки ядра служит скрипт cl-kernel, входящий в состав пакета sys-apps/calculate-toolkit . Программа написана на Bash и прозрачно интегрирована с системой шаблонов утилит Calculate.
Особенности
- Поддержка сборки различных ядер: sys-kernel/calculate-sources , sys-kernel/gentoo-sources , sys-kernel/vanilla-sources и др.
- Поддержка создания ядра, как с использованием initramfs, так и без него.
- Создание шаблона настроек ядра со всеми внесёнными изменениями.
- Импорт готовых настроек ядра в шаблон.
- Прозрачная миграция настроек между версиями ядер.
- Интеграция с утилитами Calculate для использования шаблонов настроек во время установки ядра calculate-sources .
- Создание резервных копий настроек.
- Локализация на русский и французский языки.
Прежде чем приступить к дальнейшим действиям, убедитесь, что у вас достаточно свободного места на диске. Исходный код ядра распаковывается в директорию /usr/src . Посмотреть свободное место можно, выполнив:
Обязательно позаботьтесь о наличии резервной копии ядра, с которого всегда можно загрузить систему. Для этого эксперименты удобно проводить с альтернативными пакетами ядер, либо с ядром calculate-sources не установленной версии.
Сборка ядра¶
Выберите любое из доступных в портежах ядро. Весь список с описаниями можно посмотреть, выполнив:
Для примера остановим свой выбор на «ванильном» ядре — оригинальной версии, поддерживаемой Линусом Торвальдсом.
Ядро в портежах отмечено маской, поэтому понадобится сперва её снять:
USE-флаг «symlink» следует устанавливать, если вы используете проприетарные пакеты, такие как nvidia-drivers , ati-drivers , virtualbox-bin или broadcom-sta . В этом случае после установки ядра следует собрать их модули, выполнив:
Проверьте, что ваше ядро стало доступно:
Обратите внимание на список. В отличие от calculate-sources (и других ядер), ванильное ядро не содержит слова «vanilla». Красная звёздочка слева версии ядра означает, что установленное ядро не содержит полной версии исходного кода. Звёздочка справа отмечает используемое по умолчанию ядро. Оно определяется по символической ссылке /usr/src/linux .
Для первого запуска вы можете сконвертировать настройки из текущей версии ядра, для этого выполните:
Здесь важно понять особенность работы cl-kernel и её отличие от более ранней версии этой программы.
- Скрипт cl-kernel работает с конфигурационным файлом ядра, полученным из шаблона.
- По завершении работы программа проанализирует изменения, выполненные пользователем, и создаст новый пользовательский шаблон.
- Для ядер, отличных от calculate-sources , нет шаблонов настроек, поэтому готовый шаблон будет содержать отличия от настроек ядра по умолчанию.
- С опцией » —convert » программа возьмёт за основу настройки текущего ядра (из /boot или /proc ), если в директории с исходным кодом ядра нет файла » .config «.
Во время выполнения скрипта будет вызвана настройка ядра (вызов make menuconfig ), сборка и установка. Если не отключена опция CONFIG_BLK_DEV_INITRD , будет создан initramfs.
После завершения не забудьте обновить необходимые модули, выполнив:
Теперь можно перезагрузиться, чтобы проверить работу нового ядра! Во время загрузки обратите внимание, что загружается новое ядро. Если вы ничего не изменили в окне настроек, проблем с загрузкой возникнуть не должно.
Обновление ядра¶
Посмотрите на первую строку шаблона, который cl-kernel создал из исходного файла настроек ядра:
Первая строка — это заголовок шаблона. В ней описан формат шаблона, имя настраиваемого файла, выполняется проверка на архитектуру системы, имя и версию ядра.
Из шаблона видно, что он будет работать для всех ядер версии 3.19 и выше.
Для установки 3.19.1 ядра, после установки пакета достаточно будет выполнить:
Параметр ‘ —kver ‘ можно опустить, если ядро выбрано по умолчанию, когда символическая ссылка /usr/src/linux указывает на него. Так будет, если при установке пакета с исходным кодом ядра, вы указали USE-флаг » symlink «. Например, предварительно выполнив:
При переходе к более крупной версии ядра, например 3.20 4.0.0, часто возникает необходимость посмотреть перечень изменений между настройками ядра ( make oldconfig ). Для этого выполните:
Настройка calculate-sources¶
На примере vanilla-sources мы научились устанавливать и собирать различные пакеты ядра. Но как быть, если нужно поставить обновление ядра «на поток» с вашими изменениями настроек и патчами? Нет ничего проще!
1. Сбросьте у ядра USE-флаг » minimal «:
2. Установите исходники ядра без компиляции:
3. Измените настройки:
В последнем пункте нет ссылки на версию ядра, т.к. установка пакета переписала символическую ссылку /usr/src/linux . Проверить это можно, выполнив:
Если вы не уверены, лучше указать ядро явно:
Обратите внимание, что напротив версии ядра стоит уже не красная, а зелёная звёздочка.
Пока ядро собирается, посмотрите на полученный шаблон настройки ядра: он будет содержать только внесённые вами изменения — отличия от оригинальной версии настроек ядра.
Пример шаблона после отключения поддержки ReiserFS:
Обратите внимание, что повторное выполнение cl-kernel учитывает внесённые вами изменения. Чтобы сбросить их, удалите созданный вами шаблон.
Источник
calculate-sources¶
Используемые USE флаги¶
Для сборки ядра и удаления исходного кода ebuild использует различные версии calculate-kernel е-классов.
Патчи на ядро¶
До марта 2013 патчи хранились в архивах calculate-sources-3.X.tar.bz2, что приводило к тому, что при обновлении одного из патчей (например при обновлении подверсии ядра) приходилось создавать новые архивы с дополнительными номерами (версии, ревизии и т.д.) и усложнять ebuild-ы.
В связи с изменением способа наложения патчей во время сборки пакета, появилась возможность перенести патчи в шаблоны утилит Calculate, получив дополнительные преимущества:
- разделять патчи на десктопные и серверные;
- использовать разные патчи для разных версий ядра
Caluclate-sources использует следующие основные патчи:
- aufs3 — файловая система, производящая каскадно-объединённое монтирование других файловых систем, используемая для запуска liveCD;
- fbcondecor — декорации в консоли
и дополнительные, используемые в десктопных системах:
- TuxOnIce — используется для ускорения «засыпания» и «пробуждения» компьютера;
- BFQ — I/O планировщик, созданный как замена CFQ (и основан на его коде), основная мысль – более честное разделение I/O между процессами.
Пользовательские патчи¶
Выполнение патчей происходит при событии компиляция пакета с действием ac_install_patch относительно пути S ( «$ » ), фильтрация по пакетам и версиям осуществляется через функцию merge(), формат шаблонов обычно diff (представляющие обычные патчи). Таким образом в простейшем варианте необходим файл патча со следующим заголовком: До изменения системы наложения патчей конфигурация ядра хранилась в оверлее profiles/kernel в виде готового конфигурационного файла как для сервера, так и для десктопа. В связи с изменением метода наложения патчей на пакет изменился и способ создания конфигурационного файла, что дало ряд преимуществ: Так как создание конфигурацинного файла происходит при сборке пакета, то для изменения параметров ядра необходимо создать файл с измененными параметрами, связанный с действием ac_install_patch . Например, чтобы включить в ядро файловые системы EXT2, EXT3 и EXT4 можно создать следующий файл: Если ядро находится в hard маске, то это означает что оно еще не готово для полноценного использования: не все необходимые патчи, не готова конфигурация, в ходе эксплуатации выявлены критичные ошибки, ошибки во время сборки. После решения выше перечисленных задач с ядра снимается hard маска, и оно остаётся в маске по keywords, пока не будет использовано в одном из стейджей. При установке ядра из пакета calculate-sources с включенным USE-флагом vmlinuz происходит компиляция и установка ядра в директорию /boot . К именам файлов vmlinuz , config , initramfs и System.map дописывается окончание, состоящее из версии ядра, архитектуры и сокращенного имени дистрибутива (пример: «-3.9.7-i686-CLD»). В случае наличия таких файлов в директории /boot , к старым версиям дописывается окончание » .old «. На ядро и вспомогательные файлы создаются символические ссылки. Для того чтобы не модифицировать загрузчик, имена символических ссылок не подлежат изменению. Символические ссылки были необходимы для Legacy Grub. Grub 2 сам автоматически определяет используемые файлы для формирования своего конфигурационного файла. В ближайших версиях символические ссылки и kernel_uid будут удалены. При необходимости, сгенерировать настройки Grub можно командой: Старые версии ядра удаляются при удалении соответствующих версий пакета calculate-sources . Поэтому, если вы не хотите оставлять их в системе, убедившись, что новое ядро работает нормально, удалите ненужные пакеты: Источник Во время первой сборки ядра в Calculate Linux столкнулся с рядом вопросов, частично ответ на который дала документация проекта ( http://www.calculate-linux.org/main/ru/cl-kernel ) (на сегодня в ней уже появились все нужные ответы 🙂 ). И так далее. Для большинства будут доступны еще и версии. Кроме этого установленные портежы будут показанны в выводе eix -C как «Installed versions«. Ключ USE=»symlink» создаст символическую ссылку на /usr/src/linux. Но если например нужна другая версия ядра, смотрим: И выбираем из списка то, что нужно, прямо указав нужный номер: Нужно учесть, что все ebuild помеченные знаком « », не прошли проверку и относятся к нестабильным. То есть в нашем случае если ввести: Будет установлена последняя версия gentoo-sources. Все параметры cl-kernel можно узнать запустив скрипт с ключем —help. Для изменения параметров ядра выполняем: Вот в принципе и все. zen-sources, xen-sources, vserver-sources – ядра с поддержкой соответсвующих VM Источник Все операции по сборке образов дистрибутива Calculate Linux выполняются при помощи утилит Calculate. По завершению сборки создаётся загрузочный образ Live USB, который можно использовать как для работы, так и для установки системы на жёсткий диск компьютера. Начиная с версии утилит 3.4, модуль сборки системы был полностью переписан. Выполняемые файлы утилит были переименованы и теперь начинаются с префикса ‘cl-builder-‘, после которого следует выполняемое действие (например, ‘cl-builder-update’). Для выполнения сборки вам понадобится выход в интернет, свободное место на диске, а также любой доступный «ISO-образ системы Calculate Linux : версии 15 или выше, например, Calculate Linux Scratch или Calculate Scratch Server. Вместо ISO-образа можно указать CD-привод или USB Flash с установленным Calculate Linux. Для больших возможностей в формировании собственных сборок неплохо иметь свой Git-репозиторий с Calculate-совместимым профилем системы. Для размещения репозитория подойдёт такой хостинг как GitHub , Bitbucket или любой другой, например, собственный, поднятый при помощи Gitolite . Для разворачивания и обновления образа без использования слоёв вам может потребоваться около 5 Гб свободного места на жёстком диске и 15 Гб при разворачивании образа без использовании слоёв (см. Подготовка системы к сборке). Для создания образа дистрибутива потребуется около 2 Гб. В случае создания бинарных пакетов дополнительно может потребоваться до 5 Гб свободного места. Сборка дистрибутива может производиться как на отдельном разделе жёсткого диска, так и в выделенном каталоге файловой системы. Готовый образ сохраняется в директории /var/calculate/linux , бинарные пакеты сохраняются в директории /var/calculate/remote/builder . Позаботьтесь о наличии свободного места по этим путям. Пакет sys-apps/calculate-utils 3.4, входящий во все дистрибутивы Calculate Linux 15, включает в себя необходимые компоненты для сборки системы. Основные возможности: Операции по сборке системы выполняются в разделе «Сборка» графической консоли утилит Calculate: Для работы из командной строки вы можете использовать следующие утилиты: Вызов утилит из консоли можно сочетать с работой графических утилит, т.к. они остаются полностью совместимыми. Для подготовки системы к сборке кликните по иконке «Подготовить новую сборку» в разделе «Сборка» графической консоли утилит Calculate: В открывшейся странице выберите исходный образ системы. В случае загрузки с Live USB по умолчанию вам будет предложен загруженный образ. По необходимости используйте дополнительные настройки. Для работы в терминале выполните: Основные опции: В качестве исходного образа может выступать ISO образ, CD-привод или Live USB с дистрибутивом Calculate Linux. Дополнительные опции: Исходя из того, укажете ли вы раздел или директорию сборки, будете ли вы использовать многослойную файловую систему, у вас может быть три варианта подготовки образа: Сборка в выделенном разделе с использованием многослойной файловой системы не поддерживается. Для экономии времени и места, по умолчанию, при подготовке образа используется многослойная файловая система. Во всех типах сборки доступ к корню собираемой системы можно получить в директории /run/calculate/mount/каталог_сборки, где каталог сборки — это имя сборки с подменой символов «:» и «/» на «_» (пример: «distros_CLSK_amd64»). Во время подготовки системы к сборке выполняются следующие действия: Особенности в подготовке системы к сборке при использовании выделенного раздела: Особенности в подготовке системы к сборке при использовании слоёв: Смена профиля собираемой системы вам может понадобиться, главным образом, для выбора своего профиля, в котором вы можете описать особенности системы, такие как: состав пакетов, используемые флаги сборки, опции компилятора, настройки переменных утилит Calculate, шаблоны настройки системы, ebuild-ы пакетов и т.д. Для переключения профиля, воспользуйтесь иконкой «Изменить профиль» в разделе «Сборка» графической консоли утилит, после чего откроется следующая страница: По умолчанию отображаются профили репозитория distros. При использовании своего профиля, хранящегося, например, на Github, вы можете указать «github:lautre76», где «github» — обозначение сервиса хостинга, «lautre76» — имя вашей учётной записи. При указании сокращённого имени поиск профилей будет выполняться в репозитории «overlay.git». В дополнительных настройках вы можете указать «Обновить кэш» для того, чтобы при наличии кэша репозитория данные были обновлены. Это может понадобиться, если вы захотите добавить новый профиль, отсутствовавший при предыдущем вызове команды. После нажатия кнопки «Далее» откроется окно выбора профиля: В списке доступных профилей отображаются все профили выбранного репозитория. Состав пакетов (файл /var/lib/portage/world) формируется шаблонами утилит Calculate. Вы можете выбрать один из режимов обновления файла: переформировать, объединить или обновить. По умолчанию используется полная замена списка пакетов дистрибутива. При работе в терминале для смены профиля вы можете использовать следующую команду: Основные параметры: Дополнительные параметры: Переключение профиля в собираемой системе по сути аналогично переключению профиля в текущей системе при помощи команды cl-update-profile . Для обновления пакетов собираемой системы кликните по иконке «Обновить сборку» в разделе «Сборка» графической консоли утилит Calculate. После чего вам откроется следующая страница: Для обновления собираемой системы из терминала используйте следующую команду: Параметры: Функционал cl-builder-update повторяет функционал cl-update за исключением того, что обновление выполняется внутри подготавливаемой сборки. Список выполняемых действий: Действия, обновляющие пакеты в системе, выполняются, если не указана опция -p : Отдельной команды для проверки зависимостей нет, их можно проверить без обновления репозиториев при помощи cl-update -o off -r none -p . Во время сборки будут загружены все необходимые пакеты с исходными текстами программ в директорию /var/calculate/remote/distfiles . Помните, что вы всегда можете получить доступ к системе при помощи chroot , выполнив: Обратите внимание, что для доступа к собираемой 32-битной системе из-под 64-битной команду chroot следует выполнять, используя утилиту linux32. Пример: После завершения действий в chroot из оболочки необходимо выйти, в противном случае выполнение действий по обновлению системы, смене профиля или создания образа завершится сообщением об ошибке. Пример: Для создания нового образа дистрибутива воспользуйтесь иконкой «Создать образ» в разделе «Сборка» графической консоли утилит Calculate. Страница создания образа будет выглядеть, как на рисунке ниже: Большинство настроек будет по умолчанию скрыто от глаз. При желании вы можете указать, включить ли дистрибутивы проприетарных видеодрайверов в образ Live USB для того, чтобы иметь возможность оценить их работу, загрузившись с USB Flash. Вы можете выбрать метод сжатия образа для того, чтобы найти оптимальный вариант между размером файла и скоростью сжатия. Опция ISO hybrid позволит создавать образ диска, который можно писать на устройство при помощи прямого копирования (например, dd ). Выполнение Prelink позволит слинковать библиотеки перед запаковкой для получения некоторого ускорения запуска программ. После выполнения в директории /var/calculate/linux/ будет создан образ дистрибутива (с расширением .iso), файл с контрольными суммами (с расширением DIGESTS) и файл с составом программ (с расширением list). В терминале запаковать образ можно, выполнив: Основные параметры: Дополнительные параметры: Полученный ISO образ в дальнейшем можно использовать в том числе и для новых сборок. Чтобы прервать выполнение сборки, воспользуйтесь иконкой «Прервать сборку» в разделе «Сборка» графической консоли утилит. После этого откроется следующая страница: После выполнения операции все временные файлы будут удалены. В терминале прервать сборку можно, выполнив: Параметры: Если во время работы с дистрибутивом компьютер был перезагружен, вы можете выполнить восстановление прерванной сборки. Для этого кликните по иконке «Восстановить сборку» в разделе «Сборка» графической консоли утилит Calculate. После чего откроется следующее окно: То же действие можно выполнить в терминале, набрав: В качестве параметра вы можете указать идентификатор сборки. Вы можете полноценно работать с Live USB, создавая модификации текущего, либо любого другого ISO образа Calculate Linux. Для возможности сохранять на USB Flash данные система должна быть установлена на флешку при помощи утилит Calculate. Во время работы с Live USB при создании образа загрузочное меню переформировывается таким образом, чтобы можно было выбрать загрузку с любого из созданных ISO-образов. Вы также можете просто скопировать в директорию /linux USB Flash другие ISO-образы Calculate Linux, а затем обновить меню загрузчика. Для этого кликните по иконке «Обновить меню загрузки» в разделе «Сборка» графической консоли утилит Calculate. После этого откроется следующая страница: Вы можете сформировать меню флешки, загрузившись с неё, либо вставив в USB разъём и из текущей системы при помощи утилит выполнить обновление. При работе в терминале для обновления меню выполните: Вместо устройства можно указать путь, в который подключена USB Flash. ИсточникКонфигурация ядра¶
Пользовательские параметры ядра¶
Порядок маскировки ядер¶
Имена ядер¶
Удаление старых версий ядра¶
Linuxoid
OpenSource forever
Сборка ядра в Calculate Linux
В репозитарии Gentoo который использует Calculate Linux несколько ядер, найти их можно командой:
Список ядер будет достаточно большой, значение большей части понятно из описания:
Смотрим что установлено сейчас:
Чтобы установить последнюю версию gentoo-sources вводим:
Кроме этого есть виртуальный пакет virtual/linux-sources, который установит последнюю версию текущего ядра.
Для управления сборкой ядра разработчики Calculate Linux предлагают утилиту cl-kernel. В поставке CLD 10 ее нет, нужно обновить утилиты calculate.
Чтобы просто собрать ядро выполняем без каких либо дополнительных опций:2 комментария
9. Сборка системы¶
Введение¶
Необходимые требования¶
Использование¶
Подготовка системы к сборке¶
Смена профиля системы¶
Обновление системы¶
Действия, обновляющие репозитории и настройки:
Создание загрузочного образа¶
Прерывание сборки¶
Восстановление сборки¶
Создание мультизагрузочной Live USB Flash¶