No Build ID error when building new OpenVZ kernel in FEDORA8

xinglin xinglin at cs.utah.edu
Fri Mar 26 05:50:37 UTC 2010


Hi,

I am Xing, a PHD candidate in University of Utah. I am trying to compile
and install an OpenVZ kernel in FEDORA8, but one error prevents me. The
error is "No build ID note found in /var/tmp/kernel***". I have tried
several ways to solve it but still failed. I introduced what I did to solve
this problem and hope to get some help from you.

The procedure I did to build a kernel RPM from SRPM.
1). Install SCR RPM

-bash-3.2$ sudo rpm -ihv
~/openvz/ovzkernel-2.6.18-128.2.1.el5.028stab064.7.src.rpm
   1:ovzkernel              #######################################[100%]

2). Change buildid in kernel-ovz.spec

-bash-3.2$ vim ./SPECS/kernel-ovz.spec
%define buildid .emulab_openvz_migration  //for easy distinguish.


3). Prepare kernel source tree.
-bash-3.2$ sudo rpmbuild -bp --target=`uname -m` kernel-ovz.spec
Building target platforms: x86_64
Building for target x86_64

4). create my own patch
I).
-bash-3.2$ sudo cp -r ./BUILD/ovzkernel-2.6.18/linux-2.6.18.x86_64
./BUILD/ovzkernel-2.6.18.orig
-bash-3.2$ sudo cp -r BUILD/ovzkernel-2.6.18.orig
BUILD/ovzkernel-2.6.18.new


II). -bash-3.2$ sudo vim BUILD/ovzkernel-2.6.18.new/kernel/cpt/cpt_files.h

#define check_one_vfsmount(mnt) \
        (strcmp(mnt->mnt_sb->s_type->name, "rootfs") != 0 && \
         strcmp(mnt->mnt_sb->s_type->name, "vzfs") != 0 && \
         strcmp(mnt->mnt_sb->s_type->name, "ext3") != 0 && \
         strcmp(mnt->mnt_sb->s_type->name, "ext2") != 0 && \
         strcmp(mnt->mnt_sb->s_type->name, "simfs") != 0 && \
         strcmp(mnt->mnt_sb->s_type->name, "unionfs") != 0 && \
         strcmp(mnt->mnt_sb->s_type->name, "tmpfs") != 0 && \
         strcmp(mnt->mnt_sb->s_type->name, "devpts") != 0 && \
         strcmp(mnt->mnt_sb->s_type->name, "proc") != 0 && \
         strcmp(mnt->mnt_sb->s_type->name, "sysfs") != 0 && \
         strcmp(mnt->mnt_sb->s_type->name, "nfs") != 0 && \
         strcmp(mnt->mnt_sb->s_type->name, "binfmt_misc") != 0)

III). Set LDFLAGS(I tried to set in some experiments)
-bash-3.2$ sudo vim BUILD/ovzkernel-2.6.18.new/arch/x86_64/Makefile
LDFLAGS         := -m elf_x86_64 --build-id

IV). create the patch(patch can be reused. patch locates at
~/linux-2.6.18-nfs.patch)
-bash-3.2$ cd BUILD
-bash-3.2$ diff -uNrp ovzkernel-2.6.18.orig ovzkernel-2.6.18.new >
~/linux-2.6.18-openvz-nfs.patch


V). copy to $TOPDIR/SOURCE
-bash-3.2$ sudo cp ~/linux-2.6.18-openvz-nfs.patch SOURCES/


5). change kernel spec file.
sudo vim kernel-ovz.spec

I). add new patch into it.

Patch120000: linux-2.6.18-openvz-nfs.patch
# End VZ patches

II). add patch command

%patch110008 -p1

%patch120000 -p1
%endif

6). set LDFLAGS in cmd
-bash-3.2$ echo $LDFLAGS
--build-id
7). Rebuild kernel RPMs.
-bash-3.2$ sudo rpmbuild -bb --with baseonly --without debuginfo
--target=`uname -m` ./SPECS/kernel-ovz.spec
Building target platforms: x86_64
Building for target x86_64 
...

Without setting --build-id at
BUILD/ovzkernel-2.6.18.new/arch/x86_64/Makefile, the error is as following:
"extracting debug info from
/var/tmp/kernel-2.6.18-128.2.1.el5.emulab_openvz_migration-root/usr/src/kernels/2.6.18-128.2.1.el5.emulab_openvz_migration-x86_64/scripts/genksyms/genksyms
extracting debug info from
/var/tmp/kernel-2.6.18-128.2.1.el5.emulab_openvz_migration-root/lib/modules/2.6.18-128.2.1.el5.emulab_openvz_migration/kernel/lib/ts_kmp.ko
*** ERROR: No build ID note found in
/var/tmp/kernel-2.6.18-128.2.1.el5.emulab_openvz_migration-root/lib/modules/2.6.18-128.2.1.el5.emulab_openvz_migration/kernel/lib/ts_kmp.ko
xargs: stat: terminated by signal 13
error: Bad exit status from /var/tmp/rpm-tmp.5481 (%install)


RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.5481 (%install)"

If I set --build-id at BUILD/ovzkernel-2.6.18.new/arch/x86_64/Makefile,
the error is as following:
ld: warning: Cannot create .note.gnu.build-id section, --build-id ignored.
ld: warning: Cannot create .note.gnu.build-id section, --build-id ignored.
/bin/sh: line 1: 11125 Segmentation fault      ld -m elf_x86_64 --build-id
-r -o drivers/i2c/built-in.o drivers/i2c/busses/built-in.o
drivers/i2c/chips/built-in.o drivers/i2c/algos/built-in.o
make[2]: *** [drivers/i2c/built-in.o] Error 139
make[1]: *** [drivers/i2c] Error 2
make[1]: *** Waiting for unfinished jobs....
ld: warning: Cannot create .note.gnu.build-id section, --build-id ignored.
ld: warning: Cannot create .note.gnu.build-id section, --build-id ignored.
ld: warning: Cannot create .note.gnu.build-id section, --build-id ignored.
make: *** [drivers] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.48864 (%build)

2). I also tried to add "%define _missing_build_ids_terminate_build 0" or
"%define debug_package %{nil}" at the top of SPECS/kernel-ovz.spec, but it
does not work and still reports "No BUILD ID" error.

3). If I tried to change $(LD) to $(CC) in /linux/Makefile(The top
Makefile in Linux source tree), but it reports lots of "undefined
reference" errors.
==
arch/x86_64/lib/lib.a(thunk.o): In function `__up_wakeup':
(.sched.text+0xdf): undefined reference to `__up'
/usr/lib64/libc_nonshared.a(elf-init.oS): In function `__libc_csu_init':
(.text+0x1d): undefined reference to `__init_array_end'
/usr/lib64/libc_nonshared.a(elf-init.oS): In function `__libc_csu_init':
(.text+0x4a): undefined reference to `__init_array_start'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/crtend.o: In function
`__do_global_ctors_aux':
crtstuff.c:(.text+0x6): relocation truncated to fit: R_X86_64_32 against
`.ctors'
collect2: ld returned 1 exit status

4). Add LDFLAGS+=--build-id in kernel-ovz.spec before %build and %install.
But it still reported "No BUILD ID" errors(If I remember correctly).


I really hope to receive any suggestions to solve this problem. Thanks for
your help.


More information about the devel mailing list