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:
21 - 'grep foo$ file' doesn't work
22 - 'grep *foo file' segfaults
23 - ps dirent race bug (need to stat the file before attempting chdir)
24 - The following commands segfault:
34 - I believe that swaponoff may also be also broken (check it).
35 - It used to be that BusyBox tar would happily overwrite existing files on
36 an extraction. However, as of 0.42, BusyBox tar simply dies as soon as an
37 existing file is found.
38 - Make 'mount -a' work even when /proc isn't mounted (ugly bug).
39 - Make 'ln -s /tmp/file .' work the way GNU ln does (i.e. makes a link to
40 /tmp/file in the current directory, rather then trying and failing to create
41 a symlink named "." in the current working directory).
43 - "cp -a sourcedir/*" (note: no dest) - produces an odd error message about
44 the last file in the dir, rather than saying "missing destination file".
49 * Make insmod actually work
56 * wget (or whatever I call it)
59 * group/commonize strings, remove dups (for i18n, l10n)
62 -----------------------
64 Running the following:
66 rm -f busybox && make LDFLAGS+=-nostdlib 2>&1 | \
67 sed -ne 's/.*undefined reference to `\(.*\)..*/\1/gp' | sort | uniq
69 reveals the list of all external (i.e. libc) things that BusyBox depends on.
70 It would be a very nice thing to reduce this list to an absolute minimum, and
71 then create a microLibc to provide these functions. There is no good reason
72 for GNU libc to be so big. I'm sure it can be a lot better.
74 (BTW, this is more informative if BB_FEATURE_NFSMOUNT is turned off...)
78 [andersen@slag busybox]$ grep -l getgroups *.[ch]
81 Policy violation. getgroups uses libc nss, which is unlikely
82 to be present in an embedded system.
84 To be replaced with a busybox local glob routine:
86 [andersen@slag busybox]$ grep -l glob *.[ch]
93 Can check_wildcard_match() from utility.c do this job?
96 -----------------------
98 Compile with debugging on, run 'nm --size-sort ./busybox'
99 and then start with the biggest things and make them smaller...
101 -----------------------
103 busybox.defs.h is too big and hard to follow.
105 Perhaps I need to add a better build system (like the Linux kernel?)
107 -----------------------
111 /bin/busybox --install -s which makes all links to commands that it
112 can support (an optionnal -s should be used for symbolic links instead
115 -----------------------
118 > Have you ever thought of doig network logging in busybox syslogd ? It
119 > would quite make sense on embedded systems... :)
121 So far I had not considered it. Basically, you wish to have
122 messages from the embedded box logged to a remote network
123 syslog box, right? I can see that this would be useful.
124 I'll add this to the TODO list,
127 -----------------------
130 I think that the add_inode &c in utility.c needs to also stow the
131 st_dev field, and that du.c should NOT call `reset_inode_list'
132 because there can be hard links from inside one argv/ to inside
133 another argv/. du.c probably ought to have an -x switch like GNU du
137 ------------------------------------------------------------------
140 Date: Fri, 25 Feb 2000 08:23:12 +0000 (GMT)
141 From: Riley Williams <rhw@MemAlpha.CX>
142 X-Sender: rhw@moo.cus.org.uk
143 To: almesber@lrc.di.epfl.ch
144 Cc: "Albert D. Cahalan" <acahalan@cs.uml.edu>,
145 Linux Kernel <linux-kernel@vger.rutgers.edu>
146 Subject: Re: What /proc should contain [was: /proc/driver/microcode]
147 In-Reply-To: <20000224165245.A29790@lrc.di.epfl.ch>
148 Message-ID: <Pine.LNX.4.21.0002250806220.8741-100000@moo.cus.org.uk>
149 Sender: owner-linux-kernel@vger.rutgers.edu
154 >> Nope, most /proc access is does via programs written in C.
156 > That varies a lot from file to file. E.g. I haven't seen any
157 > programs that are specificly designed to read /proc/atm/* yet,
158 > and I know of only one (fuser) that reads /proc/mounts,
159 > extracting only partial information (just to pick two examples
160 > that I'm quite familiar with).
162 As a point of reference, here's a slightly tweaked analysis of the
163 programs on the system I'm reading your mail on. Basically, I ran the
169 Q> strings $Z | grep /proc | sed "s=^=$Z ="
172 Q> use /{,s}bin/* /usr/{,s}bin/* | sort -u | tee proc-usage
174 ...and then went through it removing comments and print format
175 strings. Replace /proc with /dev and you'd soon have an equivalent
176 list for that - although I can report that such is MUCH larger...
178 There are three programs therein that refer to /proc/mounts ...
184 ...and, as you stated, none that refer to /proc/atm on this system.
185 However, as this is a RedHat Linux 5.0 based system, that's not
186 necessarily an up to date reference thereto...
188 Here's the list anyway...
190 /bin/kill /proc/%d/cmdline
191 /bin/kill /proc/%d/stat
193 /bin/mount /proc/devices
194 /bin/mount /proc/filesystems
195 /bin/mount /proc/mounts
197 /bin/netstat /proc/net
198 /bin/netstat /proc/net/appletalk
199 /bin/netstat /proc/net/ax25
200 /bin/netstat /proc/net/ax25_route
201 /bin/netstat /proc/net/dev
202 /bin/netstat /proc/net/ip_masquerade
203 /bin/netstat /proc/net/ipx
204 /bin/netstat /proc/net/ipx_route
205 /bin/netstat /proc/net/netstat
206 /bin/netstat /proc/net/nr
207 /bin/netstat /proc/net/nr_neigh
208 /bin/netstat /proc/net/nr_nodes
209 /bin/netstat /proc/net/raw
210 /bin/netstat /proc/net/route
211 /bin/netstat /proc/net/rt_cache
212 /bin/netstat /proc/net/snmp
213 /bin/netstat /proc/net/tcp
214 /bin/netstat /proc/net/udp
215 /bin/netstat /proc/net/unix
217 /bin/umount /proc/devices
218 /bin/umount /proc/mounts
220 /sbin/arp /proc/net/appletalk
221 /sbin/arp /proc/net/arp
222 /sbin/arp /proc/net/ax25
223 /sbin/arp /proc/net/ipx
224 /sbin/arp /proc/net/nr
225 /sbin/arp /proc/net/unix
227 /sbin/cardctl /proc/devices
229 /sbin/cardmgr /proc/devices
231 /sbin/fdisk /proc/ide/%s/media
232 /sbin/fdisk /proc/scsi/scsi
234 /sbin/getty /proc/version
236 /sbin/ifconfig /proc/net
237 /sbin/ifconfig /proc/net/appletalk
238 /sbin/ifconfig /proc/net/ax25
239 /sbin/ifconfig /proc/net/dev
240 /sbin/ifconfig /proc/net/ipx
241 /sbin/ifconfig /proc/net/nr
242 /sbin/ifconfig /proc/net/unix
244 /sbin/ifup /proc/sys/kernel/modprobe
246 /sbin/ipchains /proc/net/ip_fwchains
247 /sbin/ipchains /proc/net/ip_fwnames
248 /sbin/ipchains /proc/net/ip_masquerade
249 /sbin/ipchains /proc/sys/net/ipv4/ip_forward
251 /sbin/ipmaddr /proc/net/dev_mcast
252 /sbin/ipmaddr /proc/net/igmp
253 /sbin/ipmaddr /proc/net/igmp6
255 /sbin/iptunnel /proc/net/dev
257 /sbin/killall5 /proc/%s/cmdline
258 /sbin/killall5 /proc/%s/exe
259 /sbin/killall5 /proc/%s/stat
260 /sbin/killall5 /proc/version
262 /sbin/klogd /proc/kmsg
264 /sbin/lsmod /proc/modules
266 /sbin/modprobe /proc/modules
268 /sbin/pidof /proc/%s/cmdline
269 /sbin/pidof /proc/%s/exe
270 /sbin/pidof /proc/%s/stat
271 /sbin/pidof /proc/version
273 /sbin/probe /proc/pci
275 /sbin/rarp /proc/net/ax25
276 /sbin/rarp /proc/net/nr
277 /sbin/rarp /proc/net/rarp
279 /sbin/rmmod /proc/modules
281 /sbin/rmmod.static /proc/modules
283 /sbin/route /proc/net/appletalk
284 /sbin/route /proc/net/ax25
285 /sbin/route /proc/net/ax25_route
286 /sbin/route /proc/net/ipx
287 /sbin/route /proc/net/ipx_route
288 /sbin/route /proc/net/nr
289 /sbin/route /proc/net/nr_neigh
290 /sbin/route /proc/net/nr_nodes
291 /sbin/route /proc/net/route
292 /sbin/route /proc/net/rt_cache
293 /sbin/route /proc/net/unix
295 /sbin/scsi_info /proc/scsi
296 /sbin/scsi_info /proc/scsi/%s
297 /sbin/scsi_info /proc/scsi/scsi
299 /sbin/slattach /proc/net/ax25
300 /sbin/slattach /proc/net/nr
302 /sbin/swapoff /proc/swaps
304 /sbin/swapon /proc/swaps
306 /sbin/uugetty /proc/version
309 /usr/bin/dig /proc/interrupts
310 /usr/bin/dig /proc/meminfo
311 /usr/bin/dig /proc/rtc
312 /usr/bin/dig /proc/self/status
313 /usr/bin/dig /proc/stat
315 /usr/bin/dnsquery /proc/
316 /usr/bin/dnsquery /proc/interrupts
317 /usr/bin/dnsquery /proc/meminfo
318 /usr/bin/dnsquery /proc/rtc
319 /usr/bin/dnsquery /proc/self/status
320 /usr/bin/dnsquery /proc/stat
322 /usr/bin/eject /proc/mounts
324 /usr/bin/emacs /proc/loadavg
326 /usr/bin/fetchmail /proc/net/dev
328 /usr/bin/free /proc/meminfo
330 /usr/bin/gmake /proc/loadavg
332 /usr/bin/gpm-root /proc/loadavg
333 /usr/bin/gpm-root /proc/meminfo
336 /usr/bin/host /proc/interrupts
337 /usr/bin/host /proc/meminfo
338 /usr/bin/host /proc/rtc
339 /usr/bin/host /proc/self/status
340 /usr/bin/host /proc/stat
342 /usr/bin/hoststat /proc/loadavg
344 /usr/bin/hwdiag /proc/cpuinfo
345 /usr/bin/hwdiag /proc/pci
346 /usr/bin/hwdiag /proc/scsi/scsi
347 /usr/bin/hwdiag /proc/version
349 /usr/bin/lsdev /proc/dma
350 /usr/bin/lsdev /proc/interrupts
351 /usr/bin/lsdev /proc/ioports
353 /usr/bin/mailq /proc/loadavg
355 /usr/bin/make /proc/loadavg
357 /usr/bin/mcookie /proc/loadavg
358 /usr/bin/mcookie /proc/stat
360 /usr/bin/newaliases /proc/loadavg
362 /usr/bin/nslookup /proc/
363 /usr/bin/nslookup /proc/interrupts
364 /usr/bin/nslookup /proc/meminfo
365 /usr/bin/nslookup /proc/rtc
366 /usr/bin/nslookup /proc/self/status
367 /usr/bin/nslookup /proc/stat
369 /usr/bin/nsupdate /proc/
370 /usr/bin/nsupdate /proc/interrupts
371 /usr/bin/nsupdate /proc/meminfo
372 /usr/bin/nsupdate /proc/rtc
373 /usr/bin/nsupdate /proc/self/status
374 /usr/bin/nsupdate /proc/stat
376 /usr/bin/pgp /proc/version
377 /usr/bin/pgpe /proc/version
378 /usr/bin/pgpk /proc/version
379 /usr/bin/pgps /proc/version
380 /usr/bin/pgpv /proc/version
382 /usr/bin/procinfo /proc/cmdline
383 /usr/bin/procinfo /proc/devices
384 /usr/bin/procinfo /proc/dma
385 /usr/bin/procinfo /proc/filesystems
386 /usr/bin/procinfo /proc/interrupts
387 /usr/bin/procinfo /proc/loadavg
388 /usr/bin/procinfo /proc/meminfo
389 /usr/bin/procinfo /proc/modules
390 /usr/bin/procinfo /proc/stat
391 /usr/bin/procinfo /proc/uptime
392 /usr/bin/procinfo /proc/version
394 /usr/bin/purgestat /proc/loadavg
396 /usr/bin/screen /proc/loadavg
398 /usr/bin/strace /proc/%d/stat
400 /usr/bin/top /proc/cpuinfo
401 /usr/bin/top /proc/meminfo
402 /usr/bin/top /proc/stat
404 /usr/bin/vmstat /proc/%s/stat
405 /usr/bin/vmstat /proc/meminfo
406 /usr/bin/vmstat /proc/stat
408 /usr/sbin/atd /proc/loadavg
410 /usr/sbin/dnskeygen /proc/
411 /usr/sbin/dnskeygen /proc/interrupts
412 /usr/sbin/dnskeygen /proc/meminfo
413 /usr/sbin/dnskeygen /proc/rtc
414 /usr/sbin/dnskeygen /proc/self/status
415 /usr/sbin/dnskeygen /proc/stat
417 /usr/sbin/fuser /proc/%d/stat
418 /usr/sbin/fuser /proc/net/%s
419 /usr/sbin/fuser /proc/net/unix
421 /usr/sbin/in.identd /proc/net/tcp
423 /usr/sbin/irpd /proc/
424 /usr/sbin/irpd /proc/interrupts
425 /usr/sbin/irpd /proc/meminfo
426 /usr/sbin/irpd /proc/rtc
427 /usr/sbin/irpd /proc/self/status
428 /usr/sbin/irpd /proc/stat
430 /usr/sbin/named /proc/
431 /usr/sbin/named /proc/interrupts
432 /usr/sbin/named /proc/meminfo
433 /usr/sbin/named /proc/rtc
434 /usr/sbin/named /proc/self/status
435 /usr/sbin/named /proc/stat
437 /usr/sbin/named-xfer /proc/
438 /usr/sbin/named-xfer /proc/interrupts
439 /usr/sbin/named-xfer /proc/meminfo
440 /usr/sbin/named-xfer /proc/rtc
441 /usr/sbin/named-xfer /proc/self/status
442 /usr/sbin/named-xfer /proc/stat
444 /usr/sbin/readprofile /proc/profile
446 /usr/sbin/rwhod /proc/loadavg
447 /usr/sbin/rwhod /proc/uptime
449 /usr/sbin/sendmail /proc/loadavg
451 /usr/sbin/setconsole /proc/openprom/options
452 /usr/sbin/setconsole /proc/openprom/options/${console}-mode
453 /usr/sbin/setconsole /proc/openprom/options/input-device
454 /usr/sbin/setconsole /proc/openprom/options/output-device
456 Best wishes from Riley.
458 * Copyright (C) 1999, Memory Alpha Systems.
459 * All rights and wrongs reserved.
461 +----------------------------------------------------------------------+
462 | There is something frustrating about the quality and speed of Linux |
463 | development, ie., the quality is too high and the speed is too high, |
464 | in other words, I can implement this XXXX feature, but I bet someone |
465 | else has already done so and is just about to release their patch. |
466 +----------------------------------------------------------------------+
467 * http://www.memalpha.cx/Linux/Kernel/
471 To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
472 the body of a message to majordomo@vger.rutgers.edu
473 Please read the FAQ at http://www.tux.org/lkml/