LINUX.ORG.RU

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


0

1

Собственно, хочется получить ядро с максимальной поддержкой всего и вся. Задолбало уже включать всё руками каждый раз. Однако, послать в make config везде «y» тоже не получится, т.к. я хочу, чтобы всё, что можно, было собрано в виде модулей, а средства дебага и трейсинга были отключены (т.к. они могут влиять на стабильность и производительность). Не подскажите, как можно решить эту проблему?

Ответ на: комментарий от tazhate

genkernel 3.4.20. Ничего там нет.

Я вижу только вариант запустить yes | make config > debug.txt
После этого в скрипте уста вливаем временную переменную в «y»,
парсим debug.txt на наличие «/m:» (или что-то типа того) в вопросе,
если есть, то устанавливаем в темповую переменную «m»,
после этого (не переходя на другую строку) смотрим, нет ли в строке «debug» или «tracing» или «trace enable» в любом регистре, если есть, что в переменную пишем «n»,
далее пишем переменную в файл.
После исполнения скрипта делаем cat result.txt | make config и компилим ядро ^^

Есть ли какой-нибудь файл, откуда make config берет свои вопросы, чтобы удобнее парсинг сделать? Или у него такой формат, что мой вариант проще?

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ktulhu666

genkernel all сделай. Он как раз и соберет кучу всего (почти все емнип) модулями.

tazhate ★★★★★
()

make allmodconfig не то?

  allnoconfig	  - New config where all options are answered with no
  allyesconfig	  - New config where all options are accepted with yes
  allmodconfig	  - New config selecting modules when possible
  alldefconfig    - New config with all symbols set to default
Lavos ★★★★★
()

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

Конфиг скопировать религия не позволяет?

tyakos ★★★
()
Ответ на: комментарий от r2d2

С каждым новым ядром добавляются новые фитчи. Хотя я и копирую конфиг, его всё-равно ещё просмотреть через make menuinstall, чтобы включить новые фитчи. Вот я и хочу это автоматизировать.

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от Lavos

allmodconfig - New config selecting modules when possible
А вопрос с ненужным дебаг и трейсинг опциями он решает? Включает ли он только модули или ещё ставит «y» всем пунктам, которые не являются модулями?

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ktulhu666

Ставит «y» если пунктик не может быть «m».
Дебаги все включает, но можно же сделать:

grep -v DEBUG .config >.newconfig && mv .newconfig .config

Lavos ★★★★★
()
Ответ на: комментарий от ktulhu666

Хотя я и копирую конфиг, его всё-равно ещё просмотреть через make menuinstall, чтобы включить новые фитчи.

Возможно make oldconfig будет удобнее. Оно будет спрашивать как раз только про новые пунктики.

Lavos ★★★★★
()
Ответ на: комментарий от Lavos

А-ня-ная. Пасибки-пасибки, всё именно как мне надо ^^. Думаю, что трейсинг примерно также отключается. Или он всегда как DEBUG помечен?

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от Lavos

rm .config*
make allmodconfig
cp .config .config.bak
grep -v DEBUG .config.bak > .config.bak2
grep 'CONFIG_RCU_TRACE\|CONFIG_TREE_RCU_TRACE\|CONFIG_BACKTRACE_SELF_TEST\|CONFIG_FUNCTION_TRACER\|CONFIG_IRQSOFF_TRACER\|CONFIG_PREEMPT_TRACER\|CONFIG_SCHED_TRACER\|CONFIG_FTRACE_SYSCALLS\|CONFIG_STACK_TRACER\|CONFIG_FTRACE_STARTUP_TEST\|CONFIG_MMIOTRACE' .config.bak2 | sed 's/\=y/\=n/g' > .config
cat .config.bak | grep DEBUG | sed 's/\=y/\=n/g' >> .config
echo проверка
cat .config | grep CONFIG_MMIOTRACE
cat .config | grep DEBUG

make
make install

Так подойдёт?

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ktulhu666

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

anonymous
()
Ответ на: комментарий от Lavos

Ошибочка. Вот так надо:

rm .config*
make allmodconfig
mv .config .config.bak
grep -v DEBUG .config.bak > .config.bak_to_trace
cat .config.bak | grep DEBUG | sed 's/\=y/\=n/g' >> .config.bak_to_trace

cat .config.bak_to_trace | grep -v 'CONFIG_RCU_TRACE\|CONFIG_TREE_RCU_TRACE\|CONFIG_BACKTRACE_SELF_TEST\|CONFIG_FUNCTION_TRACER\|CONFIG_IRQSOFF_TRACER\|CONFIG_PREEMPT_TRACER\|CONFIG_SCHED_TRACER\|CONFIG_FTRACE_SYSCALLS\|CONFIG_STACK_TRACER\|CONFIG_FTRACE_STARTUP_TEST\|CONFIG_MMIOTRACE' > .config

cat .config.bak_to_trace | grep 'CONFIG_RCU_TRACE\|CONFIG_TREE_RCU_TRACE\|CONFIG_BACKTRACE_SELF_TEST\|CONFIG_FUNCTION_TRACER\|CONFIG_IRQSOFF_TRACER\|CONFIG_PREEMPT_TRACER\|CONFIG_SCHED_TRACER\|CONFIG_FTRACE_SYSCALLS\|CONFIG_STACK_TRACER\|CONFIG_FTRACE_STARTUP_TEST\|CONFIG_MMIOTRACE' | sed 's/\=y/\=n/g' | sed 's/\=m/\=n/g' >> .config

echo проверка
cat .config | grep CONFIG_MMIOTRACE
cat .config | grep DEBUG

make && make install

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ktulhu666

А обязательно добавлять эти опции с «=n»?
Разве отсуствие опции в .config не равносильно «=n»?
Или в таком случае берется дефолтовое значение?

Lavos ★★★★★
()
Ответ на: комментарий от Lavos

Видимо, не то же самое. У меня, если тупо удлалять эти строки, то make запускал make menuconfig, а не сборку ведра.

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ktulhu666

А если так?

make allmodconfig
egrep -v 'DEBUG|TRACE' .config >.newconfig
mv .newconfig .config
make oldnoconfig
oldnoconfig добавляет новые опции, которых нет в текущем конфиге, с «=n».
Но все DEBUG-и после allmodconfig выключить не получится, например CONFIG_EXPERT=y автоматом включает CONFIG_DEBUG_KERNEL=y.

Lavos ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.