Feature #437
Использование своего конфига для настройки ядра calculate-sources
| Статус: | New | Начата: | 04.06.2012 | |
|---|---|---|---|---|
| Приоритет: | Normal | Дата выполнения: | ||
| Назначена: | - | Готовность в %: | 0% |
|
| Категория: | - | Затраченное время: | - | |
| Версия: | - | |||
| Голоса: | 4 |
Описание
Для чего это все¶
Некоторым пользователям часто бывает необходимо включить/выключить некоторые опции в конфиге ядра.
Порой это бывает простое включение поддержки >4G на 32-битной системе(да, иногда это лучше использования amd64 профиля) или наоборот - включение режима <1G
А кому-то хочется иметь ядро ТОНКО НАСТРОЕННОЕ под его машину.
В настоящее время есть два пути использования своего конфига ядра:- с использованием
Я предлагаю третий вариант честно подсмотренный в ebuild-е пакета busybox.
Кому интересно в busybox используется savedconfig.eclass и в случае если определен одноименный ключ - USE=savedconfig, в качестве конфига используется один из /etc/portage/savedconfig/${CATEGORY}/{${PF},${P},${PN}}, и соответственно текущий конфиг сохраняется в /etc/portage/savedconfig/${CATEGORY}/${PF}
В случае с busybox-ом /etc/portage/savedconfig/sys-apps/busybox-1.19.3-r1
Как я писал выше - я предлагаю применить подобный метод для пакета calculate-sources.
Мои наработки по этому вопросу можно увидеть тут calculate_eclass.diff
Также придется добавить одну строку в calculate-sources-${PN}.ebuild - задать EAPI="4" calculate-sources-3.3.5.diff
Что готово¶
Благодаря этим изменениям, у пакета calculate-sources появляются 4-е новых USE-флага
Я решил, что самые основные отличия машин на которых работает 32-хбитная калька - это СКОЛЬКО ПАМЯТИ УСТАНОВЛЕНО НА МАШИНЕ (intel или amd по большому счету неважно, если уж и настраивать, то придется десяток опций в USE вынести - т.е. смысл теряется. А вот НЕ использовать >3.5G RAM на машине где это возможно - имхо глупо), а значит стоит упростить доступ к без необходимости настраивать сам конфиг (через USE-ы).
Три нижеследующих ключа могут быть выбраны лишь на 32-хбитной сборке, и выбран может быть лишь один ключ. Если ни один не выбран - никаких изменений к конфиг не вносится.nohighmem: оптимизация модели виртуальной памяти ядра под системы с <1G физической памяти. Минус данной опции в том, что если на машине >1G памяти, использоваться будет все-равно лишь один гиг.
Также я взял на себя смелость включить в этом режимеX86_PAE- возможность расширять виртуальную память при помощи swap до размеров >4G. К примеру при загрузке с PXE/флешки в режиме build, даже бинарное обновление(да что там обновление,даже eix-sync на системе запущенной с ключом docache) может упереться в размер tmpfs, который в свою очередь упирается в размер виртуальной памяти.highmem4g: Дефолтная опция для конфига ядра кальки - оптимальное значение при памяти 1G-4G.highmem64g: Опция на машинах, где памяти >4G. Само собой параметрX86_PAEвключается для удовлетворения зависимостей.savedconfig: Собственно сам ключ включающий "обработку" .config-файла. Без него установка происходит в обычном режиме. Конфиг копируется изcl_kernel_configи установка проходит в штатном режиме.
Если же ключ включен - конфиг ищется по порядку среди файлов/etc/portage/savedconfig/${CATEGORY}/{${PF},${P},${PN}}, и если не находится ни один - используетсяcl_kernel_config
Детали можно подсмотреть тут:less /usr/portage/eclass/savedconfig.eclass ## комменты в ebuild подсказывающие как использовать \ ## ... USE=savedconfig можно подсмотреть в less /var/db/pkg/sys-apps/busybox-*/busybox-*.ebuild
Также вне зависимости от выбранного конфига, при USE=savedconfig выполняется make oldconfig. Я заметил неприятную особенность в конфигах кальки для 3.* ядер - иногда новые параметры новой ревизии ядра (вроде новых драйверов на wifi-свистелки) бывают не отражены в конфиге, и как следствие - выключены. Думаю использовать дефолтное значение правильнее чем сразу отключать. Также такие "потерянные" параметры легко будет найти просмотрев логи этой операции.
Что осталось доделать¶
Собственно проверка показала, что:- установка с
USE=-savedconfigпроходит аналогично стандартной установке стандартного кальковского ядра со стандартнымcalculate-kernel-3.eclass.
патч заменяющий--mrproperна--use-own-configиcl_kernel_configна.configкомпенсируется в функцииcalculate-kernel-tuneconfig_src_configure(cм. строки 87-91 calculate_eclass.diff) - При установке с
USE=savedconfigпочти все проходит нормально - кроме функции
calculate-kernel-tuneconfig_src_install, она почему-то не вызывается. Уж и не знаю, что я упустил, но прошу помочь разобраться с этим.
Как видно из кода, в этой функции должно выполняться:- сохранение конфига в
/etc/portage/savedconfig/${CATEGORY}/${PF} - сохранение make_oldconfig.log
- сохранение diff-а конфигов оригинального кальковского и текущего.
- сохранение конфига в
История
Обновлено Михаил Гагауз больше 13 лет назад
PS¶
Если этот патч пройдет, наверно было бы неплохо добавить в cl-kernel ключ использующий конфиг из /etc/portage/savedconfig/sys-kernel
Обновлено Михаил Гагауз больше 13 лет назад
- Файл calculate_eclass.diff добавлен
- Файл calculate-kernel-3.eclass добавлен
- Файл calculate-kernel-tuneconfig.eclass добавлен
Разобрался где был невнимателен.
Теперь все работает, копия конфига ложится в /etc/portage/savedconfig/sys-kernel
еще одна копия конфига, diff полученного конфига и того что в кальке, и логи make oldconfig, ложатся в /usr/share/calculate-sources/3.3.5/config (чтоб если что легче было просить помощи у сообщества дебажить);-)
- diff-а (чтоб легче было увидеть что я иземенил)
- непосредственно сам измененный calculate-kernel-3.eclass
- добавленный calculate-kernel-tuneconfig.eclass
чтоб проще было внедрить.
PS
Еще раз напомню - для корректной работы необходимо внести единственное изменение в ebuild - EAPI="4" см. calculate-sources-3.3.5.diff
Обновлено Тимофей Захарчук около 13 лет назад
Ну и как - патч прошел в основную ветку?
Обновлено Сергей Федотов около 13 лет назад
Не понимаю, почему такая важная опция как PAE не поддерживается флагами из коробки :-\ Калькулейт ведь разрабатывался чтобы упростить его установку и сопровождение на большом количестве машин, а теперь выходит что ядра это не касается...
Обновлено Alexander Tratsevskiy около 13 лет назад
Сергей Федотов wrote:
Не понимаю, почему такая важная опция как PAE не поддерживается флагами из коробки :-\ Калькулейт ведь разрабатывался чтобы упростить его установку и сопровождение на большом количестве машин, а теперь выходит что ядра это не касается...
С PAE можно загрузиться не на любом железе. Например наш старенький ксеон не мог на нем грузиться. Тем не менее PAE включали в ядро. Затем, после жалоб пользователей, мы выключили эту опцию. Проще загрузить систему и добавить PAE, чем не иметь такой возможности вовсе.
Хотя возможно уже это не актуально, тот сервер мы уже не используем. Надо у Тимофея спросить :)