x86_64_defconfig and i386_defconfig: What is the difference?

Rajat Jain rajatjain at juniper.net
Tue Sep 9 11:11:00 EDT 2014


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:
> 
> > > 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.



More information about the Kernelnewbies mailing list