Discussion:
x86_64_defconfig and i386_defconfig: What is the difference?
Rajat Jain
2014-09-09 07:58:49 UTC
Permalink
Hi,

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?

Thanks,

Rajat
V***@vt.edu
2014-09-09 13:21:23 UTC
Permalink
Post by Rajat Jain
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?
I wouldn't run either one on an actual machine. Defconfigs are *example*
configs, only useful as a template for customizing for actual hardware.
Paul Bolle
2014-09-09 14:19:54 UTC
Permalink
Post by V***@vt.edu
Post by Rajat Jain
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?
I wouldn't run either one on an actual machine. Defconfigs are *example*
configs, only useful as a template for customizing for actual hardware.
It is probably easiest to take the .config file of the latest kernel of
the distribution you are using as a starting point. In that case you
know that this starting point at least works on your machine.

(I remember seeing tutorials that show you how to generate a .config
from scratch. I wonder whether anyone actually does that. It should be
quite a bit of work for an uncertain outcome. Ie, you might end up
trying quite a few configurations before hitting one that works
reasonably for your machine.)

Hope this helps,


Paul Bolle

--
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs
V***@vt.edu
2014-09-09 14:26:27 UTC
Permalink
Post by Paul Bolle
(I remember seeing tutorials that show you how to generate a .config
from scratch. I wonder whether anyone actually does that.
Distros did that originally. Now they just keep delta'ing their
known-working config. The pain involved was part of why localmodconfig
and friends were created....
Matthias Brugger
2014-09-09 14:06:07 UTC
Permalink
Post by Rajat Jain
Hi,
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.

Cheers,
Matthias

[0] http://kernelnewbies.org/FAQ/KernelCrossCompilation
Post by Rajat Jain
Thanks,
Rajat
_______________________________________________
Kernelnewbies mailing list
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
--
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs
V***@vt.edu
2014-09-09 14:27:53 UTC
Permalink
Post by Matthias Brugger
Post by Rajat Jain
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.
Abreu, Ian
2014-09-09 14:34:43 UTC
Permalink
To add to this, if you're trying to compile a kernel to work for a specific
platform or board and it's not working, 'make menuconfig' is your friend for
taking a bare bones kernel .config and making it your own.



-----Original Message-----
From: linux-newbie-***@vger.kernel.org
[mailto:linux-newbie-***@vger.kernel.org] On Behalf Of
***@vt.edu
Sent: Tuesday, September 09, 2014 10:28 AM
To: Matthias Brugger
Cc: Rajat Jain; linux-***@vger.kernel.org; kernelnewbies
Subject: Re: x86_64_defconfig and i386_defconfig: What is the difference?
Post by Matthias Brugger
Post by Rajat Jain
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?
Post by Matthias Brugger
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.
Rajat Jain
2014-09-09 15:11:00 UTC
Permalink
Hi,
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
#
# 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"
...
#
# 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-----
Sent: Tuesday, September 09, 2014 7:28 AM
To: Matthias Brugger
Subject: Re: x86_64_defconfig and i386_defconfig: What is the difference?
Post by Matthias Brugger
Post by Rajat Jain
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.
--
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs
Hubert CHAUMETTE
2014-09-09 15:28:36 UTC
Permalink
Post by Rajat Jain
Hi,
Hello Rajat,
Indeed, the i386 is for 32bits kernels, and x86_64 for 64 bits ones.=
If you
Post by Rajat Jain
generate the configurations using "make ARCH=3Dx86 defconfig" and "m=
ake
Post by Rajat Jain
ARCH=3Di386 defconfig", you can easily compare the resulting configu=
#
# Automatically generated file; DO NOT EDIT.
# Linux/i386 3.17.0-rc1 Kernel Configuration # # CONFIG_64BIT is not=
set
Post by Rajat Jain
CONFIG_X86_32=3Dy CONFIG_X86=3Dy CONFIG_INSTRUCTION_DECODER=3Dy
CONFIG_OUTPUT_FORMAT=3D"elf32-i386"
CONFIG_ARCH_DEFCONFIG=3D"arch/x86/configs/i386_defconfig"
...
#
# Automatically generated file; DO NOT EDIT.
# Linux/x86 3.17.0-rc1 Kernel Configuration # CONFIG_64BIT=3Dy
CONFIG_X86_64=3Dy CONFIG_X86=3Dy CONFIG_INSTRUCTION_DECODER=3Dy
CONFIG_OUTPUT_FORMAT=3D"elf64-x86-64"
CONFIG_ARCH_DEFCONFIG=3D"arch/x86/configs/x86_64_defconfig"
...
As you can see, i386 is the 32 bits variant of the x86 architecture.=
There are of
Post by Rajat Jain
course many more differences between these two configurations.
Regards,
Hubert
Thanks all again,
Rajat
-----Original Message-----
Sent: Tuesday, September 09, 2014 7:28 AM
To: Matthias Brugger
Subject: Re: x86_64_defconfig and i386_defconfig: What is the differ=
ence?
Post by Rajat Jain
Post by Rajat Jain
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?
Post by Rajat Jain
You can build the kernel with any architecture for any architecture=
=2E
Post by Rajat Jain
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 targe=
t machine,
Post by Rajat Jain
which is what I think Rajat was asking about.
A defconfig is usually only known verified to boot on a few (possibl=
y one)
Post by Rajat Jain
examples of that architecture hardware. For embedded ARM, it may be=
one
Post by Rajat Jain
specific development board or hardware device. For x86, I think the=
y try to
Post by Rajat Jain
keep it "will probably kind of sort of boot on generic PC hardware w=
ith a
Post by Rajat Jain
common distro, but anything fancylike a webcam or better graphics th=
an "vga
Post by Rajat Jain
tty emulation" may not work".
A defconfig is pretty much just a proof of concept starting point fo=
r an actual
Post by Rajat Jain
working config for a given hardware system.
--
To unsubscribe from this list: send the line "unsubscribe linux-newbi=
e" in
Post by Rajat Jain
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs
Sorry, I mistakenly replied only to the OP.
--
To unsubscribe from this list: send the line "unsubscribe linux-newbie"=
in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs
Rajat Jain
2014-09-09 17:51:43 UTC
Permalink
Hi,
Post by Abreu, Ian
-----Original Message-----
Sent: Tuesday, September 09, 2014 7:28 AM
To: Matthias Brugger
Subject: Re: x86_64_defconfig and i386_defconfig: What is the difference?
Post by Matthias Brugger
Post by Rajat Jain
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.
Right.

I'm trying to generate x86 images for someone else to test, who's going to test it on a standard / generic x86 machine:

https://lkml.org/lkml/2014/9/9/35

What I was not sure is that which config should I use to generate an image for a "standard x86 machine". Now I do understand (I provided him 2 images - 1 for the 32 bit (using i386_defconfig) and another for 64 bit (using x86_64_defconfig).

Thanks,

Rajat
Post by Abreu, Ian
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.
--
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs
Peter Teoh
2014-09-13 01:10:28 UTC
Permalink
Post by Rajat Jain
Hi,
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?
i386 or 32-bit machines? i think it don't exists anymore, but what likely
is correct: i386-compatible machine.

The i386 config is for 32-bit OS, ie, the entire binaries must be build for
32-bit architecture.

So choose the correct config provided u have the correct userspace
files/libraries to support it.
Post by Rajat Jain
Thanks,
Rajat
_______________________________________________
Kernelnewbies mailing list
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
--
Regards,
Peter Teoh
Rajat Jain
2014-09-13 03:44:43 UTC
Permalink
Thanks,

One more question. Can I continue to use my same 64bit compiler when compiling images for both?

In the other words, Are both of these ok?

Make CROSS_COMPILE=my-compiler-path- i386_defconfig
Make CROSS_COMPILE=my-compiler-path- all

Make CROSS_COMPILE=my-compiler-path- x86_64_defconfig
Make CROSS_COMPILE=my-compiler-path- all

Where my-compiler-path is the gcc compiler that I use to generate 64 bit code.

Thanks,

Rajat


From: Peter Teoh [mailto:***@gmail.com]
Sent: Friday, September 12, 2014 6:10 PM
To: Rajat Jain
Cc: linux-***@vger.kernel.org; kernelnewbies
Subject: Re: x86_64_defconfig and i386_defconfig: What is the difference?



On Tue, Sep 9, 2014 at 3:58 PM, Rajat Jain <***@juniper.net<mailto:***@juniper.net>> wrote:
Hi,

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?


i386 or 32-bit machines? i think it don't exists anymore, but what likely is correct: i386-compatible machine.

The i386 config is for 32-bit OS, ie, the entire binaries must be build for 32-bit architecture.

So choose the correct config provided u have the correct userspace files/libraries to support it.


Thanks,

Rajat

_______________________________________________
Kernelnewbies mailing list
***@kernelnewbies.org<mailto:***@kernelnewbies.org>
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
--
Regards,
Peter Teoh
Loading...