lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20071119173320.GB11309@alberich.amd.com>
Date:	Mon, 19 Nov 2007 18:33:20 +0100
From:	"Andreas Herrmann" <andreas.herrmann3@....com>
To:	"Sam Ravnborg" <sam@...nborg.org>,
	"H. Peter Anvin" <hpa@...or.com>,
	"Thomas Gleixner" <tglx@...utronix.de>,
	"Ingo Molnar" <mingo@...hat.com>
cc:	"LKML" <linux-kernel@...r.kernel.org>
Subject: [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 <andreas.herrmann3@....com>
---
 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 0000000..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 majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ