From: Lee C. <car...@im...> - 2006-09-27 06:58:34
|
Hi all, I've got a session of user mode linux up and running using the pre-compiled binaries so thought I would have a go at building my own uml. Hopefully this will help me to understand uml a bit more. I have downloaded the 2.6.18 kernel from kernel.org and applied the -mm patch (Which I believe I was supposed to do). I have made a config file using make defconfig ARCH=um. Now, when I run make ARCH=um I get the following error: In file included from arch/um/kernel/mem.c:8: include/linux/mm.h: In function ?page_zone_id?: include/linux/mm.h:450: warning: right shift count >= width of type arch/um/kernel/mem.c: In function ?paging_init?: arch/um/kernel/mem.c:229: error: ?ZONE_DMA? undeclared (first use in this function) arch/um/kernel/mem.c:229: error: (Each undeclared identifier is reported only once arch/um/kernel/mem.c:229: error: for each function it appears in.) make[1]: *** [arch/um/kernel/mem.o] Error 1 make: *** [arch/um/kernel] Error 2 The full make output is at the end of this mail in case a bit more output is needed. Now I've obviously missed a step here but I can't figure out what. Can anyone point me in the right direction please? Thanks, Lee Full make output: scripts/kconfig/conf -s arch/um/Kconfig drivers/net/wireless/bcm43xx/Kconfig:5:warning: 'select' used by config symbol 'BCM43XX' refer to undefined symbol 'HW_RANDOM' SYMLINK arch/um/include/kern_constants.h SYMLINK include/asm-um/arch SYMLINK arch/um/include/sysdep SYMLINK arch/um/os SYMLINK include/asm-um/archparam.h SYMLINK include/asm-um/system.h SYMLINK include/asm-um/sigcontext.h SYMLINK include/asm-um/processor.h SYMLINK include/asm-um/ptrace.h SYMLINK include/asm-um/module.h SYMLINK include/asm-um/vm-flags.h SYMLINK include/asm-um/elf.h SYMLINK include/asm-um/host_ldt.h CHK arch/um/include/uml-config.h UPD arch/um/include/uml-config.h CC arch/um/sys-i386/user-offsets.s CHK arch/um/include/user_constants.h UPD arch/um/include/user_constants.h CHK include/linux/version.h UPD include/linux/version.h CHK include/linux/utsrelease.h UPD include/linux/utsrelease.h SYMLINK include/asm -> include/asm-um CC arch/um/kernel/asm-offsets.s GEN include/asm-um/asm-offsets.h CC scripts/mod/empty.o HOSTCC scripts/mod/mk_elfconfig MKELF scripts/mod/elfconfig.h HOSTCC scripts/mod/file2alias.o HOSTCC scripts/mod/modpost.o HOSTCC scripts/mod/sumversion.o HOSTLD scripts/mod/modpost HOSTCC scripts/kallsyms HOSTCC scripts/bin2c CC init/main.o In file included from include/linux/poll.h:11, from include/linux/rtc.h:113, from include/linux/efi.h:19, from init/main.c:41: include/linux/mm.h: In function ?page_zone_id?: include/linux/mm.h:450: warning: right shift count >= width of type CHK include/linux/compile.h UPD include/linux/compile.h CC init/version.o CC init/do_mounts.o In file included from include/linux/nfs_fs.h:40, from init/do_mounts.c:13: include/linux/mm.h: In function ?page_zone_id?: include/linux/mm.h:450: warning: right shift count >= width of type LD init/mounts.o CC init/initramfs.o CC init/calibrate.o LD init/built-in.o HOSTCC usr/gen_init_cpio GEN usr/initramfs_data.cpio.gz AS usr/initramfs_data.o LD usr/built-in.o QUOTE arch/um/kernel/config.tmp QUOTE arch/um/kernel/config.c CC arch/um/kernel/config.o CC arch/um/kernel/exec.o In file included from include/asm/tlbflush.h:9, from arch/um/kernel/exec.c:11: include/linux/mm.h: In function ?page_zone_id?: include/linux/mm.h:450: warning: right shift count >= width of type CC arch/um/kernel/exitcode.o CC arch/um/kernel/init_task.o In file included from arch/um/kernel/init_task.c:6: include/linux/mm.h: In function ?page_zone_id?: include/linux/mm.h:450: warning: right shift count >= width of type CC arch/um/kernel/irq.o CC arch/um/kernel/ksyms.o In file included from include/linux/highmem.h:5, from arch/um/kernel/ksyms.c:10: include/linux/mm.h: In function ?page_zone_id?: include/linux/mm.h:450: warning: right shift count >= width of type CC arch/um/kernel/mem.o In file included from arch/um/kernel/mem.c:8: include/linux/mm.h: In function ?page_zone_id?: include/linux/mm.h:450: warning: right shift count >= width of type arch/um/kernel/mem.c: In function ?paging_init?: arch/um/kernel/mem.c:229: error: ?ZONE_DMA? undeclared (first use in this function) arch/um/kernel/mem.c:229: error: (Each undeclared identifier is reported only once arch/um/kernel/mem.c:229: error: for each function it appears in.) make[1]: *** [arch/um/kernel/mem.o] Error 1 make: *** [arch/um/kernel] Error 2 |
From: Samuel K. <str...@gm...> - 2006-09-27 07:22:14
|
On 9/27/06, Lee Cartwright <car...@im...> wrote: > > I have > downloaded the 2.6.18 kernel from kernel.org and applied the -mm patch > (Which I believe I was supposed to do). I have made a config file using > make defconfig ARCH=um. > Try instead the stable 2.6.18 kernel (without the -mm patch) and apply the jmpbuf patch at http://user-mode-linux.sourceforge.net/work/current/2.6/2.6.18/patches/mainline-jmpbuf-akpm /Samuel Korpi |
From: Lee C. <car...@im...> - 2006-09-27 08:19:27
|
Hi Samuel, Thanks, that got me a bit further :) I removed my linux directory, unpacked the kernel source again and applied the patch you linked to. The make is now failing with the following error: CC lib/rbtree.o CC lib/rwsem.o CC lib/semaphore-sleepers.o CC lib/sha1.o CC lib/string.o CC lib/vsprintf.o AR lib/lib.a HOSTCC lib/gen_crc32table GEN lib/crc32table.h CC [M] lib/crc32.o GEN .version CHK include/linux/compile.h UPD include/linux/compile.h CC init/version.o LD init/built-in.o LD .tmp_vmlinux1 /usr/bin/ld: cannot find -lutil collect2: ld returned 1 exit status KSYM .tmp_kallsyms1.S nm: '.tmp_vmlinux1': No such file No valid symbol. make: *** [.tmp_kallsyms1.S] Error 1 Any ideas? Thanks, Lee Samuel Korpi wrote: > > Try instead the stable 2.6.18 kernel (without the -mm patch) and apply > the jmpbuf patch at > > http://user-mode-linux.sourceforge.net/work/current/2.6/2.6.18/patches/mainline-jmpbuf-akpm > > > /Samuel Korpi > > |
From: Samuel K. <str...@gm...> - 2006-09-27 09:26:12
|
On 9/27/06, Lee Cartwright <car...@im...> wrote: > Thanks, that got me a bit further :) > > I removed my linux directory, unpacked the kernel source again and > applied the patch you linked to. The make is now failing with the > following error:lutil > ... > /usr/bin/ld: cannot find -lutillutil > collect2: ld returned 1 exit status > KSYM .tmp_kallsyms1.S > nm: '.tmp_vmlinux1': No such file > No valid symbol. > make: *** [.tmp_kallsyms1.S] Error 1 > Hmm. I've never had such a problem. Check that you have libutil.a in your library path (e.g. /usr/lib/libutil.a). If not, that is most likely causing the error. Depending on your distro, you then have to find where libutil.a is provided. /Samuel |
From: Lee C. <car...@im...> - 2006-09-27 10:15:11
|
Samuel Korpi wrote: > >> > Hmm. I've never had such a problem. Check that you have libutil.a in > your library path (e.g. /usr/lib/libutil.a). If not, that is most > likely causing the error. Depending on your distro, you then have to > find where libutil.a is provided. > > /Samuel > > Embarrassing question time but how do I check my library path? libutil.a is in /usr/lib so I'm guessing it's just a case of adding it there. Thanks, Lee |
From: Samuel K. <str...@gm...> - 2006-09-27 10:48:59
|
On 9/27/06, Lee Cartwright <car...@im...> wrote: > > Embarrassing question time but how do I check my library path? libutil.a > is in /usr/lib so I'm guessing it's just a case of adding it there. > Then it actually should be working already, as to my knowledge /usr/lib is the default search path for libraries. Don't know where it is specified, though. You could try adding LDFLAGS=-L/usr/lib to the kernel Makefile (somewhere below "# Make variables (CC, etc...)" would be a good guess). Other than that, I'm out of ideas. /Samuel |
From: Jeff D. <jd...@ad...> - 2006-09-27 11:38:36
|
On Wed, Sep 27, 2006 at 09:19:18AM +0100, Lee Cartwright wrote: > /usr/bin/ld: cannot find -lutil > collect2: ld returned 1 exit status It'll be looking for libutil.so unless you asked for a static link. Here, it is in both /lib and /usr/lib: /lib/libutil-2.4.so /lib/libutil.so.1 /usr/lib/libutil.a /usr/lib/libutil.so If your distro really has libutil only in /usr/lib, then the place to fix that is this line in arch/um/Makefile: LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib Jeff |
From: Lee C. <car...@im...> - 2006-09-27 11:56:57
|
Jeff Dike wrote: > If your distro really has libutil only in /usr/lib, then the place to fix > that is this line in arch/um/Makefile: > > LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib > > Jeff > Hi Jeff, Here is the libutil info for my system (FC4 for the record). /usr/lib/libutil.a /usr/lib/libutil.so -> ../../lib/libutil.so.1 /lib/libutil.so.1 -> libutil-2.3.5.so /lib/libutil-2.3.5.so So it seems to be in both directories. I changed the line you mentioned, just to be sure, to: LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/usr/lib and I get the same error. I just know this is going to be something very silly that's causing this problem. Thanks for the help so far. Lee |
From: Jeff D. <jd...@ad...> - 2006-09-27 13:34:59
|
On Wed, Sep 27, 2006 at 12:56:48PM +0100, Lee Cartwright wrote: > Here is the libutil info for my system (FC4 for the record). > > /usr/lib/libutil.a > /usr/lib/libutil.so -> ../../lib/libutil.so.1 > /lib/libutil.so.1 -> libutil-2.3.5.so > /lib/libutil-2.3.5.so > > So it seems to be in both directories. I changed the line you mentioned, > just to be sure, to: > > LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/usr/lib You should have added the /usr/lib part, not modified /lib to /usr/lib. But in any case, that's not the problem, so put that back the way it was and add "V=1" to the UML build command and post the failing link command line. Jeff |
From: Lee C. <car...@im...> - 2006-09-27 13:49:30
|
Jeff Dike wrote: > You should have added the /usr/lib part, not modified /lib to /usr/lib. > > But in any case, that's not the problem, so put that back the way it was > and add "V=1" to the UML build command and post the failing link command > line. > > Jeff > > Ah, sorry about that. The tail end of the verbose output is: UPD include/linux/compile.h gcc -Wp,-MD,init/.version.o.d -nostdinc -isystem /home/tools/local/gcc/i686/lib/gcc/i686-pc-linux-gnu/4.0.3/include -D__KERNEL__ -Iinclude -include include/linux/autoconf.h -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Os -D__arch_um__ -DSUBARCH=\"i386\" -Iarch/um/include -I/tmp/uml_test/linux-2.6.18/arch/um/include/skas -Dvmap=kernel_vmap -Din6addr_loopback=kernel_in6addr_loopback -Derrno=kernel_errno -Dsigprocmask=kernel_sigprocmask -Dmktime=kernel_mktime -fno-unit-at-a-time -U__i386__ -Ui386 -march=i686 -mpreferred-stack-boundary=2 -ffreestanding -D_LARGEFILE64_SOURCE -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -Wdeclaration-after-statement -Wno-pointer-sign -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(version)" -D"KBUILD_MODNAME=KBUILD_STR(version)" -c -o init/version.o init/version.c ld -m elf_i386 -r -o init/built-in.o init/main.o init/version.o init/mounts.o init/initramfs.o init/calibrate.o gcc -Wl,-rpath,/lib -Wl,--wrap,malloc -Wl,--wrap,free -Wl,--wrap,calloc -o .tmp_vmlinux1 -Wl,-T,arch/um/kernel/vmlinux.lds init/built-in.o -Wl,--start-group usr/built-in.o arch/um/kernel/built-in.o arch/um/drivers/built-in.o arch/um/os-Linux/built-in.o arch/um/sys-i386/built-in.o arch/i386/crypto/built-in.o kernel/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.o security/built-in.o crypto/built-in.o block/built-in.o lib/lib.a lib/built-in.o drivers/built-in.o sound/built-in.o net/built-in.o -Wl,--end-group -lutil ; rm -f linux /usr/bin/ld: cannot find -lutil collect2: ld returned 1 exit status echo 'cmd_.tmp_vmlinux1 := gcc -Wl,-rpath,/lib -Wl,--wrap,malloc -Wl,--wrap,free -Wl,--wrap,calloc -o .tmp_vmlinux1 -Wl,-T,arch/um/kernel/vmlinux.lds init/built-in.o -Wl,--start-group usr/built-in.o arch/um/kernel/built-in.o arch/um/drivers/built-in.o arch/um/os-Linux/built-in.o arch/um/sys-i386/built-in.o arch/i386/crypto/built-in.o kernel/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.o security/built-in.o crypto/built-in.o block/built-in.o lib/lib.a lib/built-in.o drivers/built-in.o sound/built-in.o net/built-in.o -Wl,--end-group -lutil ; rm -f linux' > ./..tmp_vmlinux1.cmd nm -n .tmp_vmlinux1 | scripts/kallsyms > .tmp_kallsyms1.S nm: '.tmp_vmlinux1': No such file No valid symbol. make: *** [.tmp_kallsyms1.S] Error 1 Thanks, Lee |