linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Automatic .config generation
@ 2005-05-12 18:05 Scott Robert Ladd
  2005-05-12 17:07 ` jmerkey
  0 siblings, 1 reply; 18+ messages in thread
From: Scott Robert Ladd @ 2005-05-12 18:05 UTC (permalink / raw)
  To: linux-kernel

Is there a utility that creates a .config based on analysis of the
target system?

^ permalink raw reply	[flat|nested] 18+ messages in thread
* Re: Automatic .config generation
@ 2005-09-06  9:02 Ahmad Reza Cheraghi
  0 siblings, 0 replies; 18+ messages in thread
From: Ahmad Reza Cheraghi @ 2005-09-06  9:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: Valdis.Kletnieks

[-- Attachment #1: Type: text/plain, Size: 434 bytes --]

Hi

For my endthesis I wrote a Framework that
automatically generates a Kernel-Configuration .
A Kernel-Patch, the sources and a readme are attached
to this mail. For more details please read the readme.

Comments and suggestion are welcome.

Regards
Ahmad Reze Cheraghi


	
		
______________________________________________________
Click here to donate to the Hurricane Katrina relief effort.
http://store.yahoo.com/redcross-donate3/

[-- Attachment #2: 2327105889-autoconfig_0_1.tgz --]
[-- Type: application/x-gtar, Size: 17742 bytes --]

[-- Attachment #3: 2655387580-readme --]
[-- Type: application/octet-stream, Size: 6762 bytes --]


For my EndThesis, in the Niederrhein University of Applied Sciences,
I've right-now almost finished a framework that generates a
.config file based on the target system. This program should help people to
generate a linux kernel Config without spending a lot of time at the
configuration.

The basic idea of the framework is, that the options asked by "make config"
will be redirected to a set of scripts. Those scripts answers are depending on the
hardware/system the option-question.

This framework is now in its test stage. It works on my Acer Laptop(TM
291LMI with Pentium M and Radeon 9700). That means,
- the framework is functional
- but additional scripts have to be written for other type of
  hardware/functionality (far away from completed)
- an additional Help is an output that the autoconfig gives out after his work is done, which tells
  us that in some menus the amount of needed options did not elected.

Constist:
********

The Linux Auto-Config consist of Files, auto_conf.c, an upgraded conf.c and Makefile, a directory
(rules) which contains a rules_list and the scripts, and a xmlparser written by Tim Hockin.



install:
*******

You've just to download the autoconfig*.tgz and unpack it in the /usr/src/<KERNELVERSION>/scripts/kconfig
directory. 
To run it go to your the <KERNELVERSION> directory and type

for using the sources:

(root) # cd /tmp/
(root) # tar xvfz autoconfig*.tgz
(root) # cp -r autoconfig*/* /usr/src/<KERNELVERSION>/scripts/kconfig
(root) # cd /usr/src/<KERNELVERSION>/

for using the patch:

(root) # cd /tmp/
(root) # tar xvfz autoconfig*-patch.tgz
(root) # cd /usr/src/<KERNELVERSION>/
(root) #root) # patch -p1 < /tmp/autoconfig*/sources.patch
(root) # chmod u+x scripts/kconfig/rules/*
(root) # make auconfig

!! Be carefull: since we want to build a config from scratch on, the .config will be deleted automaticly.


How does it work:
*****************

The trick of all is a framworking program, that means adding binaries or scripts without 
touching the real program. The program starts like if you are starting a  make config, but at that point 
where it wants an input from you, the function auto_conf gets called with that option-question
as a parameter. We are comparing this option with in a list manual-written
Kconfig option. Each of those options in the list has its own script which will be 
executed in parallel by accordance. For putting an option in the rules_list you need
the Option and a script that does the work for the option and then gives a value
to the stout. This value will be redirected through a pipe to our main program which will
write the config-name for the option into the .config file. 




How to add a rule:
*******************


The basic of the script is that it must give an answer to stdout. 
Since the rules_list is written in xml there are some conditions for adding rules.
To add a rule (for the specified option), you have to know first the option name
and the name of the menu that contains it. 
The easiest way, to do this, is to run make menuconfig, and see in which menu or submenu your option belongs to. 
Each of those has its own XML-Tag:


<rules>: beginnging of the list.

<menu name="menu name" must_have=" number ">:
	    Has the attribute "name" and "must_have". In attribute "name" the name of the menu should be written.
	    Attribute "must_have" shows the min. number of option, that in a menu should be choosen for a proper Kernel. 
	    <menu> can contains options or submenus(the same as <menu>). 

<option name="option name"> rule </option>
 	    In the attribut name the option name should be written. And the contain of the Option Tag 
	    is the name of rule that belongs to that option.

example:

<rules>
      <menu name="Networking support" must_have="1">
         <option name="Networking support">egrep1.pm "Network|Ethernet"</option>
         <menu name="Networking menus">
            <option name="Packet socket">yes1.pm</option>
            <option name="Packet socket: mmapped IO">yes1.pm</option>
	</menu>
      </menu>
</rules>


How to make a rule
*******************

A rule can be either a script or binary or... The main job is to 
give out an answer to stout for the actually option-question, it doesn't matter
how.
 
We have three types of answer:

sym-answers:     either y, n, m or \n.

string-answer:   can be maximal 128 characters

option-answer: 	 By the manual configuration normally you have to type an number
		 but a rule for an option should give out an y, if it want to be choosen. 
		




For example:    the option is "Networking Support"
		the program looks in the our list (which is called rules_list)
		to find the "Networking Support" and if this option is in there,
		a certain script (which we call it a rule)  will be executed. 
		In this example the script name is hw_grep1.pm which 
		reads a given Parameter and searches for this Parameter,
		lspci and dmesg with the help of grep. In this Case the Parameter 
		will be "Ethernet|Network".
		
		hw_grep1.pm:

		$found='';
		$found=`lspci | grep "@ARGV"`;
		if($found ne '') {
        		print("y\n");
		}
		else {
        		$found=`grep -E "@ARGV" /var/log/dmesg `;
        		if($found ne ''){
                		print("y\n");
        		}
        		else {
		                print("n\n");
        		}
		}
		1;

		
			    

		
		This script checks if there is an Ethernet or 
		a Network card  on the target System.
		If it is true, it gives  in this case a 'y' to stdout. 
		And for some options there can't be any script-rules, for instance software such as FTP or TCPIP etc...,
		those question either get answered as 'build in' or as 'module'.
		!! the answers must always have a '\n' at the end

The rule-binary should be copied in the directory <KERNELVERSION>/scripts/kconfig/rules/



Messages:
*******************

When the amount of needed Options in some menus are not choosen,
messages will be given out in the stdout, at the end of the configuration.
Containig Name of the menus.

This can be happen:

1. if for some options they rules are not applied. The reason for that is for some Hardware Option there is no rule.

2. if your System doesn't support the Hardware i.e. you don't have an ethernet Card.

In this case either your upgrade the autoconfig with rules or your contact me. 

If you are getting messages please include the following information:

1. a copy of your lspci, /proc/cpuinfo and /var/log/dmesg

2. a copy of your messages



TO DO:
*******************

1. The Framework has to be extend for the Systems that aren't supported.

2 .A way to ask for the Hardware-Devices directly from the I/O.
 

Contact:
*******************

Suggestion and comments are welcome. 

Email: Ahmad Reza Cheraghi <a_r_cheraghi@yahoo.com>

[-- Attachment #4: 1469308934-autoconfig_0_1_patch.tgz --]
[-- Type: application/x-gtar, Size: 14904 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread
* Re: Automatic .config generation
@ 2005-09-06  9:12 Ahmad Reza Cheraghi
  0 siblings, 0 replies; 18+ messages in thread
From: Ahmad Reza Cheraghi @ 2005-09-06  9:12 UTC (permalink / raw)
  To: linux-kernel; +Cc: Valdis.Kletnieks

[-- Attachment #1: Type: text/plain, Size: 447 bytes --]

(update)

Hi everybody

For my endthesis I wrote a Framework that
automatically generates a Kernel-Configuration .
A Kernel-Patch, the sources and a readme are attached
to this mail. For more details please read the readme.

Comments and suggestion are welcome.

Regards
Ahmad Reze Cheraghi



__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

[-- Attachment #2: 1469308934-autoconfig_0_1_patch.tgz --]
[-- Type: application/x-gtar, Size: 14904 bytes --]

[-- Attachment #3: 2327105889-autoconfig_0_1.tgz --]
[-- Type: application/x-gtar, Size: 17752 bytes --]

[-- Attachment #4: 2655387580-readme --]
[-- Type: application/octet-stream, Size: 6789 bytes --]


For my EndThesis, in the Niederrhein University of Applied Sciences,
I've right-now almost finished a framework that generates a
.config file based on the target system. This program should help people to
generate a linux kernel Config without spending a lot of time at the
configuration.

The basic idea of the framework is, that the options asked by "make config"
will be redirected to a set of scripts. Those scripts answers are depending on the
hardware/system the option-question.

This framework is now in its test stage. It works on my Acer Laptop(TM
291LMI with Pentium M and Radeon 9700). That means,
- the framework is functional
- but additional scripts have to be written for other type of
  hardware/functionality (far away from completed)
- an additional Help is an output that the autoconfig gives out after his work is done, which tells
  us that in some menus the amount of needed options did not elected.

Constist:
********

The Linux Auto-Config consist of Files, auto_conf.c, an upgraded conf.c and Makefile, a directory
(rules) which contains a rules_list and the scripts, and a xmlparser written by Tim Hockin.



install:
*******

You've just to download the autoconfig*.tgz and unpack it in the /usr/src/<KERNELVERSION>/scripts/kconfig
directory. 
To run it go to your the <KERNELVERSION> directory and type

for using the sources:

(root) # cd /tmp/
(root) # tar xvfz autoconfig*.tgz
(root) # cp -r autoconfig*/* /usr/src/<KERNELVERSION>/scripts/kconfig
(root) # cd /usr/src/<KERNELVERSION>/
(root) # make autoconfig

for using the patch:

(root) # cd /tmp/
(root) # tar xvfz autoconfig*-patch.tgz
(root) # cd /usr/src/<KERNELVERSION>/
(root) #root) # patch -p1 < /tmp/autoconfig*/sources.patch
(root) # chmod u+x scripts/kconfig/rules/*
(root) # make autoconfig

!! Be carefull: since we want to build a config from scratch on, the .config will be deleted automaticly.


How does it work:
*****************

The trick of all is a framworking program, that means adding binaries or scripts without 
touching the real program. The program starts like if you are starting a  make config, but at that point 
where it wants an input from you, the function auto_conf gets called with that option-question
as a parameter. We are comparing this option with in a list manual-written
Kconfig option. Each of those options in the list has its own script which will be 
executed in parallel by accordance. For putting an option in the rules_list you need
the Option and a script that does the work for the option and then gives a value
to the stout. This value will be redirected through a pipe to our main program which will
write the config-name for the option into the .config file. 




How to add a rule:
*******************


The basic of the script is that it must give an answer to stdout. 
Since the rules_list is written in xml there are some conditions for adding rules.
To add a rule (for the specified option), you have to know first the option name
and the name of the menu that contains it. 
The easiest way, to do this, is to run make menuconfig, and see in which menu or submenu your option belongs to. 
Each of those has its own XML-Tag:


<rules>: beginnging of the list.

<menu name="menu name" must_have=" number ">:
	    Has the attribute "name" and "must_have". In attribute "name" the name of the menu should be written.
	    Attribute "must_have" shows the min. number of option, that in a menu should be choosen for a proper Kernel. 
	    <menu> can contains options or submenus(the same as <menu>). 

<option name="option name"> rule </option>
 	    In the attribut name the option name should be written. And the contain of the Option Tag 
	    is the name of rule that belongs to that option.

example:

<rules>
      <menu name="Networking support" must_have="1">
         <option name="Networking support">egrep1.pm "Network|Ethernet"</option>
         <menu name="Networking menus">
            <option name="Packet socket">yes1.pm</option>
            <option name="Packet socket: mmapped IO">yes1.pm</option>
	</menu>
      </menu>
</rules>


How to make a rule
*******************

A rule can be either a script or binary or... The main job is to 
give out an answer to stout for the actually option-question, it doesn't matter
how.
 
We have three types of answer:

sym-answers:     either y, n, m or \n.

string-answer:   can be maximal 128 characters

option-answer: 	 By the manual configuration normally you have to type an number
		 but a rule for an option should give out an y, if it want to be choosen. 
		




For example:    the option is "Networking Support"
		the program looks in the our list (which is called rules_list)
		to find the "Networking Support" and if this option is in there,
		a certain script (which we call it a rule)  will be executed. 
		In this example the script name is hw_grep1.pm which 
		reads a given Parameter and searches for this Parameter,
		lspci and dmesg with the help of grep. In this Case the Parameter 
		will be "Ethernet|Network".
		
		hw_grep1.pm:

		$found='';
		$found=`lspci | grep "@ARGV"`;
		if($found ne '') {
        		print("y\n");
		}
		else {
        		$found=`grep -E "@ARGV" /var/log/dmesg `;
        		if($found ne ''){
                		print("y\n");
        		}
        		else {
		                print("n\n");
        		}
		}
		1;

		
			    

		
		This script checks if there is an Ethernet or 
		a Network card  on the target System.
		If it is true, it gives  in this case a 'y' to stdout. 
		And for some options there can't be any script-rules, for instance software such as FTP or TCPIP etc...,
		those question either get answered as 'build in' or as 'module'.
		!! the answers must always have a '\n' at the end

The rule-binary should be copied in the directory <KERNELVERSION>/scripts/kconfig/rules/



Messages:
*******************

When the amount of needed Options in some menus are not choosen,
messages will be given out in the stdout, at the end of the configuration.
Containig Name of the menus.

This can be happen:

1. if for some options they rules are not applied. The reason for that is for some Hardware Option there is no rule.

2. if your System doesn't support the Hardware i.e. you don't have an ethernet Card.

In this case either your upgrade the autoconfig with rules or your contact me. 

If you are getting messages please include the following information:

1. a copy of your lspci, /proc/cpuinfo and /var/log/dmesg

2. a copy of your messages



TO DO:
*******************

1. The Framework has to be extend for the Systems that aren't supported.

2 .A way to ask for the Hardware-Devices directly from the I/O.
 

Contact:
*******************

Suggestion and comments are welcome. 

Email: Ahmad Reza Cheraghi <a_r_cheraghi@yahoo.com>

^ permalink raw reply	[flat|nested] 18+ messages in thread
* Automatic .config generation
@ 2005-09-08 20:39 Ahmad Reza Cheraghi
  2005-09-08 21:13 ` Alex Riesen
  0 siblings, 1 reply; 18+ messages in thread
From: Ahmad Reza Cheraghi @ 2005-09-08 20:39 UTC (permalink / raw)
  To: linux-kernel

Hi

I made this Framework to generate a .config based on a
Target-System. Right-now it works on my Laptop Acer
TM290. It has to be upgradet to other system as well.
But it's realy easy just read the readme. I would be
realy happy if some of you guys give me some comments
and suggestion about it.

readme:
http://www.energyparty.de/ahmad/readme

A patch for the Kernel:
http://www.energyparty.de/ahmad/autoconfig_0_1_patch.tgz

sources:
http://www.energyparty.de/ahmad/autoconfig_0_1.tgz


Regard

Ahmad Reza Cheraghi


	
		
______________________________________________________
Click here to donate to the Hurricane Katrina relief effort.
http://store.yahoo.com/redcross-donate3/

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2005-09-09  7:49 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-05-12 18:05 Automatic .config generation Scott Robert Ladd
2005-05-12 17:07 ` jmerkey
2005-05-12 18:21   ` Matthias-Christian Ott
2005-05-12 18:49     ` Steven Rostedt
2005-05-12 18:33   ` Lennart Sorensen
2005-05-12 21:17   ` Edgar Toernig
2005-05-15  7:03     ` Borislav Petkov
2005-05-15  7:42       ` Valdis.Kletnieks
2005-05-15  9:52         ` Jesper Juhl
2005-05-15 11:13           ` Valdis.Kletnieks
2005-05-16 12:50             ` Steven Rostedt
2005-05-15 14:08           ` Scott Robert Ladd
2005-05-15 13:52     ` aq
2005-09-06  9:02 Ahmad Reza Cheraghi
2005-09-06  9:12 Ahmad Reza Cheraghi
2005-09-08 20:39 Ahmad Reza Cheraghi
2005-09-08 21:13 ` Alex Riesen
2005-09-09  7:48   ` Ahmad Reza Cheraghi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).