Annotation of /tags/mkinitrd-6_1_10/busybox/INSTALL
Parent Directory | Revision Log
Revision 922 -
(hide annotations)
(download)
Wed Oct 28 09:51:31 2009 UTC (14 years, 11 months ago) by niro
File size: 5332 byte(s)
Wed Oct 28 09:51:31 2009 UTC (14 years, 11 months ago) by niro
File size: 5332 byte(s)
tagged 'mkinitrd-6_1_10'
1 | niro | 532 | Building: |
2 | ========= | ||
3 | |||
4 | The BusyBox build process is similar to the Linux kernel build: | ||
5 | |||
6 | make menuconfig # This creates a file called ".config" | ||
7 | make # This creates the "busybox" executable | ||
8 | niro | 816 | make install # or make CONFIG_PREFIX=/path/from/root install |
9 | niro | 532 | |
10 | The full list of configuration and install options is available by typing: | ||
11 | |||
12 | make help | ||
13 | |||
14 | Quick Start: | ||
15 | ============ | ||
16 | |||
17 | The easy way to try out BusyBox for the first time, without having to install | ||
18 | it, is to enable all features and then use "standalone shell" mode with a | ||
19 | blank command $PATH. | ||
20 | |||
21 | To enable all features, use "make defconfig", which produces the largest | ||
22 | general-purpose configuration. (It's allyesconfig minus debugging options, | ||
23 | optional packaging choices, and a few special-purpose features requiring | ||
24 | extra configuration to use.) | ||
25 | |||
26 | make defconfig | ||
27 | make | ||
28 | PATH= ./busybox ash | ||
29 | |||
30 | Standalone shell mode causes busybox's built-in command shell to run | ||
31 | any built-in busybox applets directly, without looking for external | ||
32 | programs by that name. Supplying an empty command path (as above) means | ||
33 | the only commands busybox can find are the built-in ones. | ||
34 | |||
35 | Note that the standalone shell requires CONFIG_BUSYBOX_EXEC_PATH | ||
36 | to be set appropriately, depending on whether or not /proc/self/exe is | ||
37 | available or not. If you do not have /proc, then point that config option | ||
38 | to the location of your busybox binary, usually /bin/busybox. | ||
39 | |||
40 | Configuring Busybox: | ||
41 | ==================== | ||
42 | |||
43 | Busybox is optimized for size, but enabling the full set of functionality | ||
44 | still results in a fairly large executable -- more than 1 megabyte when | ||
45 | statically linked. To save space, busybox can be configured with only the | ||
46 | set of applets needed for each environment. The minimal configuration, with | ||
47 | all applets disabled, produces a 4k executable. (It's useless, but very small.) | ||
48 | |||
49 | The manual configurator "make menuconfig" modifies the existing configuration. | ||
50 | (For systems without ncurses, try "make config" instead.) The two most | ||
51 | interesting starting configurations are "make allnoconfig" (to start with | ||
52 | everything disabled and add just what you need), and "make defconfig" (to | ||
53 | start with everything enabled and remove what you don't need). If menuconfig | ||
54 | is run without an existing configuration, make defconfig will run first to | ||
55 | create a known starting point. | ||
56 | |||
57 | Other starting configurations (mostly used for testing purposes) include | ||
58 | "make allbareconfig" (enables all applets but disables all optional features), | ||
59 | "make allyesconfig" (enables absolutely everything including debug features), | ||
60 | and "make randconfig" (produce a random configuration). | ||
61 | |||
62 | Configuring BusyBox produces a file ".config", which can be saved for future | ||
63 | use. Run "make oldconfig" to bring a .config file from an older version of | ||
64 | busybox up to date. | ||
65 | |||
66 | Installing Busybox: | ||
67 | =================== | ||
68 | |||
69 | Busybox is a single executable that can behave like many different commands, | ||
70 | and BusyBox uses the name it was invoked under to determine the desired | ||
71 | behavior. (Try "mv busybox ls" and then "./ls -l".) | ||
72 | |||
73 | Installing busybox consists of creating symlinks (or hardlinks) to the busybox | ||
74 | binary for each applet enabled in busybox, and making sure these symlinks are | ||
75 | in the shell's command $PATH. Running "make install" creates these symlinks, | ||
76 | or "make install-hardlinks" creates hardlinks instead (useful on systems with | ||
77 | a limited number of inodes). This install process uses the file | ||
78 | "busybox.links" (created by make), which contains the list of enabled applets | ||
79 | and the path at which to install them. | ||
80 | |||
81 | Installing links to busybox is not always necessary. The special applet name | ||
82 | "busybox" (or with any optional suffix, such as "busybox-static") uses the | ||
83 | first argument to determine which applet to behave as, for example | ||
84 | "./busybox cat LICENSE". (Running the busybox applet with no arguments gives | ||
85 | a list of all enabled applets.) The standalone shell can also call busybox | ||
86 | applets without links to busybox under other names in the filesystem. You can | ||
87 | also configure a standaone install capability into the busybox base applet, | ||
88 | and then install such links at runtime with one of "busybox --install" (for | ||
89 | hardlinks) or "busybox --install -s" (for symlinks). | ||
90 | |||
91 | If you enabled the busybox shared library feature (libbusybox.so) and want | ||
92 | to run tests without installing, set your LD_LIBRARY_PATH accordingly when | ||
93 | running the executable: | ||
94 | |||
95 | LD_LIBRARY_PATH=`pwd` ./busybox | ||
96 | |||
97 | Building out-of-tree: | ||
98 | ===================== | ||
99 | |||
100 | By default, the BusyBox build puts its temporary files in the source tree. | ||
101 | Building from a read-only source tree, or building multiple configurations from | ||
102 | the same source directory, requires the ability to put the temporary files | ||
103 | somewhere else. | ||
104 | |||
105 | To build out of tree, cd to an empty directory and configure busybox from there: | ||
106 | |||
107 | make -f /path/to/source/Makefile defconfig | ||
108 | make | ||
109 | make install | ||
110 | |||
111 | Alternately, use the O=$BUILDPATH option (with an absolute path) during the | ||
112 | configuration step, as in: | ||
113 | |||
114 | make O=/some/empty/directory allyesconfig | ||
115 | cd /some/empty/directory | ||
116 | make | ||
117 | niro | 816 | make CONFIG_PREFIX=. install |
118 | niro | 532 | |
119 | More Information: | ||
120 | ================= | ||
121 | |||
122 | Se also the busybox FAQ, under the questions "How can I get started using | ||
123 | BusyBox" and "How do I build a BusyBox-based system?" The BusyBox FAQ is | ||
124 | available from http://www.busybox.net/FAQ.html or as the file | ||
125 | docs/busybox.net/FAQ.html in this tarball. |