You are visiting this site as:
WikiGuest
Users
Home
Boot Loader
Development Tools
File Systems
Kernels
Platforms
Reference
You are here:
LinuxKernel Web
>
WebHome
(revision 26) (raw view)
---+!! %MAKETEXT{"Welcome to the [_1] web" args="<nop>%WEB%"}% ---++ ARM Linux Kernel ---+++ Summary [[#System_requirements][System requirements]] <br /> [[#Setting_up_kernel_sources][Setting up kernel sources]] <br /> [[#Vendor_Patchsets][Vendor Patchsets]] <br /> [[#Configuration][Configuration]] <br /> [[#Building_the_kernel][Building the kernel]] <br /> [[#NewPlatform][Porting the kernel to a new platform]] <br /> [[#LinuxAndroid][Android Platform]] <br /> [[http://www.linux-arm.org/LinuxKernel/PowerManagement][Power Management]] <br /> [[http://www.resumesplanet.com][Resume services]] ---+++ System requirements Linux kernel sources will use anywhere from 40Mb to 80Mb of file system space on the host development platform. On the target platform, the binary kernel image and included modules should require in the order of 2Mb, depending on functionality selected when configuring the kernel. You will need to have suitable versions of the [[http://gcc.gnu.org/][GNU compiler]] and other tools used to configure and build the kernel (make etc.). You can find more information on the development tools on the following LinuxDevTools.WebHome page. Note that with the 2.6.x kernels you need a more recent version of _module-init-tools_ package. More information on these tools is available on [[http://ftp.kernel.org/pub/linux/kernel/people/rusty/modules/][Rusty's pages]]. ---+++ Setting up kernel sources The latest sources are available from [[http://www.kernel.org][http://www.kernel.org]], you can also use one of the [[http://www.kernel.org/mirrors][mirror sites]]. You should read the Changelog file for details on differences between kernel versions.It is recommended that new development, i.e. any work liable to result in a set of patches, be based against this tree or the git <a target="_blank" href="http://git.kernel.org/linus">http://git.kernel.org/linus</a>. A version of the kernel tested against ARM Ltd. platforms ([[http://www.arm.com/products/DevTools/Hardware_Platforms.html][RealView Versatile]] and [[http://www.arm.com/products/DevTools/Hardware_Platforms.html][RealView Integrator]]) is accessible on the following [[http://www.arm.com/linux][pages]]. Sources and binaries on this page are updated against successive releases of the main kernel.org tree, and may contain changes that have not yet been integrated into the main tree. ARM kernel patches which have not yet been merged upstream (or are in the review process) are available from the following http://www.linux-arm.org/git GIT tree. Patches are submitted both to the kernel main tree and to the [[http://git.linaro.org/gitweb?p=kernel/linux-linaro-2.6.35.git][linaro kernel tree]]. ARM kernel patches may be present in the linaro tree before acceptance into the main kernel tree. ---+++ Vendor Patchsets Some vendors that sell chips with embedded ARM cores have associated patches available for specific versions of the Linux kernel. Typically you apply these by unpacking the kernel, changing directory into the unpacked kernel and executing something like 'patch -p1 </path/to/patchfile.patch' Please, refer to the [[LinuxPlatform/WebHome][Platform Info]] page on this site for pointers and information on individual boards. ---+++ Configuration The configuration process allows users to select features to be included in the kernel image. This usually requires knowledge of the hardware platform and environment you will use to run Linux. Current kernels have graphical configuration utilities and usually provide help sections for most of the configuration options. All the selected options are kept in a _.config_ file located at the base of your source tree. Make sure that you backup existing _.config_ file before it is being edited and modified by any configuration utility. If you are using a distribution from a vendor, the default configuration files are usually included in the <verbatim><arch/arm/configs></verbatim> or a dedicated directory. You can use these configuration files as a starting point for your customisations. With 2.6.x kernels there are few main front-end programs which can be used to configure the kernel: _config_, _oldconfig_, _menuconfig_, and _xconfig_. * _config_ presents a series of questions to be answered sequentially. In case of error, you must begin the process from the beginning. Pressing <Enter> will accept the default entry (usually labelled in upper case). * _oldconfig_ read the defaults from an existing _.config_ and rewrite necessary links and files. Use this option if you've made minor changes to source files or need to script the rebuild process. * _menuconfig_ is a front-end based on _ncurses_. Make sure that you have _ncurses_ libraries installed on you host platform to use this utility. Use the arrow keys to navigate the menu. Press <Enter> to select sub-menus. Press the highlighted letter on each option to jump directly to that option. To build an option directly into the kernel, press <Y>. To disable an option entirely, press <N>. To build an option as a loadable module, press <M>. You can also access content-specific help screens by pressing <?> on each page or selecting <<nop>HELP> from the lower menu. * _xconfig_ is a graphical front-end using [[http://www.xs4all.nl/~zippel/lc/][qconf]] by Roman Zippel and provide a more intuitive and customizable interface. It requires the Qt and X libraries to build and use. An online help is automatically displayed for each kernel configuration option and dependencies for each module is also displayed (c.f. _qconf_ snapshot below). %ATTACHURL%/qconf.jpg ---+++ Building the kernel The kernel is built by doing a 'make Image' or 'make bzImage'. The resulting kernel image should be in the _arch/arm/boot_ directory. You can use these images to load them either in RAM or Flash memory to be executed. The build process also produces a _vmlinux_ file is which contains debugging information associated to the kernel image. This file can be loaded from a debugger (when or after the kernel starts its execution) to perform symbolic debug. The Linux kernel assumes that the boot loader has initialised the platform and stored identification of the [[http://www.arm.linux.org.uk/developer/machines/][platform ID]] (cf. _arch/arm/tools/mach-types_ in the kernel tree) and boot parameters in specific registers. The platform number is needed by the kernel before starting its execution and the <nop>CMDLINE should also be set by the boot loader. When starting the kernel directly from a debugger, these register values need to be set from within the debugger. #NewPlatform ---+++ Porting the kernel to new platforms The following [[LinuxNewPlatformPort][page]] provides information on the main steps to port Linux to a new ARM platform. Additional resources are referenced on this site/page in the community detailing some of these steps. This is by no means complete so feel free to add more information as appropriate. #LinuxAndroid ---+++ Building Linux for Android platforms The following [[LinuxAndroidPlatform][page ]] describes the various steps to build Android for ARM RealView platforms. ---+++ Additional information * [[http://lwn.net/Kernel/LDD3/][Linux Device Drivers]] Third Edition, by Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman. * [[http://www.skynet.ie/~mel/projects/vm/][Mel Gorman]]'s book: "[[%ATTACHURL%/gorman_linux_vm.pdf][Understanding the Linux Virtual Memory Manager]]". * [[http://www.opersys.com/quickref.html][Opersys]] provide some note on building Linux systems. * The following [[http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html][link]] provides some documentation on how to build kernels. * [[http://www.chaos.org.uk/~wookey/][Wookey]] published the following [[%ATTACHURL%/aleph-porting.pdf][document]] describing how to port the Linux kernel to a new ARM based platform. * Document on Memory Barriers: [[http://infocenter.arm.com/help/topic/com.arm.doc.genc007826/Barrier_Litmus_Tests_and_Cookbook_A08.pdf][PDF]] There is also additional information in other sections of this Wiki: LinuxDevTools.WebHome
? Attachments
? Attachments
Topic attachments
I
Attachment
Action
Size
Date
Who
Comment
pdf
aleph-porting.pdf
manage
122.3 K
07 Feb 2006 - 11:28
PhilippeRobin
pdf
gorman_linux_vm.pdf
manage
8515.2 K
07 Feb 2006 - 11:37
PhilippeRobin
jpg
qconf.jpg
manage
42.4 K
20 Jan 2006 - 13:46
PhilippeRobin
E
dit
|
A
ttach
|
P
rint version
|
H
istory
: r26
<
r25
<
r24
<
r23
<
r22
|
B
acklinks
|
V
iew topic
|
Ra
w
edit
|
M
ore topic actions
Toolbar
Create New Topic
Index
Search
Changes
Notifications
Statistics
Preferences
Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki?
Send feedback
zenweb1 : 0.12 secs
More Info