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.