Randy Dunlap wrote:
On 03/25/10 10:48, Piotr Hosowicz wrote:
Randy Dunlap wrote:
On 03/25/10 10:37, Piotr Hosowicz wrote:
Randy Dunlap wrote:
On 03/18/10 08:40, Randy Dunlap wrote:
On Tue, 16 Mar 2010 12:24:35 -0700 Randy Dunlap wrote:
On 03/16/10 12:02, Piotr Hosowicz wrote:
Hello,
I own quite strong PC, 4 core Pentium. I recently started to
build my
kernel frequently, whenever I see a new patch on kernel.org I build
again. Bothers me that I do it only for doing it. Maybe it could
be of
some help to the community? And if so, what would be more
appreciated -
linux-next patched kernel or gitN patched kernel? And how should I
configure the kernel for this purpose? I am afraid of putting all
the
options on, yesterday I tried to put everything on as a module
plus I
tinkered with some other options that seemed innocent. The kernel
was
built but could not boot, saying that there was a problem with the
root
device, it could not recoginze /dev/sda2, which is my correct root
device. I did not investigate much and reverted to working kernel.
Thanks in advance for your remarks.
Many linux-next builds are done daily: see
http://kisskb.ellerman.id.au/kisskb/branch/9/
and then I do 25 x86_32 randconfigs and 25 x64_64 randconfigs
daily and fix most build errors that I find in them.
(I am also using a quad-core PC with a cron job that finds the
next day's linux-next, downloads it, and does 50 builds.)
You are welcome to do the same or test mainline (with daily
builds) and/or Andrew Morton's mmotm patchset.
One thing that you could do that no one focuses on is building
with some kconfig symbols disabled (ones that are typically enabled),
such as CONFIG_SMP=n, CONFIG_SYSFS=n, CONFIG_PROC_FS=n, CONFIG_PM=n,
CONFIG_PCI=n, CONFIG_BLOCK=n, CONFIG_NET=n, CONFIG_INET=n (but latter
with CONFIG_NET=y), CONFIG_HOTPLUG=n. Not all of these at the same
time,
just various/random combinations of them.
and CONFIG_SYSRQ=n (just found some errors due to this one)
You mean CONFIG_SYSRQ=n exactly and mandatory in every config or this
was just an example?
Sorry about that. Just make it random (sometimes disabled).
Ok.
The problem I face and want to overcome now is that not all options can
be random, some options require to be not y or no a tall, but a string
or a number. So my plan is that first thing to be done is to do make
defconfig and put it as a template to be used by my scripts. Then only
the options that you enumerated earlier will be randomized. Is this
correct?
Yes, that's one way to approach it.
Another way (similar) would be to use a combination of "make randconfig"
with KCONFIG_ALLCONFIG. See Documentation/kbuild/kconfig.txt for info
on KCONFIG_ALLCONFIG. Basically it allows you to tell kconfig values for
a subset of config symbols to be used.
Ok, but at present is not working properly, as expected. The scripts now
are like this, I returned to randomizing with bash:
--- try-build.sh
#!/bin/bash
RCPT=phz@localhost
CPUCNT=$(cat /proc/cpuinfo | grep ^processor | wc -l)
function tidy(){
rm ../results/.config 2>/dev/null
rm ../results/build.log 2>/dev/null
rm ../BUILDING-NOW 2>/dev/null
}
cd ~/kernel/linux
if test -f ../BUILDING-NOW ; then
exit 0
else
touch ../BUILDING-NOW
make mrproper
cat ../config.all | ../randomize-conf2.sh > ./.config
make oldconfig
cp .config ../results/
DT=$(date +%y%m%d-%H%M%S)
make -j $CPUCNT vmlinux 2>&1 | tee ../results/build.log
if test $? -ne 0 ; then
(cat ../results/.config && cat ../results/build.log) | mail -s
'Build failed at kernel phase' $RCPT
mv ../results/.config ../results/.config.kf.$DT
mv ../results/build.log ../results/build.log.$DT
tidy
exit 0
fi
make -j $CPUCNT modules 2>&1 | tee -a ../results/build.log
if test $? -ne 0 ; then
(cat ../results/.config && cat ../results/build.log) | mail -s
'Build failed at modules phase' $RCPT
mv ../results/.config ../results/.config.mf.$DT
mv ../results/build.log ../results/build.log.$DT
tidy
exit 0
fi
cp ../results/build.log ./
rm BUILDING-NOW
echo OK | mail -s 'ok' $RCPT
tidy
fi
--- randomize-conf2.sh:
#!/bin/bash
NETENABLED=0
function enable_or_not(){
if test $RANDOM -lt 16383 ; then
if test $1=CONFIG_NET ; then
NETENABLED=1
echo $1=y
return
fi
if test $1=CONFIG_INET && test $NETENABLED -eq 1 ; then
if test $RANDOM -lt 16383 ; then
echo $1=y
else
echo '# '$1' is not set'
fi
return
fi
else
echo '# '$1' is not set'
fi
}
cat ../config.all | grep -v CONFIG_SMP | grep -v CONFIG_SYSFS | grep -v
CONFIG_PROC_FS | grep -v CONFIG_PM | grep -v CONFIG_PCI | grep -v
CONFIG_BLOCK | grep -v CONFIG_NET | grep -v CONFIG_INET | grep -v
CONFIG_HOTPLUG > ./cfg.tmp
(
enable_or_not CONFIG_SMP
enable_or_not CONFIG_SYSFS
enable_or_not CONFIG_PROC_FS
enable_or_not CONFIG_PM
enable_or_not CONFIG_PCI
enable_or_not CONFIG_BLOCK
enable_or_not CONFIG_NET
enable_or_not CONFIG_INET
enable_or_not CONFIG_HOTPLUG
)
cat ./cfg.tmp
I launch try-build.sh, but it still asks me about unspecified options,
my config.all is produced by make defconfig or make oldconfig, dosen't
matter still.
Do you see what the problem is?
--
Z cyklu "Uroki demokracji", czyli pytania i odpowiedzi w teledurniejach:
- Ile kół ma trójkołowiec?
- Dwa.
NP: Miles Davis and John Coltrane - Two Bass Hit
NB: 2.6.34-rc2-nx-20100325-next-20100325+
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html