# UML being extremely not nice

## NotCourse6

So I tried following the Gentoo documentation on installing user mode linux with no avail.  First, I tried using usermode-sources 2.6.12, which failed the first time around.  I can't remember what errors I incurred, but they're irrelevant right now.  Next, I tried using vanilla-sources, being sure to create a symlink from /usr/src/linux/include/asm -> asm-um.  That tidbit was on the UML wiki but not the Gentoo doc.  Regardless, make linux ARCH=um began to compile until the line LD .tmp_vmlinux1, where it promptly halted.  It claimed that it could not find the file, which, sure enough, was not in the /usr/src/linux folder.  After being unable to determine the cause and generally getting nowhere with the #uml channel over IRC, I once again tried to use usermode-sources 2.6.12 and follow the Gentoo docs.  My current problem is this:

|42| /usr/src/linux make linux ARCH=um

  CHK     include/linux/version.h

make[1]: `arch/um/sys-i386/util/mk_sc' is up to date.

  CHK     arch/um/include/skas_ptregs.h

  CHK     arch/um/include/sysdep-i386/sc.h

  HOSTCC  arch/um/util/mk_constants_kern.o

In file included from include/linux/posix_types.h:47,                                           *Note: this is where the trouble begins*

                 from include/linux/types.h:13,

                 from include/linux/kernel.h:13,

                 from arch/um/util/mk_constants_kern.c:1:

include/asm/posix_types.h:4:34: include/asm/asm/arch/posix_types.h: Too many levels of symbolic links

In file included from include/linux/types.h:14,

                 from include/linux/kernel.h:13,

                 from arch/um/util/mk_constants_kern.c:1:

include/asm/types.h:4:28: include/asm/asm/arch/types.h: Too many levels of symbolic links

In file included from include/linux/kernel.h:13,

                 from arch/um/util/mk_constants_kern.c:1:

include/linux/types.h:18: error: parse error before "__kernel_dev_t"

include/linux/types.h:18: warning: type defaults to `int' in declaration of `__kernel_dev_t'

include/linux/types.h:18: warning: data definition has no type or storage class

This set of errors continues with a series of libraries in the /usr/src/linux/include/linux/ folder, concluding with the fragment:

include/linux/time.h:144: error: field `it_value' has incomplete type

include/linux/time.h:148: error: field `it_interval' has incomplete type

include/linux/time.h:149: error: field `it_value' has incomplete type

make[1]: *** [arch/um/util/mk_constants_kern.o] Error 1

make: *** [arch/um/util] Error 2

Delicious, isn't it?  Can anyone help me understand what's going on?  Why is the compiler having such troubles with the libraries?

----------

## dgaffuri

Maybe your problem is the symlink itself. No problem at all for me with 2.6.12 vanilla (without symlink). Which version of gcc do you use? Note that is not necessary (nor desired) to change /usr/src/linux to point to um sources.

----------

## NotCourse6

gcc version: i686-pc-linux-gnu-3.4.4.  The symlink is in /usr/src/linux/include, and is between the files asm and asm-um (the former pointing to the latter).  As I understood it, the UML "how to" documentation requires this step.  Perhaps if i delete the symlink?  Let's try that right now...

Nope, same set of errors.  It goes crazy after the HOSTCC line.

----------

## dgaffuri

Could be your compiler

```
i686-pc-linux-gnu-3.4.4
```

It worked for me with i686-pc-linux-gnu-3.3.5-20050130, I'm installing 3.4.3 but I've not compiled neither the host kernel nor the UM one with it.  I'm just guessing.

----------

## NotCourse6

That's annoying.  I would expect the latest compiler to be able to handle the latest user mode kernel.  So does this mean that I'll have to downgrade my compiler in order to get usermode-sources working?

----------

## dgaffuri

As I said before, I'm just guessing.

----------

