Re: [RFC] x86: document kernel config and build
On Mon, Nov 19, 2007 at 06:33:20PM +0100, Andreas Herrmann wrote: > Hi, > > I suggest to add some documentation snippet to > > Documentation/x86/{kbuild,kconfig,README} > > or whatsoever to primarily describe the new ARCH=x86 build. > As a starter I named it Documentation/x86/kbuild. I would prefer a general document that has a target specific section. Something like Documentation/make/headers_install and your text merged. And the resuting file could be named kernel-build-howto.txt (or similar) and located in Documentation/kbuild/ On top of this we should enhance the arch specific help for x86 to tell how to select bit-size. But I have left that until we unify the 32 and 64 bit Makefiles. I have yet to read your document - too late for that now.. Sam > > The following text is based on my observations with > Linus' git (v2.6.24-rc3-19-g2ffbb83). > Some text was shamelessly stolen from one of Sam's patch > descriptions. > > Comments are welcome. > > > Regards, > > Andreas > > -- > Added documentation about kernel configuration and build for ARCH=x86. > > Signed-off-by: Andreas Herrmann <[EMAIL PROTECTED]> > --- > arch/x86/kbuild | 71 > +++ > 1 files changed, 71 insertions(+), 0 deletions(-) > create mode 100644 arch/x86/kbuild > > diff --git a/arch/x86/kbuild b/arch/x86/kbuild > new file mode 100644 > index 000..7a918a9 > --- /dev/null > +++ b/arch/x86/kbuild > @@ -0,0 +1,71 @@ > +Kernel configuration > + > +The general rule is that ARCH={i386,x86_64} and native > +architecture take precedence over the configuration. > +So make ARCH=i386 [whatever] will always build a 32-bit > +kernel no matter what the configuration says. > +The configuration will be updated to 32-bit if it was > +configured to 64-bit and the other way around: > + > +/=\ > +| Target kernel architecture for | > +| $ make [ARCH=...]| > +|-| > +| option \ host arch | i386 | x86_64 | > +|=| > +| ./. | i386 | x86_64 | > +| ARCH=i386 | i386 | i386 | > +| ARCH=x86_64 | x86_64 | x86_64 | > +\=/ > + > +This behaviour is consistent with previous behaviour so > +no surprises here. > + > +"make ARCH=x86" is special. It is the only ARCH= value that > +allows the user to select between 32-bit and 64-bit using > +menuconfig. This has impact on most config targets. Following > +table shows what kernel will be configured depending on host > +architecture and config-target. > + > +/=\ > +| Target kernel architecture for | > +| $ make ARCH=x86 | > +|-| > +| config-target \ host arch | i386 | x86_64 | > +|=| > +| [menu]config (*1) | i386/x86_64 | i386/x86_64 | > +| {old,silentold}config (*2) | i386/x86_64 | i386/x86_64 | > +| defconfig | i386 | i386| > +| randconfig (*3)| i386/x86_64 | i386/x86_64 | > +| allnoconfig| i386 | i386| > +| allyesconfig | x86_64 | x86_64 | > +| allmodconfig | x86_64 | x86_64 | > +|-| > +| (*1) The default selection equals the host architecture | > +| for new configurations. Otherwise it depends on the | > +| setting of CONFIG_64BIT in the old configuration. | > +|-| > +| (*2) The default selection depends on the setting of| > +| CONFIG_64BIT in the old configuration.| > +|-| > +| (*3) Both configurations are possible. | > +\=/ > + > + > +Cross compilation > + > +(1) To compile a 32-bit kernel on a x86_64 system you have to > +disable 64-bit support in the kernel configuration > +(CONFIG_64BIT=n). > + > +A subsequent kernel compile will build a 32-bit kernel. No > +cross compiler is needed. > + > +(2) To compile a 64-bit kernel on a i386 system you have to switch > +on 64-bit support in the kernel configuration (CONFIG_64BIT=y). > +In the subsequent kernel compile a cross compiler (supporting > +x86_64) is needed. You have to use a command line like > + > +
[RFC] x86: document kernel config and build
Hi, I suggest to add some documentation snippet to Documentation/x86/{kbuild,kconfig,README} or whatsoever to primarily describe the new ARCH=x86 build. As a starter I named it Documentation/x86/kbuild. The following text is based on my observations with Linus' git (v2.6.24-rc3-19-g2ffbb83). Some text was shamelessly stolen from one of Sam's patch descriptions. Comments are welcome. Regards, Andreas -- Added documentation about kernel configuration and build for ARCH=x86. Signed-off-by: Andreas Herrmann <[EMAIL PROTECTED]> --- arch/x86/kbuild | 71 +++ 1 files changed, 71 insertions(+), 0 deletions(-) create mode 100644 arch/x86/kbuild diff --git a/arch/x86/kbuild b/arch/x86/kbuild new file mode 100644 index 000..7a918a9 --- /dev/null +++ b/arch/x86/kbuild @@ -0,0 +1,71 @@ +Kernel configuration + +The general rule is that ARCH={i386,x86_64} and native +architecture take precedence over the configuration. +So make ARCH=i386 [whatever] will always build a 32-bit +kernel no matter what the configuration says. +The configuration will be updated to 32-bit if it was +configured to 64-bit and the other way around: + +/=\ +| Target kernel architecture for | +| $ make [ARCH=...]| +|-| +| option \ host arch | i386 | x86_64 | +|=| +| ./. | i386 | x86_64 | +| ARCH=i386 | i386 | i386 | +| ARCH=x86_64 | x86_64 | x86_64 | +\=/ + +This behaviour is consistent with previous behaviour so +no surprises here. + +"make ARCH=x86" is special. It is the only ARCH= value that +allows the user to select between 32-bit and 64-bit using +menuconfig. This has impact on most config targets. Following +table shows what kernel will be configured depending on host +architecture and config-target. + +/=\ +| Target kernel architecture for | +| $ make ARCH=x86 | +|-| +| config-target \ host arch | i386 | x86_64 | +|=| +| [menu]config (*1) | i386/x86_64 | i386/x86_64 | +| {old,silentold}config (*2) | i386/x86_64 | i386/x86_64 | +| defconfig | i386 | i386| +| randconfig (*3)| i386/x86_64 | i386/x86_64 | +| allnoconfig| i386 | i386| +| allyesconfig | x86_64 | x86_64 | +| allmodconfig | x86_64 | x86_64 | +|-| +| (*1) The default selection equals the host architecture | +| for new configurations. Otherwise it depends on the | +| setting of CONFIG_64BIT in the old configuration. | +|-| +| (*2) The default selection depends on the setting of| +| CONFIG_64BIT in the old configuration.| +|-| +| (*3) Both configurations are possible. | +\=/ + + +Cross compilation + +(1) To compile a 32-bit kernel on a x86_64 system you have to +disable 64-bit support in the kernel configuration +(CONFIG_64BIT=n). + +A subsequent kernel compile will build a 32-bit kernel. No +cross compiler is needed. + +(2) To compile a 64-bit kernel on a i386 system you have to switch +on 64-bit support in the kernel configuration (CONFIG_64BIT=y). +In the subsequent kernel compile a cross compiler (supporting +x86_64) is needed. You have to use a command line like + +$ make CROSS_COMPILE=x86_64-pc-linux-gnu- + +to cross compile your kernel. -- 1.5.3.4 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[RFC] x86: document kernel config and build
Hi, I suggest to add some documentation snippet to Documentation/x86/{kbuild,kconfig,README} or whatsoever to primarily describe the new ARCH=x86 build. As a starter I named it Documentation/x86/kbuild. The following text is based on my observations with Linus' git (v2.6.24-rc3-19-g2ffbb83). Some text was shamelessly stolen from one of Sam's patch descriptions. Comments are welcome. Regards, Andreas -- Added documentation about kernel configuration and build for ARCH=x86. Signed-off-by: Andreas Herrmann [EMAIL PROTECTED] --- arch/x86/kbuild | 71 +++ 1 files changed, 71 insertions(+), 0 deletions(-) create mode 100644 arch/x86/kbuild diff --git a/arch/x86/kbuild b/arch/x86/kbuild new file mode 100644 index 000..7a918a9 --- /dev/null +++ b/arch/x86/kbuild @@ -0,0 +1,71 @@ +Kernel configuration + +The general rule is that ARCH={i386,x86_64} and native +architecture take precedence over the configuration. +So make ARCH=i386 [whatever] will always build a 32-bit +kernel no matter what the configuration says. +The configuration will be updated to 32-bit if it was +configured to 64-bit and the other way around: + +/=\ +| Target kernel architecture for | +| $ make [ARCH=...] config-target | +|-| +| option \ host arch | i386 | x86_64 | +|=| +| ./. | i386 | x86_64 | +| ARCH=i386 | i386 | i386 | +| ARCH=x86_64 | x86_64 | x86_64 | +\=/ + +This behaviour is consistent with previous behaviour so +no surprises here. + +make ARCH=x86 is special. It is the only ARCH= value that +allows the user to select between 32-bit and 64-bit using +menuconfig. This has impact on most config targets. Following +table shows what kernel will be configured depending on host +architecture and config-target. + +/=\ +| Target kernel architecture for | +| $ make ARCH=x86 config-target | +|-| +| config-target \ host arch | i386 | x86_64 | +|=| +| [menu]config (*1) | i386/x86_64 | i386/x86_64 | +| {old,silentold}config (*2) | i386/x86_64 | i386/x86_64 | +| defconfig | i386 | i386| +| randconfig (*3)| i386/x86_64 | i386/x86_64 | +| allnoconfig| i386 | i386| +| allyesconfig | x86_64 | x86_64 | +| allmodconfig | x86_64 | x86_64 | +|-| +| (*1) The default selection equals the host architecture | +| for new configurations. Otherwise it depends on the | +| setting of CONFIG_64BIT in the old configuration. | +|-| +| (*2) The default selection depends on the setting of| +| CONFIG_64BIT in the old configuration.| +|-| +| (*3) Both configurations are possible. | +\=/ + + +Cross compilation + +(1) To compile a 32-bit kernel on a x86_64 system you have to +disable 64-bit support in the kernel configuration +(CONFIG_64BIT=n). + +A subsequent kernel compile will build a 32-bit kernel. No +cross compiler is needed. + +(2) To compile a 64-bit kernel on a i386 system you have to switch +on 64-bit support in the kernel configuration (CONFIG_64BIT=y). +In the subsequent kernel compile a cross compiler (supporting +x86_64) is needed. You have to use a command line like + +$ make CROSS_COMPILE=x86_64-pc-linux-gnu- + +to cross compile your kernel. -- 1.5.3.4 - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [RFC] x86: document kernel config and build
On Mon, Nov 19, 2007 at 06:33:20PM +0100, Andreas Herrmann wrote: Hi, I suggest to add some documentation snippet to Documentation/x86/{kbuild,kconfig,README} or whatsoever to primarily describe the new ARCH=x86 build. As a starter I named it Documentation/x86/kbuild. I would prefer a general document that has a target specific section. Something like Documentation/make/headers_install and your text merged. And the resuting file could be named kernel-build-howto.txt (or similar) and located in Documentation/kbuild/ On top of this we should enhance the arch specific help for x86 to tell how to select bit-size. But I have left that until we unify the 32 and 64 bit Makefiles. I have yet to read your document - too late for that now.. Sam The following text is based on my observations with Linus' git (v2.6.24-rc3-19-g2ffbb83). Some text was shamelessly stolen from one of Sam's patch descriptions. Comments are welcome. Regards, Andreas -- Added documentation about kernel configuration and build for ARCH=x86. Signed-off-by: Andreas Herrmann [EMAIL PROTECTED] --- arch/x86/kbuild | 71 +++ 1 files changed, 71 insertions(+), 0 deletions(-) create mode 100644 arch/x86/kbuild diff --git a/arch/x86/kbuild b/arch/x86/kbuild new file mode 100644 index 000..7a918a9 --- /dev/null +++ b/arch/x86/kbuild @@ -0,0 +1,71 @@ +Kernel configuration + +The general rule is that ARCH={i386,x86_64} and native +architecture take precedence over the configuration. +So make ARCH=i386 [whatever] will always build a 32-bit +kernel no matter what the configuration says. +The configuration will be updated to 32-bit if it was +configured to 64-bit and the other way around: + +/=\ +| Target kernel architecture for | +| $ make [ARCH=...] config-target | +|-| +| option \ host arch | i386 | x86_64 | +|=| +| ./. | i386 | x86_64 | +| ARCH=i386 | i386 | i386 | +| ARCH=x86_64 | x86_64 | x86_64 | +\=/ + +This behaviour is consistent with previous behaviour so +no surprises here. + +make ARCH=x86 is special. It is the only ARCH= value that +allows the user to select between 32-bit and 64-bit using +menuconfig. This has impact on most config targets. Following +table shows what kernel will be configured depending on host +architecture and config-target. + +/=\ +| Target kernel architecture for | +| $ make ARCH=x86 config-target | +|-| +| config-target \ host arch | i386 | x86_64 | +|=| +| [menu]config (*1) | i386/x86_64 | i386/x86_64 | +| {old,silentold}config (*2) | i386/x86_64 | i386/x86_64 | +| defconfig | i386 | i386| +| randconfig (*3)| i386/x86_64 | i386/x86_64 | +| allnoconfig| i386 | i386| +| allyesconfig | x86_64 | x86_64 | +| allmodconfig | x86_64 | x86_64 | +|-| +| (*1) The default selection equals the host architecture | +| for new configurations. Otherwise it depends on the | +| setting of CONFIG_64BIT in the old configuration. | +|-| +| (*2) The default selection depends on the setting of| +| CONFIG_64BIT in the old configuration.| +|-| +| (*3) Both configurations are possible. | +\=/ + + +Cross compilation + +(1) To compile a 32-bit kernel on a x86_64 system you have to +disable 64-bit support in the kernel configuration +(CONFIG_64BIT=n). + +A subsequent kernel compile will build a 32-bit kernel. No +cross compiler is needed. + +(2) To compile a 64-bit kernel on a i386 system you have to switch +on 64-bit support in the kernel configuration (CONFIG_64BIT=y). +In the subsequent kernel compile a cross compiler (supporting +x86_64) is needed. You have to use a command line like + +$ make CROSS_COMPILE=x86_64-pc-linux-gnu- + +to cross compile your