Menuconfig
Encyclopedia
make menuconfig is one of three tools (actually four starting with kernel 2.6.35; there is a new option: make nconfig that is similar to menuconfig) that can configure the Linux kernel
Linux kernel
The Linux kernel is an operating system kernel used by the Linux family of Unix-like operating systems. It is one of the most prominent examples of free and open source software....

 source, a necessary early step needed to compile the source code. make menuconfig, with a convenient menu-driven user-interface, allows the user to choose the features of the Linux kernel
Linux kernel
The Linux kernel is an operating system kernel used by the Linux family of Unix-like operating systems. It is one of the most prominent examples of free and open source software....

 (and other options) that will be compiled. It is normally invoked using the command make menuconfig, menuconfig is a target in the Linux kernel Makefile.

History

make menuconfig was not in the first version of Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

. The predecessor tool is a question-and-answer-based utility (make config, make oldconfig). A third tool for Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

 configuration is make xconfig
Xconfig
xconfig is short for the 'xconfig' target for the Linux Makefile. It is a graphical Linux compilation utility, which uses Qt. The xconfig utility is invoked by running 'make xconfig' in the base Linux source directory....

, which requires X
X Window System
The X window system is a computer software system and network protocol that provides a basis for graphical user interfaces and rich input device capability for networked computers...

.

Advantages over earlier versions

Despite being a simple design, make menuconfig offers considerable advantages to the question-and-answer-based configuration tool, the most notable being a basic search system and the ability to load and save files with filenames different from “.config”. make menuconfig gives the user an ability to navigate forwards or backwards directly between features, rather than using make config by pressing the enter (⏎) key up to 80 times to find a specific feature.

If the user is satisfied with a previous .config file, using make oldconfig uses this previous file to answer all questions that it can, only interactively presenting the new features. This is intended for a version upgrade, but may be appropriate at other times.

make menuconfig is a light load on system resources unlike make xconfig
Xconfig
xconfig is short for the 'xconfig' target for the Linux Makefile. It is a graphical Linux compilation utility, which uses Qt. The xconfig utility is invoked by running 'make xconfig' in the base Linux source directory....

(uses Qt as of version 2.6.31.1, formerly Tk
Tk (framework)
Tk is an open source, cross-platform widget toolkit that provides a library of basic elements for building a graphical user interface in many different programming languages....

) or make gconfig, which utilizes GTK+
GTK+
GTK+ is a cross-platform widget toolkit for creating graphical user interfaces. It is licensed under the terms of the GNU LGPL, allowing both free and proprietary software to use it. It is one of the most popular toolkits for the X Window System, along with Qt.The name GTK+ originates from GTK;...

. It's possible to ignore most of the features with make menuconfig, and doing so makes it more likely that one will configure an incomplete or oversized kernel. It's recommended to start with the .config file included with the Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

 distribution, which makes it easier to configure a custom kernel.

Better than editing the .config by hand, make menuconfig easily shows the descriptions of each feature (?), and adds some (primitive in version 2.6.31.1) dependency checking. With make oldconfig, dependency checking can be done in one step, but requires the user to locate the features that were changed, by hand, to be sure that the needed ones are still enabled.

Practically, using both make menuconfig and make oldconfig, diff
Diff
In computing, diff is a file comparison utility that outputs the differences between two files. It is typically used to show the changes between one version of a file and a former version of the same file. Diff displays the changes made per line for text files. Modern implementations also...

, (also cvs
Concurrent Versions System
The Concurrent Versions System , also known as the Concurrent Versioning System, is a client-server free software revision control system in the field of software development. Version control system software keeps track of all work and all changes in a set of files, and allows several developers ...

 and a decent text editor) provides the most flexibility and most dependability. Configuring Linux is a significant labor, so users are strongly advised to make backups of it (i.e. cp /usr/src/linux*/.config ~/savemywork.config).

The help information is distributed throughout the kernel source tree in the various files called Kconfig.

Requsites/Dependencies

To use make menuconfig, the Linux kernel
Linux kernel
The Linux kernel is an operating system kernel used by the Linux family of Unix-like operating systems. It is one of the most prominent examples of free and open source software....

 source is a requirement, a make tool, a C compiler, and the ncurses
Ncurses
ncurses is a programming library that provides an API which allows the programmer to write text user interfaces in a terminal-independent manner. It is a toolkit for developing "GUI-like" application software that runs under a terminal emulator...

 library.

Key Strokes

Main Key strokes
Key stroke Meaning
? Option description and tips/Help
Left/Right (⬌) Up/Down (⬍) PgUp/PgDn Navigate through the kernel features and menuconfig commands.
Esc Esc Exit menuconfig or cancel the command.
Enter (⏎) Activate a command, or expand a branch.
y Compile and include this feature inside of the kernel.
m Compile this feature as a module, separate from the kernel.
n Do not compile the feature.
/ Search configuration parameter.

Symbols

To the left of the features is the setting (y, M, or empty) enclosed in two punctuation marks.
Dependency information
Symbol Meaning
< > No dependencies.
[ ] A dependency requires this to be compiled-in (y), or not compiled (n).
{ } A dependency requires this to be a module (m) or compiled-in (y).
- - A dependency requires this to be compiled-in (y).


Note that the supplied dependency information is primitive, it does not tell you the names of the depentant features.
Other symbols
Symbol Meaning
---> Use enter (⏎) to expand this branch as a new window.
(Experimental) Less/Unstable code, beware.
(New) An option not in your old version of Linux.

What next?

The user is encouraged to read the Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

 README, since there are also many other targets. Each will configure the kernel, but with different features activated.
  1. make menuconfig
  2. Next build the compressed kernel and its modules, a long process. make.
  3. Install using your favorite method such as make install, make modules_install.

See also

  • GNU Compiler Collection
    GNU Compiler Collection
    The GNU Compiler Collection is a compiler system produced by the GNU Project supporting various programming languages. GCC is a key component of the GNU toolchain...

  • Linus Torvalds
    Linus Torvalds
    Linus Benedict Torvalds is a Finnish software engineer and hacker, best known for having initiated the development of the open source Linux kernel. He later became the chief architect of the Linux kernel, and now acts as the project's coordinator...

  • Linux kernel
    Linux kernel
    The Linux kernel is an operating system kernel used by the Linux family of Unix-like operating systems. It is one of the most prominent examples of free and open source software....

  • ncurses
    Ncurses
    ncurses is a programming library that provides an API which allows the programmer to write text user interfaces in a terminal-independent manner. It is a toolkit for developing "GUI-like" application software that runs under a terminal emulator...

  • Xconfig
    Xconfig
    xconfig is short for the 'xconfig' target for the Linux Makefile. It is a graphical Linux compilation utility, which uses Qt. The xconfig utility is invoked by running 'make xconfig' in the base Linux source directory....


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK