LINUX.ORG.RU

модули ядра, автоконфигурация


0

0

Собрал себе ради интереса ядро, в котором все что можно скомпилированно в виде модулей. Теперь не могу завести фреймбуффер(обычный vesa, vga=bla-bla). Есть какие-нибудь тулзы для определения железа и модулей, которые пихать в initrd? Вроде же в gentoo что-то такое есть.


И еще, я везде, где было trace или debug поставил n. Как проверить - правильный ли конфиг(не компилируя 2 часа)?

alex4
() автор топика

>Вроде же в gentoo что-то такое есть.
Если имеется в виду genkernel, то вы глубоко ошибаетесь. Он создает очень страшные и жирные конфиги

proDOOMman ★★
()

Я вроде уже понял, в чем дело. Мне нужен был vesafb. Но его нет в makeconfig и когда я сам добавил этот флаг в .config модуль не собрался. В чем дело? Ядро 2.6.30, из бекпортов. Все что только можно собрать модулями так и собрано, все trace и debug флаги сброшены. Больше ничего особо не менял, только архитектуру, пару опций относящихся к производительности и убрал oss.

$ uname -a
Linux ****** 2.6.30 #1 PREEMPT Tue Sep 29 19:26:12 MSD 2009 i686 GNU/Linux

$ cat /etc/debian_version 
5.0.3
alex4
() автор топика
Ответ на: комментарий от alex4

А, разобрался. Надо вкомпилировать поддержку фреймбуфера в ядро.

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

Я похоже просто неправильно готовил. И кроме того я говорил про дебиан. В дебайне можно просто удалить каталог debian из корня сорцов и тогда действительно вместо компиляции ядро просто собирается за несколько минут.

alex4
() автор топика

По сабжу, я както делал ядро «включено только то, что нужно». генератора конфигов ненашел, а действовал в итоге так:

1. Загрузил в слакваре стандартное ядро, в котором было «все как модули» в расчете на то, что загружеными окажутся восновном только нужные модули.

2. Запустил скрипт, который (чаще всего) выводил имена символов в конфиге, соответствующие моим модулям

for m in `lsmod | awk '{print $1}'` ; do kernsym $m ; done

где kernsym - это

#!/bin/sh
die() { echo $@>&2 ; exit -1; }
module=`basename $1 .ko`
kdir=/usr/src/linux
cd $kdir || die "Can't cd to $kdir"
find_search=`echo $module | sed 's/_\|-/?/g'`
grep_search=`echo $module | sed 's/_\|-/\./g'`
modpath=`find -name "$find_search.ko"`
test -z "$modpath" && die "Can't find module $module.ko in kernel src"
moddir=`dirname "$modpath"`
cd $moddir || die "Can't cd to module dir in the kernel source"
sym=`cat Makefile | grep "$grep_search\.o" | grep CONFIG | sed 's/.*\(CONFIG_[A-Z0-9_]*\).*/\1/g'`
echo $module : $sym

3. Нашел получившиеся символы в конфиге ядра, творчески повключал их как 'y'.. Ну и дальше как обычно.

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

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

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