
Earlier this year I got a SheevaPlug,
a little box with some Flash memory and an ARM processor running Linux.
It’s so friggin’ awesome! (Technical term.) My main motivation for
getting it, aside from a cool toy, was its much
lower power consumption compared to the Mac Mini.
For a few years now our Mini had been doing most of the maintenance
efforts for our home network, including: DHCP; DNS; running the No-IP
client so I can SSH in via our dynamic DSL connection with its random
addresses; acting as a printer server; and work as a local NTP server (still
to do). (My email folders were also on the Mini thru an IMAP
server, but I’ve moved that onto my desktop for the moment.)
The SheevaPlug is now doing all of it. In particular, I’m finding
name lookups for Web browsing is vastly faster than when the Mini was
doing the effort.
This list offers the details of what I’ve done to use the
SheevaPlug. I’ll add to it (to mirror my local ChangeLog) as we make
any other tweaks or fixes. It’s not a lot of effort and the end result
is great.
(Note: I still need to finish fixing the formatting of this
for readability.)
Accessing the box
After initial power-on, logged in as root with the
default password nosoup4u. Then I changed the root
password to something I’m used to typing.
General Usability
- As noted on “SheevaPlug”,
edit
/etc/dhcp3/dhclient.conf and comment out the the line
#OFF#supersede domain-name-servers 127.0.0.1;
- Ran
dhclient eth0
- Make sure APT will work by doing:
mkdir -p
/var/cache/apt/archives/partial
- Install ntpdate with
apt-get install ntpdate.
- Edit
/etc/rc.local and comment out the line
#date 012618002009
and add
ntpdate ntp.maths.tcd.ie
- Edit
/etc/hostname and change the name from ‘debian‘
to ‘inara‘.
- I should note the boot sequence for the SheevaPlug still
specifies a different subnet:
Nov 14 13:52:19 inara kernel: Kernel command line:
console=ttyS0,115200
mtdparts=nand_mtd:0×400...@0×100000(uImage),0×1fb00...@0×500000(rootfs)
rw root=/dev/mtdblock1 rw
ip=10.4.50.4:10.4.50.5:10.4.50.5:255.255.255.0:DB88FXX81:eth0:none
- * /etc/rc.local: Comment out
#OFF#insmod /boot/fat.ko
#OFF#insmod /boot/vfat.ko
and add
chmod 1777 /tmp /var/tmp
- Edit /etc/fstab and add the lines
tmpfs /var/log tmpfs defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
to make the most frequent activity not actually write anything
out
to the flash memory. Too many writes to flash can accelerate its
demise.
- Also change the root partition in /etc/fstab to specify noatime
to also reduce unnecessary “disk” writes:
rootfs / rootfs rw,noatime 0 0
- Install wget (to download stuff), sysstat (to see how things
are
running), and rsync (to download/upload stuff) with : sudo apt-get
install wget sysstat rsync
Network Time Support
- Update the list of packages, then install NTP: sudo apt-get
update && sudo apt-get install ntp
- Edit /etc/ntp.conf and change the server line to be the Trinity
College server: server ntp.maths.tcd.ie
- As suggested on “New
Plugger How To”, ran dpkg-reconfigure tzdata
and selected Europe -> Dublin.
Logging in over the USB serial port
- Follow the instructions at “Setting
Up Serial Console Under Linux”
- On my desktop (running Ubuntu 9.04), ran
* On homer:
sudo /sbin/modprobe -q ftdi-sio product=0×9e8f vendor=0×9e88
sudo apt-get install cu
sudo chown uucp /dev/ttyUSB1
so I can then log into the SheevaPlug over a serial line with
* sudo cu -s 115200 -l /dev/ttyUSB1
This is really helpful when you make a typo and the box is no longer
getting on your network properly!
Network Connection
- Edited /etc/network/interfaces and changed it from doing DHCP
to a static address:
auto eth0
#iface eth0 inet dhcp
# /usr/share/doc/ifupdown/examples for more information.
iface eth0 inet static
address 192.168.20.8
network 192.168.20.0
netmask 255.255.255.0
broadcast 192.168.20.255
gateway 192.168.20.1
DHCP Server
- Installed the DHCP server with: apt-get install dhcp3-server
- Copied the /etc/dhcpd.conf file over from the Mini.
DNS Server
- Install BIND with: apt-get install bind9
- Edit /etc/bind/named.conf.local and add
options {
// use this to get faster lookups that we cache:
forward first;
forwarders {
// Eircom:
// BACKUP plan when DoS attacks hit eircom (2009-09-02)
159.134.237.6;
159.134.248.17;
// as per http://broadbandsupport.eircom.net/ under Broadband Settings:
// 213.94.190.194;
// 213.94.190.236;
// Try going straight to the Netopia box
// 192.168.20.1;
};
allow-query { localhost; 192.168.20.0/24; };
allow-transfer { localhost; };
};
zone “20.168.192.in-addr.arpa” IN {
type master;
file “192.168.20″;
};
zone “network.home” IN {
type master;
notify no;
file “network.home”;
};
- Add files /etc/bind/192.168.20 and /etc/bind/network.home from
the Mini.
No-IP Client
- Get GCC off the CD that comes with the SheevaPlug box in
SheevaPlug_Host_SWsupportPackageLinuxHost.zip.
- Extract gcc.tar.bz2 from it, then extract files from that.
- Download
No-IP.
- Extract the noip sources; may be in a directory noip-2.1.9-1.
- Expecting ‘gcc’ and ‘noip-2.1.9-1′ are in the same directory,
edit the makefile to have
CC=../gcc/bin/arm-none-linux-gnueabi-gcc -O3
- Do ‘cd noip-2.1.9-1′ and ‘make’, then copy the binary to
/usr/local/bin/noip2.
- Run “/usr/local/bin/noip2 -C” and answer its questions; you’ll
need
to have registered on no-ip.com to have a username and password to use
with this free client.
- Create the file /etc/init.d/noip2 using the example at http://www.togaware.com/linux/survivor/No_IP.html.
- Do “chmod 755 /etc/init.d/noip2″ and then “update-rc.d noip2
defaults” so it’ll run when you boot.