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 - The following commands segfault or are broken:
27 - I believe that swaponoff may also be also broken (check it).
28 - It used to be that BusyBox tar would happily overwrite existing files on
29 an extraction. However, as of 0.42, BusyBox tar simply dies as soon as an
30 existing file is found.
31 - Make 'mount -a' work even when /proc isn't mounted (ugly bug).
32 - Make 'ln -s /tmp/file .' work the way GNU ln does (i.e. makes a link to
33 /tmp/file in the current directory, rather then trying and failing to create
34 a symlink named "." in the current working directory).
36 - "math" should also take input from stdin
37 - "more" doesn't accept " " to scroll by one page when BB_FEATURE_USE_TERMIOS
43 * Make insmod actually work
50 * wget (or whatever I call it)
53 * group/commonize strings, remove dups (for i18n, l10n)
54 * consider making a unified option parser (if it can be done modular, small, etc.)
56 -----------------------
58 Running the following:
60 rm -f busybox && make LDFLAGS+=-nostdlib 2>&1 | \
61 sed -ne 's/.*undefined reference to `\(.*\)..*/\1/gp' | sort | uniq
63 reveals the list of all external (i.e. libc) things that BusyBox depends on.
64 It would be a very nice thing to reduce this list to an absolute minimum, and
65 then create a microLibc to provide these functions. There is no good reason
66 for GNU libc to be so big. I'm sure it can be a lot better.
68 (BTW, this is more informative if BB_FEATURE_NFSMOUNT is turned off...)
72 [andersen@slag busybox]$ grep -l getgroups *.[ch]
75 Policy violation. getgroups uses libc nss, which is unlikely
76 to be present in an embedded system.
78 To be replaced with a busybox local glob routine:
80 [andersen@slag busybox]$ grep -l glob *.[ch]
87 Can check_wildcard_match() from utility.c do this job?
90 -----------------------
92 Compile with debugging on, run 'nm --size-sort ./busybox'
93 and then start with the biggest things and make them smaller...
95 -----------------------
97 busybox.defs.h is too big and hard to follow.
99 Perhaps I need to add a better build system (like the Linux kernel?)
101 -----------------------
105 /bin/busybox --install -s which makes all links to commands that it
106 can support (an optionnal -s should be used for symbolic links instead
109 -----------------------
112 > Have you ever thought of doig network logging in busybox syslogd ? It
113 > would quite make sense on embedded systems... :)
115 So far I had not considered it. Basically, you wish to have
116 messages from the embedded box logged to a remote network
117 syslog box, right? I can see that this would be useful.
118 I'll add this to the TODO list,
121 -----------------------
124 I think that the add_inode &c in utility.c needs to also stow the
125 st_dev field, and that du.c should NOT call `reset_inode_list'
126 because there can be hard links from inside one argv/ to inside
127 another argv/. du.c probably ought to have an -x switch like GNU du
131 ------------------------------------------------------------------
133 An interesting email listing some apps that use /proc. BusyBox
134 tries to avoid /proc as mush as is possible, so this stuff is
135 interesting (to me at least):
138 Date: Fri, 25 Feb 2000 08:23:12 +0000 (GMT)
139 From: Riley Williams <rhw@MemAlpha.CX>
140 X-Sender: rhw@moo.cus.org.uk
141 To: almesber@lrc.di.epfl.ch
142 Cc: "Albert D. Cahalan" <acahalan@cs.uml.edu>,
143 Linux Kernel <linux-kernel@vger.rutgers.edu>
144 Subject: Re: What /proc should contain [was: /proc/driver/microcode]
145 In-Reply-To: <20000224165245.A29790@lrc.di.epfl.ch>
146 Message-ID: <Pine.LNX.4.21.0002250806220.8741-100000@moo.cus.org.uk>
147 Sender: owner-linux-kernel@vger.rutgers.edu
152 >> Nope, most /proc access is does via programs written in C.
154 > That varies a lot from file to file. E.g. I haven't seen any
155 > programs that are specificly designed to read /proc/atm/* yet,
156 > and I know of only one (fuser) that reads /proc/mounts,
157 > extracting only partial information (just to pick two examples
158 > that I'm quite familiar with).
160 As a point of reference, here's a slightly tweaked analysis of the
161 programs on the system I'm reading your mail on. Basically, I ran the
167 Q> strings $Z | grep /proc | sed "s=^=$Z ="
170 Q> use /{,s}bin/* /usr/{,s}bin/* | sort -u | tee proc-usage
172 ...and then went through it removing comments and print format
173 strings. Replace /proc with /dev and you'd soon have an equivalent
174 list for that - although I can report that such is MUCH larger...
176 There are three programs therein that refer to /proc/mounts ...
182 ...and, as you stated, none that refer to /proc/atm on this system.
183 However, as this is a RedHat Linux 5.0 based system, that's not
184 necessarily an up to date reference thereto...
186 Here's the list anyway...
188 /bin/kill /proc/%d/cmdline
189 /bin/kill /proc/%d/stat
191 /bin/mount /proc/devices
192 /bin/mount /proc/filesystems
193 /bin/mount /proc/mounts
195 /bin/netstat /proc/net
196 /bin/netstat /proc/net/appletalk
197 /bin/netstat /proc/net/ax25
198 /bin/netstat /proc/net/ax25_route
199 /bin/netstat /proc/net/dev
200 /bin/netstat /proc/net/ip_masquerade
201 /bin/netstat /proc/net/ipx
202 /bin/netstat /proc/net/ipx_route
203 /bin/netstat /proc/net/netstat
204 /bin/netstat /proc/net/nr
205 /bin/netstat /proc/net/nr_neigh
206 /bin/netstat /proc/net/nr_nodes
207 /bin/netstat /proc/net/raw
208 /bin/netstat /proc/net/route
209 /bin/netstat /proc/net/rt_cache
210 /bin/netstat /proc/net/snmp
211 /bin/netstat /proc/net/tcp
212 /bin/netstat /proc/net/udp
213 /bin/netstat /proc/net/unix
215 /bin/umount /proc/devices
216 /bin/umount /proc/mounts
218 /sbin/arp /proc/net/appletalk
219 /sbin/arp /proc/net/arp
220 /sbin/arp /proc/net/ax25
221 /sbin/arp /proc/net/ipx
222 /sbin/arp /proc/net/nr
223 /sbin/arp /proc/net/unix
225 /sbin/cardctl /proc/devices
227 /sbin/cardmgr /proc/devices
229 /sbin/fdisk /proc/ide/%s/media
230 /sbin/fdisk /proc/scsi/scsi
232 /sbin/getty /proc/version
234 /sbin/ifconfig /proc/net
235 /sbin/ifconfig /proc/net/appletalk
236 /sbin/ifconfig /proc/net/ax25
237 /sbin/ifconfig /proc/net/dev
238 /sbin/ifconfig /proc/net/ipx
239 /sbin/ifconfig /proc/net/nr
240 /sbin/ifconfig /proc/net/unix
242 /sbin/ifup /proc/sys/kernel/modprobe
244 /sbin/ipchains /proc/net/ip_fwchains
245 /sbin/ipchains /proc/net/ip_fwnames
246 /sbin/ipchains /proc/net/ip_masquerade
247 /sbin/ipchains /proc/sys/net/ipv4/ip_forward
249 /sbin/ipmaddr /proc/net/dev_mcast
250 /sbin/ipmaddr /proc/net/igmp
251 /sbin/ipmaddr /proc/net/igmp6
253 /sbin/iptunnel /proc/net/dev
255 /sbin/killall5 /proc/%s/cmdline
256 /sbin/killall5 /proc/%s/exe
257 /sbin/killall5 /proc/%s/stat
258 /sbin/killall5 /proc/version
260 /sbin/klogd /proc/kmsg
262 /sbin/lsmod /proc/modules
264 /sbin/modprobe /proc/modules
266 /sbin/pidof /proc/%s/cmdline
267 /sbin/pidof /proc/%s/exe
268 /sbin/pidof /proc/%s/stat
269 /sbin/pidof /proc/version
271 /sbin/probe /proc/pci
273 /sbin/rarp /proc/net/ax25
274 /sbin/rarp /proc/net/nr
275 /sbin/rarp /proc/net/rarp
277 /sbin/rmmod /proc/modules
279 /sbin/rmmod.static /proc/modules
281 /sbin/route /proc/net/appletalk
282 /sbin/route /proc/net/ax25
283 /sbin/route /proc/net/ax25_route
284 /sbin/route /proc/net/ipx
285 /sbin/route /proc/net/ipx_route
286 /sbin/route /proc/net/nr
287 /sbin/route /proc/net/nr_neigh
288 /sbin/route /proc/net/nr_nodes
289 /sbin/route /proc/net/route
290 /sbin/route /proc/net/rt_cache
291 /sbin/route /proc/net/unix
293 /sbin/scsi_info /proc/scsi
294 /sbin/scsi_info /proc/scsi/%s
295 /sbin/scsi_info /proc/scsi/scsi
297 /sbin/slattach /proc/net/ax25
298 /sbin/slattach /proc/net/nr
300 /sbin/swapoff /proc/swaps
302 /sbin/swapon /proc/swaps
304 /sbin/uugetty /proc/version
307 /usr/bin/dig /proc/interrupts
308 /usr/bin/dig /proc/meminfo
309 /usr/bin/dig /proc/rtc
310 /usr/bin/dig /proc/self/status
311 /usr/bin/dig /proc/stat
313 /usr/bin/dnsquery /proc/
314 /usr/bin/dnsquery /proc/interrupts
315 /usr/bin/dnsquery /proc/meminfo
316 /usr/bin/dnsquery /proc/rtc
317 /usr/bin/dnsquery /proc/self/status
318 /usr/bin/dnsquery /proc/stat
320 /usr/bin/eject /proc/mounts
322 /usr/bin/emacs /proc/loadavg
324 /usr/bin/fetchmail /proc/net/dev
326 /usr/bin/free /proc/meminfo
328 /usr/bin/gmake /proc/loadavg
330 /usr/bin/gpm-root /proc/loadavg
331 /usr/bin/gpm-root /proc/meminfo
334 /usr/bin/host /proc/interrupts
335 /usr/bin/host /proc/meminfo
336 /usr/bin/host /proc/rtc
337 /usr/bin/host /proc/self/status
338 /usr/bin/host /proc/stat
340 /usr/bin/hoststat /proc/loadavg
342 /usr/bin/hwdiag /proc/cpuinfo
343 /usr/bin/hwdiag /proc/pci
344 /usr/bin/hwdiag /proc/scsi/scsi
345 /usr/bin/hwdiag /proc/version
347 /usr/bin/lsdev /proc/dma
348 /usr/bin/lsdev /proc/interrupts
349 /usr/bin/lsdev /proc/ioports
351 /usr/bin/mailq /proc/loadavg
353 /usr/bin/make /proc/loadavg
355 /usr/bin/mcookie /proc/loadavg
356 /usr/bin/mcookie /proc/stat
358 /usr/bin/newaliases /proc/loadavg
360 /usr/bin/nslookup /proc/
361 /usr/bin/nslookup /proc/interrupts
362 /usr/bin/nslookup /proc/meminfo
363 /usr/bin/nslookup /proc/rtc
364 /usr/bin/nslookup /proc/self/status
365 /usr/bin/nslookup /proc/stat
367 /usr/bin/nsupdate /proc/
368 /usr/bin/nsupdate /proc/interrupts
369 /usr/bin/nsupdate /proc/meminfo
370 /usr/bin/nsupdate /proc/rtc
371 /usr/bin/nsupdate /proc/self/status
372 /usr/bin/nsupdate /proc/stat
374 /usr/bin/pgp /proc/version
375 /usr/bin/pgpe /proc/version
376 /usr/bin/pgpk /proc/version
377 /usr/bin/pgps /proc/version
378 /usr/bin/pgpv /proc/version
380 /usr/bin/procinfo /proc/cmdline
381 /usr/bin/procinfo /proc/devices
382 /usr/bin/procinfo /proc/dma
383 /usr/bin/procinfo /proc/filesystems
384 /usr/bin/procinfo /proc/interrupts
385 /usr/bin/procinfo /proc/loadavg
386 /usr/bin/procinfo /proc/meminfo
387 /usr/bin/procinfo /proc/modules
388 /usr/bin/procinfo /proc/stat
389 /usr/bin/procinfo /proc/uptime
390 /usr/bin/procinfo /proc/version
392 /usr/bin/purgestat /proc/loadavg
394 /usr/bin/screen /proc/loadavg
396 /usr/bin/strace /proc/%d/stat
398 /usr/bin/top /proc/cpuinfo
399 /usr/bin/top /proc/meminfo
400 /usr/bin/top /proc/stat
402 /usr/bin/vmstat /proc/%s/stat
403 /usr/bin/vmstat /proc/meminfo
404 /usr/bin/vmstat /proc/stat
406 /usr/sbin/atd /proc/loadavg
408 /usr/sbin/dnskeygen /proc/
409 /usr/sbin/dnskeygen /proc/interrupts
410 /usr/sbin/dnskeygen /proc/meminfo
411 /usr/sbin/dnskeygen /proc/rtc
412 /usr/sbin/dnskeygen /proc/self/status
413 /usr/sbin/dnskeygen /proc/stat
415 /usr/sbin/fuser /proc/%d/stat
416 /usr/sbin/fuser /proc/net/%s
417 /usr/sbin/fuser /proc/net/unix
419 /usr/sbin/in.identd /proc/net/tcp
421 /usr/sbin/irpd /proc/
422 /usr/sbin/irpd /proc/interrupts
423 /usr/sbin/irpd /proc/meminfo
424 /usr/sbin/irpd /proc/rtc
425 /usr/sbin/irpd /proc/self/status
426 /usr/sbin/irpd /proc/stat
428 /usr/sbin/named /proc/
429 /usr/sbin/named /proc/interrupts
430 /usr/sbin/named /proc/meminfo
431 /usr/sbin/named /proc/rtc
432 /usr/sbin/named /proc/self/status
433 /usr/sbin/named /proc/stat
435 /usr/sbin/named-xfer /proc/
436 /usr/sbin/named-xfer /proc/interrupts
437 /usr/sbin/named-xfer /proc/meminfo
438 /usr/sbin/named-xfer /proc/rtc
439 /usr/sbin/named-xfer /proc/self/status
440 /usr/sbin/named-xfer /proc/stat
442 /usr/sbin/readprofile /proc/profile
444 /usr/sbin/rwhod /proc/loadavg
445 /usr/sbin/rwhod /proc/uptime
447 /usr/sbin/sendmail /proc/loadavg
449 /usr/sbin/setconsole /proc/openprom/options
450 /usr/sbin/setconsole /proc/openprom/options/${console}-mode
451 /usr/sbin/setconsole /proc/openprom/options/input-device
452 /usr/sbin/setconsole /proc/openprom/options/output-device
454 Best wishes from Riley.
456 * Copyright (C) 1999, Memory Alpha Systems.
457 * All rights and wrongs reserved.
459 +----------------------------------------------------------------------+
460 | There is something frustrating about the quality and speed of Linux |
461 | development, ie., the quality is too high and the speed is too high, |
462 | in other words, I can implement this XXXX feature, but I bet someone |
463 | else has already done so and is just about to release their patch. |
464 +----------------------------------------------------------------------+
465 * http://www.memalpha.cx/Linux/Kernel/
469 To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
470 the body of a message to majordomo@vger.rutgers.edu
471 Please read the FAQ at http://www.tux.org/lkml/