Start of topic | Skip to actions
Welcome to the LinuxKernel webARM Linux KernelSummarySystem requirementsSetting up kernel sources Vendor Patchsets Configuration Building the kernel Porting the kernel to a new platform Power Management Additional information System requirementsLinux 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 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 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 Rusty’s pages.Setting up kernel sourcesThe latest sources are available from http://www.kernel.org, you can also use one of the mirror sites. You should read the Changelog file for details on differences between kernel versions. A version of the kernel tested against ARM Ltd. platforms (RealView Versatile and RealView Integrator) is accessible on the following 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. Expand on this once we have the GIT tree and notes on browsing the tree via the web interface.Vendor PatchsetsSome 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 Platform Info page on this site for pointers and information on individual boards.ConfigurationThe 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<arch/arm/configs>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.
Building the kernelThe 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 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 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.Porting the kernel to a new platformThe following page provides information on the main steps to port Linux to a new ARM platform. There are other resources 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.Additional information
| |||||||||||||||||||||||||||||||||