<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<?xml-stylesheet type="text/css" href="http://nb.inode.co.nz/styles/feed.css"?>
<title type="html">iNode: Nota Bene</title>
<link rel="alternate" type="text/html" href="http://nb.inode.co.nz" />
<link rel="self" type="application/atom+xml" href="http://nb.inode.co.nz/atom.xml" />
<updated>2009-10-30T01:45:20-12:00</updated>
<author>
<name>Jim Cheetham</name>
<uri>http://nb.inode.co.nz</uri>
</author>
<id>http://nb.inode.co.nz/</id>
<generator uri="http://nanoblogger.sourceforge.net" version="3.3">NanoBlogger</generator>
<entry>
<title type="html">Ubuntu 9.10 install</title>
<author>
<name>Jim Cheetham</name>
</author>
<link rel="alternate" type="text/html" href="http://nb.inode.co.nz/archives/2009/10/30/index.html#e2009-10-30T01_45_16.txt" />
<id>http://nb.inode.co.nz/archives/2009/10/30/index.html#e2009-10-30T01_45_16.txt</id>
<published>2009-10-30T01:45:16-12:00</published>
<updated>2009-10-30T01:45:16-12:00</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<![CDATA[
<P>I&#39;ve just installed Ubuntu 9.10 on my desktop machine (laptop). I have /home in a separate
partition, so my usual habit is to destroy the old OS and install afresh. Most applications manage
to do the right thing when they see my $HOME, as long as I keep the same uid.</P>
<P>Of course, before you do this, it&#39;s great to preserve a list of the extras that you had installed
&hellip; dpkg will list them, but it formats the output for a tty even when being piped, so you have to
trick it with the COLUMNS envariable to get full package names &hellip;</P>
<PRE>    $ COLUMNS=200 dpkg -l > ~/9.04.dpkg.list</PRE>
<P>
Anyway, once the new OS is installed &amp; running, grab the equivalent list and compare the two &hellip;
we&#39;re interested in seeing any package that was in the 9.04 list that isn&#39;t in the 9.10 list &hellip;</P>
<PRE>    $ COLUMNS=200 dpkg -l > ~/9.10.dpkg.list
    $ for i in $(tail -n +6 9.04.dpkg.list | awk '{print $2}')
    > do
    > grep " $i " 9.10.dpkg.list >/dev/null || echo $i
    > done > 9.10.notin</PRE>
<P>
That was 1009 packages on my machine, so I has a quick look through by eye and identified the best
ones &hellip; many were libraries, so they could all be ignored. I got it down to 75 entries pretty
quick. I edited 9.10.notin and deleted every line with an un-necessary entry, and then &hellip;</P>
<PRE>    $ sudo aptitude install $(cat 9.10.notin)</PRE>
<P>
This makes sure that I don&#39;t forget about supertuxkart!</P>]]>
</div>
</content>
</entry>
<entry>
<title type="html">Dunedin Skeptics in the Pub</title>
<author>
<name>Jim Cheetham</name>
</author>
<link rel="alternate" type="text/html" href="http://nb.inode.co.nz/archives/2009/10/24/index.html#e2009-10-24T04_22_38.txt" />
<id>http://nb.inode.co.nz/archives/2009/10/24/index.html#e2009-10-24T04_22_38.txt</id>
<published>2009-10-24T04:22:38-12:00</published>
<updated>2009-10-24T04:22:38-12:00</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<![CDATA[
<P>Announcing the first meeting of the Dunedin Skeptics in the Pub!</P>
<P>Come along over to The Duke of Wellington at 7.30pm on Wednesday 28 Oct to meet us all &hellip; <A HREF='http://dunedin.skepticsinthepub.net.nz/calendar/11698693/'>http://dunedin.skepticsinthepub.net.nz/calendar/11698693/</A></P>]]>
</div>
</content>
</entry>
<entry>
<title type="html">RMS on Radio New Zealand again</title>
<author>
<name>Jim Cheetham</name>
</author>
<link rel="alternate" type="text/html" href="http://nb.inode.co.nz/archives/2009/10/23/index.html#e2009-10-23T08_49_25.txt" />
<id>http://nb.inode.co.nz/archives/2009/10/23/index.html#e2009-10-23T08_49_25.txt</id>
<published>2009-10-23T08:49:25-12:00</published>
<updated>2009-10-23T08:49:25-12:00</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<![CDATA[
<P>Richard Stallman has recently conducted another interview with Kim Hill on Radio New Zealand; and
once again I&#39;ve produced a transcript &ndash; see <A HREF='/articles/rmsrnz2/index.html'>/articles/rmsrnz2/index.html</A>.</P>]]>
</div>
</content>
</entry>
<entry>
<title type="html">Regular Expresions ... ISO dates</title>
<author>
<name>Jim Cheetham</name>
</author>
<link rel="alternate" type="text/html" href="http://nb.inode.co.nz/archives/2009/04/28/index.html#e2009-04-28T10_23_05.txt" />
<id>http://nb.inode.co.nz/archives/2009/04/28/index.html#e2009-04-28T10_23_05.txt</id>
<published>2009-04-28T10:23:05-12:00</published>
<updated>2009-04-28T10:23:05-12:00</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<![CDATA[
<P>I&#39;ve been doing some data validation recently, and this afternoon wanted to get a decent date field
set up. I like ISO 8601 dates, they sort well in most default locales, and for the application in
question I&#39;ve gone for YYYY-MM-DD as the template.</P>
<P>This is trivially easy to detect as distinct from plain text, with</P>
<PRE>    \d{4}-\d{2}-\d{2}</PRE>
<P>but of course this does not do any validation of the content  i.e. <EM>9999&minus;99-99</EM> is seen as correct.</P>
<P>It&#39;s easy to improve on this expression to match the range of numbers for months 01 to 12 &rArr;</P>
<PRE>    (0[1-9]|1[012])</PRE>
<P>, but actually making it <STRONG>correct</STRONG> is much harder. We need to know which
months have only 30 days as a maximum, and to be able to detect leap-years that permit February to
get to 29 days.</P>
<P>I had a quick google around &ndash; there are quite a few regexp
<A HREF='http://en.wikipedia.org/wiki/Cargo_cult_programming'>cargo cult code</A> libraries around the place,
many don&#39;t match quite the same date format (yy/dd/mm is <STRONG>horrible</STRONG>), and most of they are simply
not explained.</P>
<P>Then I found a nice article from Michael Ash (<A HREF='http://bit.ly/mashregex'>http://bit.ly/mashregex</A>) that talked about ways to
extend the simple versions, and explained the best bit, leap-year detection! I didn&#39;t need
everything from his examples (I didn&#39;t want to make a leading zero optional, nor allow non-hyphen
separators), and I only needed to validate from year 2000 to 2099, so I ended up with a much less
complex expression.</P>
<P>The leap-year detection was easy enough, Michael had spotted a nice pattern that enumerates all the
possible leap-years in a century (specifically, one where the initial year is also leap, which 2000
was) :-
<TABLE>
<TR><TD>00</TD><TD>04</TD><TD>08</TD><TD>12</TD><TD>16</TD></TR>
<TR><TD>20</TD><TD>24</TD><TD>28</TD><TD>32</TD><TD>36</TD></TR>
<TR><TD>40</TD><TD>44</TD><TD>48</TD><TD>52</TD><TD>56</TD></TR>
<TR><TD>60</TD><TD>64</TD><TD>68</TD><TD>72</TD><TD>76</TD></TR>
<TR><TD>80</TD><TD>84</TD><TD>88</TD><TD>92</TD><TD>96</TD></TR>
</TABLE>
This pattern reduces down to two parts &ndash;</P>
<PRE>    ([02468][048]|[13579][26])</PRE>
<P>
The building blocks look like this :-</P>
<P><UL><LI style='list-style-type: disc;'>Which months have 31 days in them? January, March, May, July, August, October and December</LI>
<UL><LI style='list-style-type: disc;'>So only these months can have &ldquo;day 31&rdquo; in any year</LI>
<UL><LI style='list-style-type: disc;'>&ldquo;all day 31&rdquo;</LI></UL></UL></UL>
</P>
<PRE>    (0[13578]|1[02])-31</PRE>
<P><UL><LI style='list-style-type: disc;'>Which months have <EM>at least</EM> 30 days in them? Everything except February</LI>
<UL><LI style='list-style-type: disc;'>So only 11 months can have &ldquo;day 30&rdquo; or &ldquo;day 29&rdquo; in any year (i.e. whether the year is leap or not)</LI>
<UL><LI style='list-style-type: disc;'>&ldquo;all days 29 or 30&rdquo;</LI></UL></UL></UL>
</P>
<PRE>    (0[1,3-9]|1[012])-(30|29)</PRE>
<P><UL><LI style='list-style-type: disc;'>All months can have days 01 through to 28, in any year</LI>
<UL><LI style='list-style-type: disc;'>&ldquo;all days &le; 28&rdquo;</LI></UL></UL>
</P>
<PRE>    (0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-8])</PRE>
<P><UL><LI style='list-style-type: disc;'>February can have &ldquo;day 29&rdquo; if we are in a leap year</LI>
<UL><LI style='list-style-type: disc;'>&ldquo;all Feb 29s&rdquo;</LI></UL></UL>
</P>
<PRE>    ([02468][048]|[13579][26])-02-29</PRE>
<P>
Three of these four building blocks are valid for any year, and can therefore be grouped together.
The pseudo-code looks like :-</P>
<P><UL><LI style='list-style-type: disc;'>starts with &ldquo;20&rdquo;</LI>
<UL><LI style='list-style-type: disc;'>followed by leap-years, and is &ldquo;Feb 29&rdquo;</LI>
<LI style='list-style-type: disc;'>OR</LI>
<LI style='list-style-type: disc;'>followed by any two numbers (doesn&#39;t need to exclude leap-years)</LI>
<UL><LI style='list-style-type: disc;'>is any day &le; 28</LI>
<LI style='list-style-type: disc;'>OR</LI>
<LI style='list-style-type: disc;'>is any valid day 29 or 30</LI>
<LI style='list-style-type: disc;'>OR</LI>
<LI style='list-style-type: disc;'>is any valid day 31</LI></UL></UL></UL>
</P>
<P>And the final expression (tested with <A HREF='http://laurent.riesterer.free.fr/regexp/'>Visual REGEXP</A>,
which is already packaged for Ubuntu as <KBD>visual-regexp</KBD>) ..</P>
<PRE>20(([02468][048]|[13579][26])-02-29|\d\d-((0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-8])|(0[1,3-9]|1[012])-(30|29)|(0[13579]|1[02])-31))</PRE>
<P>Formatted for readability:</P>
<PRE>20
(
    ([02468][048]|[13579][26])-02-29
    |
    \d\d-
    (
        (0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-8])
        |
        (0[1,3-9]|1[012])-(30|29)
        |
        (0[13579]|1[02])-31
    )
)</PRE>]]>
</div>
</content>
</entry>
<entry>
<title type="html">/etc in Mercurial ...</title>
<author>
<name>Jim Cheetham</name>
</author>
<link rel="alternate" type="text/html" href="http://nb.inode.co.nz/archives/2009/02/10/index.html#e2009-02-10T22_42_56.txt" />
<id>http://nb.inode.co.nz/archives/2009/02/10/index.html#e2009-02-10T22_42_56.txt</id>
<published>2009-02-10T22:42:56-12:00</published>
<updated>2009-02-10T22:42:56-12:00</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<![CDATA[
<P>I&#39;ve long had <KBD>/etc</KBD> checked in to version control on my machines, especially where there are
multiple administrators &ndash; it makes life easier, having visibility of configuration changes!</P>
<P>I&#39;ve just set up a new server, and this time I&#39;m trying Mercurial as the versioning system, for the
simple reason that it keeps the repository data in a single directory (unlike subversion).</P>
<P>Starting with instructions at <A HREF='http://tinyurl.com/mikas-hg'>http://tinyurl.com/mikas-hg</A>, I came up with this :-</P>
<P><UL><LI style='list-style-type: disc;'>Install the base OS</LI>
<LI style='list-style-type: disc;'>Do any update / upgrade to get yourself current</LI>
<LI style='list-style-type: disc;'>Install Mercurial</LI>
<LI style='list-style-type: disc;'>Decide on the list of files in /etc that should not be versioned</LI>
<UL><LI style='list-style-type: disc;'>I tend to exclude things like SSL and SSH keys, as I often publish the repository later</LI></UL>
<LI style='list-style-type: disc;'>Add and check in!</LI></UL>
</P>
<PRE>root@box:~# aptitude install mercurial
...
The following NEW packages will be installed:
  mercurial mercurial-common{a} python-beaker{a} python-sqlalchemy{a} rcs{a}
...

root@box:~# cd /etc
root@box:/etc# hg init
root@box:/etc# chmod 700 .hg

root@box:/etc# cat > .hgignore
(^)*.dpkg-new
(^)*.dpkg-old
(^)blkid.tab(|.old)
(^)mtab
(^)adjtime
(^)ssl/private/*
(^)ssh/ssh*key
(^)ld.so.cache
(^)passwd-
(^)group-
(^)shadow-
(^)gshadow-

root@box:/etc# hg add
adding .hgignore
adding ...

root@box:/etc# hg ci -m "Initial post-install checkin"
No username found, using 'root@box' instead</PRE>
<P>
My next step is generally to install Trac (with the mercurial plugin), and then I have a great platform for multiple administrators to co-operate, track changes, keep notes and raise tickets on each other!</P>]]>
</div>
</content>
</entry>
<entry>
<title type="html">Nobuntu today ...</title>
<author>
<name>Jim Cheetham</name>
</author>
<link rel="alternate" type="text/html" href="http://nb.inode.co.nz/archives/2009/02/10/index.html#e2009-02-10T21_19_47.txt" />
<id>http://nb.inode.co.nz/archives/2009/02/10/index.html#e2009-02-10T21_19_47.txt</id>
<published>2009-02-10T21:19:47-12:00</published>
<updated>2009-02-10T21:19:47-12:00</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<![CDATA[
<P>I&#39;m not especially happy with Ubuntu today.</P>
<P>It&#39;s probably nothing serious, and I&#39;m sure I could work around it if I needed to, but &hellip;</P>
<P>The Ubuntu 8.10 Server installer won&#39;t run from a USB disk, despite the best efforts of Unetbootin
and other more manual hackery. So I have to burn a CD &hellip;</P>
<P>The installer won&#39;t recognise my atl1e NIC, although the base OS does. So I have to do all the
network config afterwards by hand :-)</P>
<P>And worse than that, Xen dom0 support has been removed. So if I want Xen I&#39;ll have to step outside
the repository support and do it myself &hellip;</P>
<P>I did briefly try Debian Lenny, but couldn&#39;t get the Xen kernel to load with GRUB &ndash; my kernel seems
to be &ldquo;too big&rdquo; and the bootloader won&#39;t install without a &ldquo;BIOS Boot Partition&rdquo; &hellip; and I can&#39;t
find any way of creating one of those! That seems to be one of the punishments for using LVM on top
of RAID in my boot partition :-)</P>]]>
</div>
</content>
</entry>
<entry>
<title type="html">VMWare ESXi ... almost</title>
<author>
<name>Jim Cheetham</name>
</author>
<link rel="alternate" type="text/html" href="http://nb.inode.co.nz/archives/2009/02/07/index.html#e2009-02-07T09_46_05.txt" />
<id>http://nb.inode.co.nz/archives/2009/02/07/index.html#e2009-02-07T09_46_05.txt</id>
<published>2009-02-07T09:46:05-12:00</published>
<updated>2009-02-07T09:46:05-12:00</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<![CDATA[
<P>I have a new lump of hardware on my desk, intended to be a household server. It&#39;s basically an Asus
P5Q Pro motherboard, with a couple of SATA disks. With a few gig of RAM and a dual-core processor,
it is intended to be a virtual machine server, running a firewall, MythTV/media archive, and some
public sites.</P>
<P>VMWare ESXi was going to be the base OS; it&#39;s &ldquo;free as in beer&rdquo;, it&#39;s going to be used on some of
the company systems I&#39;m installing this year, it provides a nice and secure base OS and virtual
networking that would make separation of different guests easy.</P>
<P>However, I didn&#39;t check the hardware compatability of ESXi before getting all enthuiastic. VMWare do
use Linux under the hood, but I guess in the interests of reducing support issues, have only kept
drivers for the most enterprise-class devices that they expect to see in the datacentre.</P>
<P>This means that although the P5Q has a supportable SATA device, by default ESXi doesn&#39;t recognise
it. You have to hack both the ESXi installer, and the installed image to get it to work.</P>
<P>Also, ESXi does not recognise the onboard Atheros network interface, which means that it cannot be
available for any of the guest machines. I would have to buy a supported NIC for my machine; that&#39;s
basically an Intel one. It would have to be PCI-Express, as those are the only ports free. That puts
the price up to around 40% of the entire of the rest of the server.</P>
<P>Sorry, ESXi 3.5. If you get wider hardware support, I may install you. Otherwise, it&#39;s off to Ubuntu
and KVM &hellip;</P>]]>
</div>
</content>
</entry>
<entry>
<title type="html">A defence for S92 accusations/disconnections</title>
<author>
<name>Jim Cheetham</name>
</author>
<link rel="alternate" type="text/html" href="http://nb.inode.co.nz/archives/2009/01/28/index.html#e2009-01-28T22_51_31.txt" />
<id>http://nb.inode.co.nz/archives/2009/01/28/index.html#e2009-01-28T22_51_31.txt</id>
<published>2009-01-28T22:51:31-12:00</published>
<updated>2009-01-28T22:51:31-12:00</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<![CDATA[
<P>Under NZ law (specifically, Section 92 of the Copyright Amendment Act), if your ISP receives
multiple <STRONG>accusations</STRONG> that you have infringed copyright online, they will have to terminate your
internet connection.</P>
<P>Or will they?</P>
<P>Now, this law (not all portions of which are actually in force today, but they will be soon barring
a sudden change of heart by the Government) is widely regarded by the Internet industry as complete
rubbish &ndash; technically unenforceable, morally wrong and even violation of human rights. Start
reading at <A HREF='http://creativefreedom.org.nz/'>Creative Freedom NZ</A>. But that doesn&#39;t stop it from being
a law, does it?</P>
<P>Read the new juicy bits of law at
<A HREF='http://www.legislation.govt.nz/act/public/2008&frasl;0027/latest/DLM1122643.html'>http://www.legislation.govt.nz/act/public/2008&frasl;0027/latest/DLM1122643.html</A></P>
<P><BLOCKQUOTE>An Internet service provider must adopt and reasonably implement a policy that provides for termination, in appropriate circumstances, of the account with that Internet service provider of a repeat infringer. </BLOCKQUOTE></P>
<P>But what is an Internet service provider defined as?</P>
<P><A HREF='http://www.legislation.govt.nz/act/public/1994&frasl;0143/latest/DLM345639.html#DLM1703710'>http://www.legislation.govt.nz/act/public/1994&frasl;0143/latest/DLM345639.html#DLM1703710</A>
    <BLOCKQUOTE>Internet service provider means a person who does either or both of the following things: (a) offers the transmission, routing, or providing of connections for digital online communications, between or among points specified by a user, of material of the user&#39;s choosing: (b) hosts material on websites or other electronic retrieval systems that can be accessed by a user</BLOCKQUOTE></P>
<P>Now here&#39;s the crux of my argument &hellip;</P>
<P>The person who is responsible for the account with &ldquo;an ISP&rdquo; (e.g. the person who pays the bill to
connect their household computer to Xtra) <STRONG>is, under this Act, an ISP themself</STRONG>.</P>
<P>This is because it is now normal for Internet access to be available for every member of a
household; therefore the person who &ldquo;pays the bill&rdquo; is <EM>providing connections</EM> to a user.</P>
<P>Seen the recent TV adverts for ADSL routers with wifi access? The adverts <STRONG>explicitly</STRONG> say that this
machine should be used to enable multiple people in the house to access the Internet simultaneously.
This is not some unusual tech-geek activity, it is shown to be normal practice for the sort of
person who buys products advertised on prime-time TV &ndash; in other words, &ldquo;everyone&rdquo;.</P>
<P>So, if an ISP like Xtra terminate &ldquo;an account&rdquo; under the auspices of this law, I would argue that
they have acted incorrectly; they have terminated access for an entire ISP and not for &ldquo;a user&rdquo;.</P>
<P>Just because &ldquo;I as an ISP&rdquo; have my network behind NAT, and only one IP address is visible to the
outside world, is no reason to claim that I am not an ISP. If an ISP claims that their Terms and
Conditions state that the connection should be used by only one person, I would argue that is an
invalid restriction, and that their own industry advertises to encourage people to share
connections.</P>
<P><STRONG>I am an ISP</STRONG>. If a copyright holder wishes to complain about an action taken my a user of my
network, they have to talk to me, not to my upstream ISP.</P>
<P>With apologies to Jonathan Swift :-</P>
<PRE>    Great ISPs have little ISPs downstream from them to bite 'em,
    and little ISPs have lesser ISPs, and so _ad infinitum_</PRE>]]>
</div>
</content>
</entry>
<entry>
<title type="html">Unix time ... before 1970</title>
<author>
<name>Jim Cheetham</name>
</author>
<link rel="alternate" type="text/html" href="http://nb.inode.co.nz/archives/2008/12/25/index.html#e2008-12-25T09_27_51.txt" />
<id>http://nb.inode.co.nz/archives/2008/12/25/index.html#e2008-12-25T09_27_51.txt</id>
<published>2008-12-25T09:27:51-12:00</published>
<updated>2008-12-25T09:27:51-12:00</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<![CDATA[
<P>I set up a new Unix box the other day &ndash; Tomato OS on a Linksys WRT54G. I was surprised to see that
the time was set <STRONG>before</STRONG> 1970! But Unix time <STRONG>starts</STRONG> in 1 Jan 1970, doesn&#39;t it?</P>
<PRE># date
Wed Dec 31 16:08:50 PST 1969</PRE>
<P>
Mmm &hellip; it took a moment or two to sink in (actually, the evidence is that it took 31 seconds &hellip;)</P>
<PRE># TZ=UTC date
Thu Jan  1 00:09:21 UTC 1970</PRE>
<P>
Yep, Unix time starts on 1 Jan 1970 all right &hellip; in the <STRONG>UTC</STRONG> timezone. This machine had defaulted
to PST, which is 8 hours west of the prime meridian &hellip;</P>
<P>Time Lords may relax; heavy transuranic elements will not be required.</P>]]>
</div>
</content>
</entry>
<entry>
<title type="html">Installing Tomato over OpenWRT for Linksys WRT54G ...</title>
<author>
<name>Jim Cheetham</name>
</author>
<link rel="alternate" type="text/html" href="http://nb.inode.co.nz/archives/2008/12/24/index.html#e2008-12-24T07_57_02.txt" />
<id>http://nb.inode.co.nz/archives/2008/12/24/index.html#e2008-12-24T07_57_02.txt</id>
<published>2008-12-24T07:57:02-12:00</published>
<updated>2008-12-24T07:57:02-12:00</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<![CDATA[
<P>I&#39;ve had <A HREF='http://openwrt.org'>OpenWRT</A> on my Linksys WRT54Gs for a year or so now, but although it
works fine as an AP, I&#39;ve not had much luck with WDS (Wireless Distribution System).</P>
<P>People have been recommending the <A HREF='http://www.polarcloud.com/tomato'>Tomato firmware</A> as an
alternative for a while now, so I decided to give it a go. Mmm, a problem &hellip;</P>
<PRE>root@gl:~# mtd -r write WRT54G_WRT54GL.bin linux
Bad trx header
This is not the correct file format; refusing to flash.
Please specify the correct file or use -f to force.
Image check failed.</PRE>
<P>
Unfortunately, the Tomato firmware is distributed as &lsquo;.bin' files, not &rsquo;.trx', and according to
comments on the <A HREF='x-wrt.org'>x-wrt</A> website (<A HREF='http://forum.x-wrt.org/index.php?topic=429.0;wap2'>http://forum.x-wrt.org/index.php?topic=429.0;wap2</A>) the OpenWRT flash
updater <KBD>mtd</KBD> no longer supports these for installation, so you can&#39;t get there from here &hellip;</P>
<P>The <A HREF='http://www.freewrt.org'>FreeWRT</A> mailing list
(<A HREF='http://osdir.com/ml/embedded.freewrt.general/2007&minus;01/msg00007.html'>http://osdir.com/ml/embedded.freewrt.general/2007&minus;01/msg00007.html</A>) claims that their <KBD>mtd</KBD> binary
can be used for the install, so I tried that &hellip;</P>
<PRE>root@gl:~# ./mtd-static -r write WRT54G_WRT54GL.bin linux
Unlocking linux ...
Writing from WRT54G_WRT54GL.bin to linux ...  [w]

Rebooting ...</PRE>
<P>
Unfortunately, the machine ended up bricked. Actually, both a WRT54GL and a WRT54Gv2 were bricked
by this. Luckily, it was only a bad boot loader, and the <A HREF='http://dd-wrt.org'>dd-wrt</A> wiki has a great
page for diagnosis and recovery actions &ndash; <A HREF='http://dd-wrt.com/wiki/index.php/Recover_from_a_Bad_Flash'>http://dd-wrt.com/wiki/index.php/Recover_from_a_Bad_Flash</A></P>
<P>So in the end, I just used the firmware&#39;s default TFTP-on-boot facility to put the Tomato OS onto
the devices, which worked just fine. And without getting involved in huge configuration, WDS is now
operating between the ISP-connected unit, and the one with all the wired devices connected; and they
both work as Access Points too.</P>]]>
</div>
</content>
</entry>
</feed>
