Useful tools for the SheevaPlug

At the end of my previous never-seen-by-human-eyes blog post on converting a SheevaPlug to UBIFS, I mentioned that I would follow up with some recommended packages to install on your SheevaPlug.  Here's a brief list:

  • bash-completion
    Install the bash-completion package to get tab completion when connected via ssh or serial console to your SheevaPlug.
  • lsof
    lsof is an invaluable tool to have when debugging server applications.  It saves you the effort of walking through open file descriptors in /proc/*/fd/ by displaying a list of open files and sockets, and what processes are using them.  Especially helpful for finding out where a running program stores its runtime state or configuration files.
  • strace
    With strace you can list every system call made by a program.  This lets you see what files are opened in which order, what data is returned from kernel calls, what messages are displayed to the console, etc.
  • psmisc / killall
    The psmisc Debian package contains the killall program, which is a convenient way to send any signal to all running programs matching a given criteria (name, user, etc.).
  • conspy
    With conspy you can view the system's virtual terminals (i.e. /dev/ttyn).  On the SheevaPlug these aren't mapped to an actual console, so conspy is the only way to use them (starting X is easier from a VT than from a PTY (or pseudoteletype/pseudoterminal, which is what you get when you use ssh)).
  • wget
    You'll want wget to download any files you need on your plug.
  • netcat
    Netcat is a fantastic tool for piping data across a network.  I recommend installing the netcat-openbsd package rather than GNU netcat.
  • kbd / openvt
    The openvt program from the kbd package allows you to start programs on the aforementioned virtual terminals.
  • sudo
    The sudo program gives much finer-grained control than the setuid bit over who can run what programs with superuser privileges.  Use sudo to minimize the amount of time your users and applications spend as the superuser, and limit the scope of their superuser access.
  • ntpdate
    If you don't want a continuously-running NTP daemon, you can drop ntpdate into a cronjob to periodically synchronize your plug's clock with an NTP server.  This won't be as accurate as ntp, but if you're tight on memory, it may be helpful.  It also makes it easy to set the correct date and time when first configuring a plug.

I hope this list has been helpful.  These are a subset of the tools I install on every SheevaPlug I bring up, and they make my use of the plugs a lot easier.  Feel free to suggest any additional must-have tools, favorite tiny web/FTP servers, and so on in the comments.