1 TODO list for busybox in no particular order. Just because something
2 is listed here doesn't mean that it is going to be added to busybox,
3 or that doing so is even a good idea. It just means that I _might_ get
4 around to it some time. If you have any good ideas, please let me know.
6 * login/sulogin/passwd/getty/etc are part of tinylogin, and so are not
7 needed or wanted in busybox (or else I'd have to link to libcrypt).
9 * Networking apps are probably going to be split out some time soon into a
10 separate package (named perhaps netkit-tiny?). This would remove the
11 following items from BusyBox: hostid, hostname, nc, nslookup, telnet,
12 and ping. nfs mounting and syslogd (when it supports network logging)
13 will remain in BusyBox.
19 Bugs that need fixing before the 0.44 release goes out the door:
21 - mkfs.minix rev 1.7 completely broke the parser. Fix it.
22 - 'grep foo$ file' doesn't work
23 - 'grep *foo file' segfaults
24 - ps dirent race bug (need to stat the file before attempting chdir)
25 - I believe that swaponoff may also be also broken (check it).
26 - It used to be that BusyBox tar would happily overwrite existing files on
27 an extraction. However, as of 0.42, BusyBox tar simply dies as soon as an
28 existing file is found.
29 - Make 'mount -a' work even when /proc isn't mounted (ugly bug).
30 - Make 'ln -s /tmp/file .' work the way GNU ln does (i.e. makes a link to
31 /tmp/file in the current directory, rather then trying and failing to create
32 a symlink named "." in the current working directory).
34 - "math" should also take input from stdin
35 - "more" doesn't accept " " to scroll by one page when BB_FEATURE_USE_TERMIOS
41 * Make insmod actually work
48 * wget (or whatever I call it)
51 * group/commonize strings, remove dups (for i18n, l10n)
52 * consider making a unified option parser (if it can be done modular, small, etc.)
54 -----------------------
56 Running the following:
58 rm -f busybox && make LDFLAGS+=-nostdlib 2>&1 | \
59 sed -ne 's/.*undefined reference to `\(.*\)..*/\1/gp' | sort | uniq
61 reveals the list of all external (i.e. libc) things that BusyBox depends on.
62 It would be a very nice thing to reduce this list to an absolute minimum, and
63 then create a microLibc to provide these functions. There is no good reason
64 for GNU libc to be so big. I'm sure it can be a lot better.
66 (BTW, this is more informative if BB_FEATURE_NFSMOUNT is turned off...)
70 [andersen@slag busybox]$ grep -l getgroups *.[ch]
73 Policy violation. getgroups uses libc nss, which is unlikely
74 to be present in an embedded system.
76 To be replaced with a busybox local glob routine:
78 [andersen@slag busybox]$ grep -l glob *.[ch]
85 Can check_wildcard_match() from utility.c do this job?
88 -----------------------
90 Compile with debugging on, run 'nm --size-sort ./busybox'
91 and then start with the biggest things and make them smaller...
93 -----------------------
95 busybox.defs.h is too big and hard to follow.
97 Perhaps I need to add a better build system (like the Linux kernel?)
99 -----------------------
103 /bin/busybox --install -s which makes all links to commands that it
104 can support (an optionnal -s should be used for symbolic links instead
107 -----------------------
110 > Have you ever thought of doig network logging in busybox syslogd ? It
111 > would quite make sense on embedded systems... :)
113 So far I had not considered it. Basically, you wish to have
114 messages from the embedded box logged to a remote network
115 syslog box, right? I can see that this would be useful.
116 I'll add this to the TODO list,
119 -----------------------
122 I think that the add_inode &c in utility.c needs to also stow the
123 st_dev field, and that du.c should NOT call `reset_inode_list'
124 because there can be hard links from inside one argv/ to inside
125 another argv/. du.c probably ought to have an -x switch like GNU du
129 ------------------------------------------------------------------
131 An interesting email listing some apps that use /proc. BusyBox
132 tries to avoid /proc as mush as is possible, so this stuff is
133 interesting (to me at least):
136 Date: Fri, 25 Feb 2000 08:23:12 +0000 (GMT)
137 From: Riley Williams <rhw@MemAlpha.CX>
138 X-Sender: rhw@moo.cus.org.uk
139 To: almesber@lrc.di.epfl.ch
140 Cc: "Albert D. Cahalan" <acahalan@cs.uml.edu>,
141 Linux Kernel <linux-kernel@vger.rutgers.edu>
142 Subject: Re: What /proc should contain [was: /proc/driver/microcode]
143 In-Reply-To: <20000224165245.A29790@lrc.di.epfl.ch>
144 Message-ID: <Pine.LNX.4.21.0002250806220.8741-100000@moo.cus.org.uk>
145 Sender: owner-linux-kernel@vger.rutgers.edu
150 >> Nope, most /proc access is does via programs written in C.
152 > That varies a lot from file to file. E.g. I haven't seen any
153 > programs that are specificly designed to read /proc/atm/* yet,
154 > and I know of only one (fuser) that reads /proc/mounts,
155 > extracting only partial information (just to pick two examples
156 > that I'm quite familiar with).
158 As a point of reference, here's a slightly tweaked analysis of the
159 programs on the system I'm reading your mail on. Basically, I ran the
165 Q> strings $Z | grep /proc | sed "s=^=$Z ="
168 Q> use /{,s}bin/* /usr/{,s}bin/* | sort -u | tee proc-usage
170 ...and then went through it removing comments and print format
171 strings. Replace /proc with /dev and you'd soon have an equivalent
172 list for that - although I can report that such is MUCH larger...
174 There are three programs therein that refer to /proc/mounts ...
180 ...and, as you stated, none that refer to /proc/atm on this system.
181 However, as this is a RedHat Linux 5.0 based system, that's not
182 necessarily an up to date reference thereto...
184 Here's the list anyway...
186 /bin/kill /proc/%d/cmdline
187 /bin/kill /proc/%d/stat
189 /bin/mount /proc/devices
190 /bin/mount /proc/filesystems
191 /bin/mount /proc/mounts
193 /bin/netstat /proc/net
194 /bin/netstat /proc/net/appletalk
195 /bin/netstat /proc/net/ax25
196 /bin/netstat /proc/net/ax25_route
197 /bin/netstat /proc/net/dev
198 /bin/netstat /proc/net/ip_masquerade
199 /bin/netstat /proc/net/ipx
200 /bin/netstat /proc/net/ipx_route
201 /bin/netstat /proc/net/netstat
202 /bin/netstat /proc/net/nr
203 /bin/netstat /proc/net/nr_neigh
204 /bin/netstat /proc/net/nr_nodes
205 /bin/netstat /proc/net/raw
206 /bin/netstat /proc/net/route
207 /bin/netstat /proc/net/rt_cache
208 /bin/netstat /proc/net/snmp
209 /bin/netstat /proc/net/tcp
210 /bin/netstat /proc/net/udp
211 /bin/netstat /proc/net/unix
213 /bin/umount /proc/devices
214 /bin/umount /proc/mounts
216 /sbin/arp /proc/net/appletalk
217 /sbin/arp /proc/net/arp
218 /sbin/arp /proc/net/ax25
219 /sbin/arp /proc/net/ipx
220 /sbin/arp /proc/net/nr
221 /sbin/arp /proc/net/unix
223 /sbin/cardctl /proc/devices
225 /sbin/cardmgr /proc/devices
227 /sbin/fdisk /proc/ide/%s/media
228 /sbin/fdisk /proc/scsi/scsi
230 /sbin/getty /proc/version
232 /sbin/ifconfig /proc/net
233 /sbin/ifconfig /proc/net/appletalk
234 /sbin/ifconfig /proc/net/ax25
235 /sbin/ifconfig /proc/net/dev
236 /sbin/ifconfig /proc/net/ipx
237 /sbin/ifconfig /proc/net/nr
238 /sbin/ifconfig /proc/net/unix
240 /sbin/ifup /proc/sys/kernel/modprobe
242 /sbin/ipchains /proc/net/ip_fwchains
243 /sbin/ipchains /proc/net/ip_fwnames
244 /sbin/ipchains /proc/net/ip_masquerade
245 /sbin/ipchains /proc/sys/net/ipv4/ip_forward
247 /sbin/ipmaddr /proc/net/dev_mcast
248 /sbin/ipmaddr /proc/net/igmp
249 /sbin/ipmaddr /proc/net/igmp6
251 /sbin/iptunnel /proc/net/dev
253 /sbin/killall5 /proc/%s/cmdline
254 /sbin/killall5 /proc/%s/exe
255 /sbin/killall5 /proc/%s/stat
256 /sbin/killall5 /proc/version
258 /sbin/klogd /proc/kmsg
260 /sbin/lsmod /proc/modules
262 /sbin/modprobe /proc/modules
264 /sbin/pidof /proc/%s/cmdline
265 /sbin/pidof /proc/%s/exe
266 /sbin/pidof /proc/%s/stat
267 /sbin/pidof /proc/version
269 /sbin/probe /proc/pci
271 /sbin/rarp /proc/net/ax25
272 /sbin/rarp /proc/net/nr
273 /sbin/rarp /proc/net/rarp
275 /sbin/rmmod /proc/modules
277 /sbin/rmmod.static /proc/modules
279 /sbin/route /proc/net/appletalk
280 /sbin/route /proc/net/ax25
281 /sbin/route /proc/net/ax25_route
282 /sbin/route /proc/net/ipx
283 /sbin/route /proc/net/ipx_route
284 /sbin/route /proc/net/nr
285 /sbin/route /proc/net/nr_neigh
286 /sbin/route /proc/net/nr_nodes
287 /sbin/route /proc/net/route
288 /sbin/route /proc/net/rt_cache
289 /sbin/route /proc/net/unix
291 /sbin/scsi_info /proc/scsi
292 /sbin/scsi_info /proc/scsi/%s
293 /sbin/scsi_info /proc/scsi/scsi
295 /sbin/slattach /proc/net/ax25
296 /sbin/slattach /proc/net/nr
298 /sbin/swapoff /proc/swaps
300 /sbin/swapon /proc/swaps
302 /sbin/uugetty /proc/version
305 /usr/bin/dig /proc/interrupts
306 /usr/bin/dig /proc/meminfo
307 /usr/bin/dig /proc/rtc
308 /usr/bin/dig /proc/self/status
309 /usr/bin/dig /proc/stat
311 /usr/bin/dnsquery /proc/
312 /usr/bin/dnsquery /proc/interrupts
313 /usr/bin/dnsquery /proc/meminfo
314 /usr/bin/dnsquery /proc/rtc
315 /usr/bin/dnsquery /proc/self/status
316 /usr/bin/dnsquery /proc/stat
318 /usr/bin/eject /proc/mounts
320 /usr/bin/emacs /proc/loadavg
322 /usr/bin/fetchmail /proc/net/dev
324 /usr/bin/free /proc/meminfo
326 /usr/bin/gmake /proc/loadavg
328 /usr/bin/gpm-root /proc/loadavg
329 /usr/bin/gpm-root /proc/meminfo
332 /usr/bin/host /proc/interrupts
333 /usr/bin/host /proc/meminfo
334 /usr/bin/host /proc/rtc
335 /usr/bin/host /proc/self/status
336 /usr/bin/host /proc/stat
338 /usr/bin/hoststat /proc/loadavg
340 /usr/bin/hwdiag /proc/cpuinfo
341 /usr/bin/hwdiag /proc/pci
342 /usr/bin/hwdiag /proc/scsi/scsi
343 /usr/bin/hwdiag /proc/version
345 /usr/bin/lsdev /proc/dma
346 /usr/bin/lsdev /proc/interrupts
347 /usr/bin/lsdev /proc/ioports
349 /usr/bin/mailq /proc/loadavg
351 /usr/bin/make /proc/loadavg
353 /usr/bin/mcookie /proc/loadavg
354 /usr/bin/mcookie /proc/stat
356 /usr/bin/newaliases /proc/loadavg
358 /usr/bin/nslookup /proc/
359 /usr/bin/nslookup /proc/interrupts
360 /usr/bin/nslookup /proc/meminfo
361 /usr/bin/nslookup /proc/rtc
362 /usr/bin/nslookup /proc/self/status
363 /usr/bin/nslookup /proc/stat
365 /usr/bin/nsupdate /proc/
366 /usr/bin/nsupdate /proc/interrupts
367 /usr/bin/nsupdate /proc/meminfo
368 /usr/bin/nsupdate /proc/rtc
369 /usr/bin/nsupdate /proc/self/status
370 /usr/bin/nsupdate /proc/stat
372 /usr/bin/pgp /proc/version
373 /usr/bin/pgpe /proc/version
374 /usr/bin/pgpk /proc/version
375 /usr/bin/pgps /proc/version
376 /usr/bin/pgpv /proc/version
378 /usr/bin/procinfo /proc/cmdline
379 /usr/bin/procinfo /proc/devices
380 /usr/bin/procinfo /proc/dma
381 /usr/bin/procinfo /proc/filesystems
382 /usr/bin/procinfo /proc/interrupts
383 /usr/bin/procinfo /proc/loadavg
384 /usr/bin/procinfo /proc/meminfo
385 /usr/bin/procinfo /proc/modules
386 /usr/bin/procinfo /proc/stat
387 /usr/bin/procinfo /proc/uptime
388 /usr/bin/procinfo /proc/version
390 /usr/bin/purgestat /proc/loadavg
392 /usr/bin/screen /proc/loadavg
394 /usr/bin/strace /proc/%d/stat
396 /usr/bin/top /proc/cpuinfo
397 /usr/bin/top /proc/meminfo
398 /usr/bin/top /proc/stat
400 /usr/bin/vmstat /proc/%s/stat
401 /usr/bin/vmstat /proc/meminfo
402 /usr/bin/vmstat /proc/stat
404 /usr/sbin/atd /proc/loadavg
406 /usr/sbin/dnskeygen /proc/
407 /usr/sbin/dnskeygen /proc/interrupts
408 /usr/sbin/dnskeygen /proc/meminfo
409 /usr/sbin/dnskeygen /proc/rtc
410 /usr/sbin/dnskeygen /proc/self/status
411 /usr/sbin/dnskeygen /proc/stat
413 /usr/sbin/fuser /proc/%d/stat
414 /usr/sbin/fuser /proc/net/%s
415 /usr/sbin/fuser /proc/net/unix
417 /usr/sbin/in.identd /proc/net/tcp
419 /usr/sbin/irpd /proc/
420 /usr/sbin/irpd /proc/interrupts
421 /usr/sbin/irpd /proc/meminfo
422 /usr/sbin/irpd /proc/rtc
423 /usr/sbin/irpd /proc/self/status
424 /usr/sbin/irpd /proc/stat
426 /usr/sbin/named /proc/
427 /usr/sbin/named /proc/interrupts
428 /usr/sbin/named /proc/meminfo
429 /usr/sbin/named /proc/rtc
430 /usr/sbin/named /proc/self/status
431 /usr/sbin/named /proc/stat
433 /usr/sbin/named-xfer /proc/
434 /usr/sbin/named-xfer /proc/interrupts
435 /usr/sbin/named-xfer /proc/meminfo
436 /usr/sbin/named-xfer /proc/rtc
437 /usr/sbin/named-xfer /proc/self/status
438 /usr/sbin/named-xfer /proc/stat
440 /usr/sbin/readprofile /proc/profile
442 /usr/sbin/rwhod /proc/loadavg
443 /usr/sbin/rwhod /proc/uptime
445 /usr/sbin/sendmail /proc/loadavg
447 /usr/sbin/setconsole /proc/openprom/options
448 /usr/sbin/setconsole /proc/openprom/options/${console}-mode
449 /usr/sbin/setconsole /proc/openprom/options/input-device
450 /usr/sbin/setconsole /proc/openprom/options/output-device
452 Best wishes from Riley.
454 * Copyright (C) 1999, Memory Alpha Systems.
455 * All rights and wrongs reserved.
457 +----------------------------------------------------------------------+
458 | There is something frustrating about the quality and speed of Linux |
459 | development, ie., the quality is too high and the speed is too high, |
460 | in other words, I can implement this XXXX feature, but I bet someone |
461 | else has already done so and is just about to release their patch. |
462 +----------------------------------------------------------------------+
463 * http://www.memalpha.cx/Linux/Kernel/
467 To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
468 the body of a message to majordomo@vger.rutgers.edu
469 Please read the FAQ at http://www.tux.org/lkml/