lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <70318cbf0809191655m89e4b4fo68c3693487afed98@mail.gmail.com>
Date:	Fri, 19 Sep 2008 16:55:51 -0700
From:	"Chris Li" <lkml@...isli.org>
To:	"Takashi Iwai" <tiwai@...e.de>
Cc:	"Giacomo A. Catenazzi" <cate@...eee.net>,
	"Mauro Carvalho Chehab" <mchehab@...radead.org>,
	"Steven Rostedt" <rostedt@...dmis.org>,
	linux-kernel@...r.kernel.org
Subject: Re: diet-kconfig: a script to trim unneeded kconfigs

On Fri, Sep 19, 2008 at 9:01 AM, Takashi Iwai <tiwai@...e.de> wrote:
> Yes.  Your stuff would be actually helpful for people who want
> a really slim kernel config.

Incidentally, I wrote such a script as well. In 64 lines of python code.
I attach the script in question in the mail. I use a approach very
similar to yours. But I work around some of the nasty part.

It needs to start with kernel config has most of the modules enabled.
Most of the kernel config from the linux distribution is like that.
Then it try to parse the Kbuild looking for what kernel config produce
what module. It is not a 1 to 1 mapping.

Once  we have the mapping. It open /proc/modules to go over every
module. Remove the config which can produce those module from the
mapping.

Now we have a blacklist of config produce modules but not the one we want.

Then  the last stage is just open a config file and filter out the config
option on the blacklist. Write the result to a new config file.

I avoid arch/ and firmware/ because it is nasty. I figure module in
arch/ is small enough I don't mind building it. And the firmware directory,
if I don't build the module loads it. Those firmware will automatically skipped
any way.

The little tricky part is some thing like this:
========================
ifeq ($(CONFIG_BLK_DEV_CMD640), m)
        obj-m += cmd640.o
endif
========================
Internally it get convert it into:
"obj-$(CONFIG_BLK_DEV_CMD640) += cmd640.o"

For easier parsing.
It is pretty fast as well. Less then a second if the file cache is
hot.

$ time minmod.py .config
reading Kbuild Makefile 593 files
acpi_cpufreq : Uknown module, may be firmware?
dcdbas : Uknown module, may be firmware?
1560 module option disabled
Writing new config to: .config.min

real	0m0.470s
user	0m0.303s
sys	0m0.075s
$

Chris
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ