jornada720_defconfig       - Build for jornada720

  lart_defconfig             - Build for lart

  lpd7a400_defconfig         - Build for lpd7a400

  lpd7a404_defconfig         - Build for lpd7a404

  lubbock_defconfig          - Build for lubbock

lusl7200_defconfig         - Build for lusl7200

  mainstone_defconfig        - Build for mainstone

  mx1ads_defconfig           - Build for mx1ads

  neponset_defconfig         - Build for neponset

  netwinder_defconfig        - Build for netwinder

  omap_h2_1610_defconfig     - Build for omap_h2_1610

  pleb_defconfig             - Build for pleb

  poodle_defconfig           - Build for poodle

  pxa255-idp_defconfig       - Build for pxa255-idp

  rpc_defconfig              - Build for rpc

  s3c2410_defconfig          - Build for s3c2410

  shannon_defconfig          - Build for shannon

  shark_defconfig            - Build for shark

  simpad_defconfig           - Build for simpad

  smdk2410_defconfig         - Build for smdk2410

  spitz_defconfig            - Build for spitz

  versatile_defconfig        - Build for versatile

  make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build

  make O=dir [targets] Locate all output files in 'dir', including .config

  make C=1   [targets] Check all c source with $CHECK (sparse)

  make C=2   [targets] Force check of all c source with $CHECK (sparse)

Execute 'make' or 'make all' to build all targets marked with [*]

For further info see the ./README file

Many of these targets you might never use. However, it is useful to know that they exist. As you can see from Listing 4-7, the targets listed with an asterisk are built by default. Notice the numerous default configurations, listed as *_defconfig. Recall from Section 4.2.2, 'Compiling the Kernel,' the command we used to preconfigure a pristine kernel source tree: We invoked make with an architecture and a default configuration. The default configuration was ixp4xx_defconfig, which appears in this list of ARM targets. This is a good way to discover all the default configurations available for a particular kernel release and architecture.

4.3.4. Kernel Configuration

Kconfig (or a file with a similar root followed by an extension, such as Kconfig. ext) exists in almost 300 kernel subdirectories. Kconfig drives the configuration process for the features contained within its subdirectory. The contents of Kconfig are parsed by the configuration subsystem, which presents configuration choices to the user, and contains help text associated with a given configuration parameter.

The configuration utility (such as gconf, presented earlier) reads the Kconfig files starting from the arch subdirectory's Kconfig file. It is invoked from the Kconfig makefile with an entry that looks like this:

gconfig: $(obj)/gconf

        $< arch/$(ARCH)/Kconfig

Depending on which architecture you are building, gconf reads this architecture-specific Kconfig as the top-level configuration definition. Contained within Kconfig are a number of lines that look like this:

source 'drivers/pci/Kconfig'

This directive tells the configuration editor utility to read in another Kconfig file from another location within the kernel source tree. Each architecture contains many such Kconfig files; taken together, these determine the complete set of menu options presented to the user when configuring the kernel. Each Kconfig file is free to source additional Kconfig files in different parts of the source tree. The configuration utility gconf, in this case, recursively reads the Kconfig file chain and builds the configuration menu structure.

Listing 4-8 is a partial tree view of the Kconfig files associated with the ARM architecture. In a recent Linux 2.6 source tree from which this example was taken, the kernel configuration was defined by 170 separate Kconfig files. This listing omits most of those, for the sake of space and claritythe idea is to show the overall structure. To list them all in this tree view would take several pages of this text.

Listing 4-8. Partial Listing of Kconfig for ARM Architecture

arch/arm/Kconfig <<<<<< (top level Kconfig)

|->  init/Kconfig

|  ...

|->  arch/arm/mach-iop3xx/Kconfig

|->  arch/arm/mach-ixp4xx/Kconfig

|    ...

|->  net/Kconfig

|    |->  net/ipv4/Kconfig

|    |     |->  net/ipv4/ipvs/Kconfig

|    ...

|->  drivers/char/Kconfig

|    |->  drivers/serial/Kconfig

|    ...

|->  drivers/usb/Kconfig

|    |->  drivers/usb/core/Kconfig

|    |->  drivers/usb/host/Kconfig

| ...

|->  lib/Kconfig

Looking at Listing 4-8, the file arch/arm/Kconfig would contain a line like this:

source 'net/Kconfig'

The file net/Kconfig would contain a line like this:

source 'net/ipv4/Kconfig'

…and so on.

As mentioned earlier, these Kconfig files taken together determine the configuration menu structure and configuration options presented to the user during kernel configuration. Figure 4-3 is an example of the configuration utility (gconf) for the ARM architecture compiled from the example in Listing 4-8.

Figure 4-3. gconf configuration screen

4.3.5. Custom Configuration Options

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату