make menuconfig
is one of five similar tools that can configure
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, w ...
source, a necessary early step needed to
compile the
source code
In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the w ...
.
make menuconfig
, with a menu-driven
user interface
In the industrial design field of human–computer interaction, a user interface (UI) is the space where interactions between humans and machines occur. The goal of this interaction is to allow effective operation and control of the machine f ...
, allows the user to choose the features of Linux (and other options) that will be compiled. It is normally invoked using the command
make menuconfig
; menuconfig is a target in Linux
Makefile
In software development, Make is a build automation tool that automatically builds executable programs and libraries from source code by reading files called ''Makefiles'' which specify how to derive the target program. Though integrated devel ...
.
History
make menuconfig
was not in the first version of
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, w ...
. The predecessor tool is a question-and-answer-based utility (
make config
Configuration or configurations may refer to:
Computing
* Computer configuration or system configuration
* Configuration file, a software file used to configure the initial settings for a computer program
* Configurator, also known as choice boa ...
,
make oldconfig
). A third tool for
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, w ...
configuration is
make xconfig
, which requires
Qt. There is also
make gconfig
, which uses
GTK+, and
make nconfig
, which is similar to
make menuconfig
.
All these tools use the Kconfig language internally. Kconfig is also used in other projects, such as
Das U-Boot
Das U-Boot (subtitled "the Universal Boot Loader" and often shortened to U-Boot; see ''History'' for more about the name) is an open-source, primary boot loader used in embedded devices to package the instructions to boot the device's operating ...
, a bootloader for embedded devices,
Buildroot
Buildroot is a set of Makefiles and patches that simplifies and automates the process of building a complete and bootable Linux environment for an embedded system, while using cross-compilation to allow building for multiple target platforms on ...
, a tool for generating embedded Linux systems, and
BusyBox
BusyBox is a software suite that provides several Unix utilities in a single executable file. It runs in a variety of POSIX environments such as Linux, Android, and FreeBSD, although many of the tools it provides are designed to work with in ...
, a single-executable shell utility toolbox for embedded systems.
Advantages over earlier versions
Despite being a simple design,
make menuconfig
offers considerable advantages to the question-and-answer-based configuration tool
make oldconfig
, 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
Configuration or configurations may refer to:
Computing
* Computer configuration or system configuration
* Configuration file, a software file used to configure the initial settings for a computer program
* Configurator, also known as choice boa ...
by pressing the key to navigate linearly to the configuration for 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
(uses
Qt as of version 2.6.31.1, formerly
Tk) or
make gconfig
, which utilizes
GTK+. It's possible to ignore most of the features with
make config
, 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
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, w ...
distribution, which makes it easier to configure a custom kernel.
Better than editing the
.config
by hand,
make menuconfig
shows the descriptions of each feature (by pressing the "Help" button while on a menu option), 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
In computing, the utility diff is a data comparison tool that computes and displays the differences between the contents of files. Unlike edit distance notions used for other purposes, diff is line-oriented rather than character-oriented, but ...
, (also
cvs 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.
Dependencies
To use
make menuconfig
,
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, w ...
source is a requirement, a
make
Make or MAKE may refer to:
* Make (magazine), a tech DIY periodical
*Make (software), a software build tool
*Make, Botswana, in the Kalahari Desert
*Make Architects
Make Architects is an international architecture practice headquartered in Londo ...
tool, a
C compiler, and the
ncurses
ncurses (new curses) is a programming library providing an application programming interface (API) that allows the programmer to write text-based user interfaces (TUI) in a terminal-independent manner. It is a toolkit for developing "GUI-like" ...
library.
Key strokes
Symbols
To the left of the features is the setting (y, M, or empty) enclosed in two punctuation marks.
Note that the supplied dependency information is primitive, it does not tell you the names of the dependant features.
menuconfig in the kernel-build workflow
The user is encouraged to read the
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, w ...
br>
README since there are also many other make targets (beyond ''modules_install'' and ''install''). Each will configure the kernel, but with different features activated, or using a different interactive interface; such as ''tinyconfig'' or ''allyesconfig''.
simple (but effective) workflow
#
make menuconfig
# Next build the compressed kernel and its modules, a long process.
make
.
# Install using your favorite method such as
make modules_install
,
make install
.
See also
*
GNU Compiler Collection
The GNU Compiler Collection (GCC) is an optimizing compiler produced by the GNU Project supporting various programming languages, hardware architectures and operating systems. The Free Software Foundation (FSF) distributes GCC as free softwar ...
*
TUI
References
* The
make menuconfig
tool itself.
Linux From Scratch*
ttp://www.ibm.com/developerworks/linux/linux390/howto.html#how_to_3 Cross compiling Linux on IBM System zHow to roll your own LinuxBuilding A Kernel The Traditional WayKconfig language
External links
The Linux Kernel Archives
{{Linux kernel
Linux kernel
Linux configuration utilities
Configuration management
Build automation
Software that uses ncurses