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: