Menuconfig
codice_1 is one of five similar tools that can configure Linux source, a necessary early step needed to compile the source code. codice_1, with a menu-driven user interface, allows the user to choose the features of Linux (and other options) that will be compiled. It is normally invoked using the command codice_1; menuconfig is a target in Linux Makefile. History. codice_1 was not in the first version of Linux. The predecessor tool is a question-and-answer-based utility (codice_5, codice_6). A third tool for Linux configuration is codice_7, which requires Qt. There is also codice_8, which uses  GTK+, and codice_9, which is similar to codice_1. All these tools use the Kconfig language internally. Kconfig is also used in other projects, such as Das U-Boot, a bootloader for embedded devices, Buildroot, a tool for generating embedded Linux systems, and BusyBox, a single-executable shell utility toolbox for embedded systems. Advantages over earlier versions. Despite being a simple design, codice_1 offers considerable advantages to the question-and-answer-based configuration tool codice_6, the most notable being a basic search system and the ability to load and save files with filenames different from "codice_13". codice_1 gives the user an  ability to navigate forwards or backwards directly between features, rather than using codice_5 by pressing the key many, many times just to navigate linearly to the configuration for a specific feature. If the user is satisfied with a previous codice_13 file, using codice_6 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. codice_1 is a light load on system resources unlike codice_7 (uses Qt as of version 2.6.31.1, formerly Tk) or codice_8, which utilizes GTK+. It's possible  to ignore most of the features with codice_5, and doing so makes it more likely that one will configure an incomplete or oversized kernel. It's recommended to start with the codice_13 file included with Linux distribution, which makes it easier to configure a custom kernel. Better than editing the codice_13 by hand, codice_1 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 codice_1 and codice_6, diff, (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. codice_27). The help information is distributed throughout the kernel source tree in the various files called Kconfig. Dependencies. To use codice_1, Linux source is a requirement, a make tool, a C compiler, and the ncurses library. 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 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".