Thread (4 messages) 4 messages, 3 authors, 2014-09-09

x86_64_defconfig and i386_defconfig: What is the difference?

From: Rajat Jain <hidden>
Date: 2014-09-09 15:11:00

Hi,

Thank you all for your responses. I got the answer I was looking for:
Hello Rajat,

Indeed, the i386 is for 32bits kernels, and x86_64 for 64 bits ones. If you
generate the configurations using "make ARCH=x86 defconfig" and "make
ARCH=i386 defconfig", you can easily compare the resulting configurations :

.config from i386_defconfig :
#
# Automatically generated file; DO NOT EDIT.
# Linux/i386 3.17.0-rc1 Kernel Configuration # # CONFIG_64BIT is not set
CONFIG_X86_32=y CONFIG_X86=y CONFIG_INSTRUCTION_DECODER=y
CONFIG_OUTPUT_FORMAT="elf32-i386"
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
...

.config from x86_64_defconfig :
#
# Automatically generated file; DO NOT EDIT.
# Linux/x86 3.17.0-rc1 Kernel Configuration # CONFIG_64BIT=y
CONFIG_X86_64=y CONFIG_X86=y CONFIG_INSTRUCTION_DECODER=y
CONFIG_OUTPUT_FORMAT="elf64-x86-64"
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
...

As you can see, i386 is the 32 bits variant of the x86 architecture. There are of
course many more differences between these two configurations.

Regards,

Hubert
Thanks all again,

Rajat

-----Original Message-----
From: Valdis.Kletnieks at vt.edu [mailto:Valdis.Kletnieks at vt.edu]
Sent: Tuesday, September 09, 2014 7:28 AM
To: Matthias Brugger
Cc: Rajat Jain; linux-newbie at vger.kernel.org; kernelnewbies
Subject: Re: x86_64_defconfig and i386_defconfig: What is the difference?

On Tue, 09 Sep 2014 16:06:07 +0200, Matthias Brugger said:
quoted
quoted
Can someone tell me if the i386 one is to be used when we want to
build for a 32bit machine and the x86_64 is to be used for 64 bit machine?
You can build the kernel with any architecture for any architecture.
This is called cross-compiling. The homepage [0] should explain you
how to do that.
Right, but you still need to use a .config appropriate for the target machine,
which is what I think Rajat was asking about.

A defconfig is usually only known verified to boot on a few (possibly one)
examples of that architecture hardware.  For embedded ARM, it may be one
specific development board or hardware device.  For x86, I think they try to
keep it "will probably kind of sort of boot on generic PC hardware with a
common distro, but anything fancylike a webcam or better graphics than "vga
tty emulation" may not work".

A defconfig is pretty much just a proof of concept starting point for an actual
working config for a given hardware system.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help