Re: Maybe my frequent kernel building could be of some help to the community? And how to build?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux