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

Re: Compiling Linux kernel



On 2009-12-23 11:07 +0100, Daniel Bareiro wrote:

> Reading [1] and [2], I already found the cause of this problem. The
> configuration in "Executable file formats / Emulations" must be the
> following one in order to use a kernel x86_64 in userland 32.
>
> [*] Kernel support for ELF binaries
> [ ] Write ELF core dumps with partial segments
> <M> Kernel support for MISC binaries
> [*] IA32 Emulation

Now that you mention it, I recall that this isn't set up automatically
when you come from a 32-bit configuration.

> b) Debian way compilation:
>
> b.1) Having booted an i386 kernel and userland 32:
>
> # cp /boot/config-`uname -r` ./.config
>
> # make ARCH=x86_64 menuconfig
>
> # fakeroot make-kpkg clean --cross-compile - -arch amd64
>
> # fakeroot make-kpkg --initrd --cross-compile - -arch amd64 \
>   --append-to-version=-dgb kernel_image kernel_headers
>
>
> It does not present questions during "make" and it boots ok enabling the
> options mentioned above.
>
> Another thing that I have noticed is that the packages are generated
> with a suffix i386, although after boot the kernel is x86_64:
>
> linux-headers-2.6.32-dgb_2.6.32-dgb-10.00.Custom_i386.deb
> linux-image-2.6.32-dgb_2.6.32-dgb-10.00.Custom_i386.deb

Yes, because you are building on i386 (as in
"dpkg --print-architecture").  This is what you want, BTW.

> b.2) Having booted an amd64 kernel and userland 32:
>
> # cp /boot/config-`uname -r` ./.config
>
> # make menuconfig
>
> # fakeroot make-kpkg clean
>
> # fakeroot make-kpkg --initrd --append-to-version=-dgb kernel_image \
>   kernel_headers

You still need to specify --cross-compile and --arch here.

Sven


Reply to: